# IntList Lottery example

### by Daniel Shiffman

This example demonstrates an IntList can be used to store a list of numbers. While an array of integers serves a similar purpose it is of fixed size. The An IntList can easily have values added or deleted and it can also be shuffled and sorted. For lists of floats or Strings, you can use FloatList and StringList. For lists of objects, use ArrayList. In this example, three lists of integers are created. One is a pool of numbers that is shuffled and picked randomly from. One is the list of "picked" numbers. And one is a lottery "ticket" which includes 5 numbers that are trying to be matched.

### Highlighted Features

```
/**
* IntList Lottery example
* by Daniel Shiffman.
*
* This example demonstrates an IntList can be used to store a list of numbers.
* While an array of integers serves a similar purpose it is of fixed size. The
* An IntList can easily have values added or deleted and it can also be
* shuffled and sorted. For lists of floats or Strings, you can use FloatList
* and StringList. For lists of objects, use ArrayList.
*
* In this example, three lists of integers are created. One is a pool of numbers
* that is shuffled and picked randomly from. One is the list of "picked" numbers.
* And one is a lottery "ticket" which includes 5 numbers that are trying to be matched.
*/
// Three lists of integers
IntList lottery;
IntList results;
IntList ticket;
void setup() {
size(640, 360);
frameRate(30);
// Create empy lists
lottery = new IntList();
results = new IntList();
ticket = new IntList();
// Add 20 integers in order to the lottery list
for (int i = 0; i < 20; i++) {
lottery.append(i);
}
// Pick five numbers from the lottery list to go into the Ticket list
for (int i = 0; i < 5; i++) {
int index = int(random(lottery.size()));
ticket.append(lottery.get(index));
}
}
void draw() {
background(51);
// The shuffle() method randomly shuffles the order of the values in the list
lottery.shuffle();
// Call a method that will display the integers in the list at an x,y location
showList(lottery, 16, 48);
showList(results, 16, 100);
showList(ticket, 16, 140);
// This loop checks if the picked numbers (results)
// match the ticket numbers
for (int i = 0; i < results.size(); i++) {
// Are the integers equal?
if (results.get(i) == ticket.get(i)) {
fill(0, 255, 0, 100); // if so green
} else {
fill(255, 0, 0, 100); // if not red
}
ellipse(16+i*32, 140, 24, 24);
}
// One every 30 frames we pick a new lottery number to go in results
if (frameCount % 30 == 0) {
if (results.size() < 5) {
// Get the first value in the lottery list and remove it
int val = lottery.remove(0);
// Put it in the results
results.append(val);
} else {
// Ok we picked five numbers, let's reset
for (int i = 0; i < results.size(); i++) {
// Put the picked results back into the lottery
lottery.append(results.get(i));
}
// Clear the results and start over
results.clear();
}
}
}
// Draw a list of numbers starting at an x,y location
void showList(IntList list, float x, float y) {
for (int i = 0; i < list.size(); i++) {
// Use get() to pull a value from the list at the specified index
int val = list.get(i);
stroke(255);
noFill();
ellipse(x+i*32, y, 24, 24);
textAlign(CENTER);
fill(255);
text(val, x+i*32, y+6);
}
}
```

### Related Examples

This example is for Processing 4+. If you have a previous version, use the examples included with your software. If you see any errors or have suggestions, please let us know.