Can be used to set up and then play a game of bingo (R.W. Payne).

### Options

`PRINT` = string tokens |
What to print (`cards` , `mycard` , `scores` , `status` ); default `*` i.e. nothing |

`PLOT` = string tokens |
What to plot (`cards` , `mycard` ); default `*` i.e. nothing |

`METHOD` = string token |
Whether to form cards and/or play (`cards` , `game` , `automaticgame` ); default `game` |

`NBALLS` = scalar |
Number of balls, 40, 80 or 90; default 90 |

`NCARDS` = scalar |
Number of cards to form; default `5` |

`SEED` = scalar |
Seed for random numbers; default `*` |

`CARDS` = pointer |
Saves or supplies the cards |

`MYCARD` = scalar |
Number of the card to view during the game |

`SPREADSHEET` = string token |
What to put the cards into a spreadsheet (`cards` ); default `*` |

`OUTFILENAME` = text |
Name of Genstat workbook file (.gwb) or Excel (.xls or .xlsx) file to create to contain the cards |

### No parameters

### Description

Bingo is a game of chance where a caller selects numbered balls at random. The players have cards with a random selection of numbers, which they cross off when each one is called. The `BINGO`

procedure caters for games with either 40, 80 or 90 balls.

The 40-ball game is most suitable for younger players. The cards have 9 numbers in a 3×3 grid, and the winner is the player whose card is completed first.

In the 80-ball game, the cards have 16 numbers in a 4×4 grid. The four columns contain random selections of numbers from 1-20, 21-40, 41-60 and 61-80, coloured red, yellow, blue and white, respectively. The winner is again the player whose card is completed first

The cards in the 90 ball game contain six sub-cards with 27 spaces in a 3×9 grid. The columns contain random selections of numbers from 1-10, 11-20, 21-30, 31-40, 41-50, 51-60, 61-70, 71-80 and 81-90, respectively. Each sub-card contains 15 numbers, and the randomization is organised so that every number occurs once within the full card. Within each sub-card, the numbers are arranged so that every row contains five numbers (and 4 blanks), and every column contains 10 numbers (and 8 blanks). Players will usually take a full card, as each number that is called will then need to be crossed off somewhere on the card (thereby retaining the player’s concentration!) `BINGO`

includes the following winning combinations:

**line** – all the numbers on a horizontal line;

**two lines** – two complete lines;

**full house** – all the numbers on a sub-card.

There is a minor prize for the first player to complete a line, then another minor prize for the first player with two complete lines, and finally the top prize for the first player with a full house.

The `METHOD`

option specifies whether you want to form cards or play the game. If it is set to `cards`

, then `NCARDS`

are formed for a game with `NBALLS`

balls. The default is to form 5 cards with 90 balls. The cards can be saved, in a pointer, using the `CARDS`

option. You can save the cards to an external file, by setting the `OUTFILENAME`

option to a text containing the filename. This should have the suffix `.gwb`

for a Genstat work file, or`.xlsx`

for an Excel file. You can also plot the cards by setting the `PLOT`

option to `cards`

. (You could then export the plotted cards to a PDF file.)

If the setting for the `METHOD`

option includes `game`

as well as cards, `BINGO`

continues to play a game with those cards. The `MYCARD`

option specifies the number of the card that you want to have yourself during a game (default 1). `BINGO`

pops up a dialog with numbers drawn, in turn, at random. You can respond either by selecting to `Continue`

or by selecting `House!`

to claim that one of the cards is full. (`BINGO`

will then check whether this is true.) Alternatively, if you set just `METHOD=game`

, `BINGO`

will play a game using cards supplied by the `CARDS`

option. (The `NCARDS`

and `NBALLS`

options are then ignored.) The `automaticgame`

setting is similar to `game`

, except that `BINGO`

checks for winners automatically. (This is the setting that must be used in batch runs of Genstat.) If there are several candidates, winner is chosen from these at random.

The `PRINT`

option specifies what output is required, with settings:

`cards`

to print the cards;

`mycard`

to print the current contents of my card during the game;

`scores`

to print how many numbers remain on each card during the game; and

`status`

to print the numbers remaining on the cards during the game.

The `PLOT`

option specifies what is to be plotted, with settings:

`cards`

to plot the cards;

`mycard`

to plot the current contents of my card during the game.

The `SEED`

option provides the seed for ths numbers used to form the cards and select the numbers during the game. The default of zero continues any existing sequence or, if no random numbers have been used in this run, it obtains a random seed using the system clock.

Options: `PRINT`

, `PLOT`

, `METHOD`

, `NBALLS`

, `NCARDS`

, `SEED`

, `CARDS`

, `MYCARD`

, `SPREADSHEET`

`OUTFILENAME`

.

Parameters: none.

### Method

The dialogs are produced by the `QDIALOG`

directive.

### See also

Procedures: `FRUITMACHINE`

, `LIFE`

, `NOUGHTSANDCROSSES`

.

### Example

CAPTION 'BINGO example','1) Form cards.'; STYLE=meta,plain " Number of cards: modify if you want more than 5." SCALAR ncards; VALUE=5 " Number of balls: must be 40, 80 or 90." SCALAR nballs; VALUE=40 " Seed for randomization: set here in order to get reproducible results for checking; change to zero for an unpredictable set of cards." SCALAR seed; VALUE=34512 BINGO [PRINT=cards; METHOD=cards; NBALLS=nballs; NCARDS=ncards;\ CARDS=cards; SPREADSHEET=cards; NBALLS=40; SEED=seed] " Run commands up to here ^ to form a Genstat workbook with the cards that you can save as an Excel file. Alternatively, print the output, cut up and distribute the cards to the individual players." "2) Play bingo, using the cards formed in (1). (Your card is number 1.)" BINGO [PRINT=mycard,scores,status; METHOD=game; CARDS=cards; MYCARD=1]