Create Bingo Game Using C
Last Updated :
28 Apr, 2025
In this article, we will learn the process of creating a Bingo Game using the C programming language.
What is a Bingo Game?
Bingo is a social game where players are given cards with grids of numbers. The goal is to mark off a specific pattern of numbers on the card, usually five in a row, column, or diagonal before your opponents do. The player who completes the pattern and shouts "Bingo!" is declared the winner.
Prerequisites for Game
Before we begin, one should have knowledge of a few tools and topics mentioned below:
- Development Environment: Should have an installed IDE like Eclipse, VsCode, etc.
- C Compiler: GCC for Linux or MinGW for Windows
- Basic C Knowledge: Some topics which are used in the game are mentioned below:
Components of Bingo Game
Now, let's outline the key components of our Bingo game mentioned below:
- Bingo Card: The heart of our Bingo game will be the Bingo card. In C, we'll represent it with a structure that stores an array of 25 numbers arranged in a 5x5 grid. These numbers will range from 1 to 25 and each column on the card will correspond to a letter in the word "BINGO."
- Number Drawing: We'll create a function to generate random numbers between 1 and 25. This function will not only display the drawn number but also display the corresponding letter (B, I, N, G, O). It will also check if the number is present on any player's card and mark it as crossed out if so.
Rules of Bingo Game
The game logic will revolve around a loop that keeps drawing numbers until one of the players achieves Bingo. To win, a player must have five crossed-out numbers in a row, column, or diagonal. Additionally, we will keep track of the current player and switch between them after each turn.
Implementing the Bingo Game in C
With our game design in place, let's start writing the C code to create our Bingo game.
Below is the implementation of the Bingo Game:
C
// C Program for implementation of
// Bingo Game
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// BingoCard structure to store
// the Bingo card numbers
struct BingoCard {
int numbers[25];
};
// Function to generate a random number
// between min and max (inclusive)
int generateRandomNumber(int min, int max)
{
return min + rand() % (max - min + 1);
}
// Function to create a new Bingo
// card and shuffle the numbers
struct BingoCard createBingoCard()
{
struct BingoCard card;
int possibleNumbers[25];
for (int i = 0; i < 25; ++i) {
possibleNumbers[i] = i + 1;
}
for (int i = 0; i < 25; ++i) {
int j = generateRandomNumber(i, 24);
int temp = possibleNumbers[i];
possibleNumbers[i] = possibleNumbers[j];
possibleNumbers[j] = temp;
}
for (int i = 0; i < 25; ++i) {
card.numbers[i] = possibleNumbers[i];
}
return card;
}
// Function to mark the drawn number on a Bingo card
void drawNumberAndMark(struct BingoCard* card, int number)
{
for (int i = 0; i < 25; ++i) {
if (card->numbers[i] == number) {
card->numbers[i] = 0;
}
}
}
// Function to check if a Bingo
// card has achieved a Bingo pattern
int hasBingo(struct BingoCard card)
{
for (int i = 0; i < 5; ++i) {
// Check rows for Bingo
if (card.numbers[i * 5] == 0
&& card.numbers[i * 5 + 1] == 0
&& card.numbers[i * 5 + 2] == 0
&& card.numbers[i * 5 + 3] == 0
&& card.numbers[i * 5 + 4] == 0) {
return 1;
}
// Check columns for Bingo
if (card.numbers[i] == 0 && card.numbers[i + 5] == 0
&& card.numbers[i + 10] == 0
&& card.numbers[i + 15] == 0
&& card.numbers[i + 20] == 0) {
return 1;
}
}
// Check diagonals for Bingo
if ((card.numbers[0] == 0 && card.numbers[6] == 0
&& card.numbers[12] == 0 && card.numbers[18] == 0
&& card.numbers[24] == 0)
|| (card.numbers[4] == 0 && card.numbers[8] == 0
&& card.numbers[12] == 0
&& card.numbers[16] == 0
&& card.numbers[20] == 0)) {
return 1;
}
// No Bingo pattern found
return 0;
}
// Function to display the Bingo card
void displayCard(struct BingoCard card)
{
for (int i = 0; i < 25; ++i) {
// Display numbers or 'X' for drawn numbers
if (card.numbers[i] != 0) {
printf("%d\t", card.numbers[i]);
}
else {
printf("X\t");
}
// Move to the next line after every 5 numbers
if ((i + 1) % 5 == 0) {
printf("\n");
}
}
printf("\n");
}
int main()
{
srand(time(NULL)); // Seed the random number generator
printf("Welcome to Bingo!\n");
// Create Bingo cards for both players
struct BingoCard player1Card = createBingoCard();
struct BingoCard player2Card = createBingoCard();
// Tracks the current player
int currentPlayer = 1;
// Main game loop
while (1) {
// Get the current player's card
struct BingoCard currentCard = (currentPlayer == 1)
? player1Card
: player2Card;
// Generate a random number between 1 and 25
int drawnNumber = generateRandomNumber(1, 25);
// Mark the drawn number on both player's cards
drawNumberAndMark(&player1Card, drawnNumber);
drawNumberAndMark(&player2Card, drawnNumber);
printf("\nPlayer %d - Drawn Number: %d\n",
currentPlayer, drawnNumber);
// Display both player's cards
printf("Player 1's Card:\n");
displayCard(player1Card);
printf("--------------------------\n");
printf("Player 2's Card:\n");
displayCard(player2Card);
printf("--------------------------\n");
// Check if the current player has achieved Bingo
if (hasBingo(currentCard)) {
// Exit the game loop
printf("\nPlayer %d has achieved Bingo! "
"Congratulations!\n",
currentPlayer);
break;
}
// Switch to the other player for the next round
currentPlayer = (currentPlayer == 1) ? 2 : 1;
}
return 0;
}
Output:
Welcome to Bingo!
Player 1 - Drawn Number: 8
Player 1's Card:
22 18 23 11 4
16 15 3 12 10
24 13 14 2 1
7 21 19 9 6
20 5 X 17 25
--------------------------
Player 2's Card:
14 11 5 3 20
23 21 12 18 2
25 1 16 7 10
4 19 13 17 22
9 X 6 15 24
--------------------------
Player 2 - Drawn Number: 10
Player 1's Card:
22 18 23 11 4
16 15 3 12 X
24 13 14 2 1
7 21 19 9 6
20 5 X 17 25
--------------------------
Player 2's Card:
14 11 5 3 20
23 21 12 18 2
25 1 16 7 X
4 19 13 17 22
9 X 6 15 24
--------------------------
Player 1 - Drawn Number: 10
Player 1's Card:
22 18 23 11 4
16 15 3 12 X
24 13 14 2 1
7 21 19 9 6
20 5 X 17 25
--------------------------
Player 2's Card:
14 11 5 3 20
23 21 12 18 2
25 1 16 7 X
4 19 13 17 22
9 X 6 15 24
--------------------------
Player 2 - Drawn Number: 22
Player 1's Card:
X 18 23 11 4
16 15 3 12 X
24 13 14 2 1
7 21 19 9 6
20 5 X 17 25
--------------------------
Player 2's Card:
14 11 5 3 20
23 21 12 18 2
25 1 16 7 X
4 19 13 17 X
9 X 6 15 24
--------------------------
Player 1 - Drawn Number: 10
Player 1's Card:
X 18 23 11 4
16 15 3 12 X
24 13 14 2 1
7 21 19 9 6
20 5 X 17 25
--------------------------
Player 2's Card:
14 11 5 3 20
23 21 12 18 2
25 1 16 7 X
4 19 13 17 X
9 X 6 15 24
--------------------------
Player 2 - Drawn Number: 5
Player 1's Card:
X 18 23 11 4
16 15 3 12 X
24 13 14 2 1
7 21 19 9 6
20 X X 17 25
--------------------------
Player 2's Card:
14 11 X 3 20
23 21 12 18 2
25 1 16 7 X
4 19 13 17 X
9 X 6 15 24
--------------------------
Player 1 - Drawn Number: 11
Player 1's Card:
X 18 23 X 4
16 15 3 12 X
24 13 14 2 1
7 21 19 9 6
20 X X 17 25
--------------------------
Player 2's Card:
14 X X 3 20
23 21 12 18 2
25 1 16 7 X
4 19 13 17 X
9 X 6 15 24
--------------------------
Player 2 - Drawn Number: 9
Player 1's Card:
X 18 23 X 4
16 15 3 12 X
24 13 14 2 1
7 21 19 X 6
20 X X 17 25
--------------------------
Player 2's Card:
14 X X 3 20
23 21 12 18 2
25 1 16 7 X
4 19 13 17 X
X X 6 15 24
--------------------------
Player 1 - Drawn Number: 16
Player 1's Card:
X 18 23 X 4
X 15 3 12 X
24 13 14 2 1
7 21 19 X 6
20 X X 17 25
--------------------------
Player 2's Card:
14 X X 3 20
23 21 12 18 2
25 1 X 7 X
4 19 13 17 X
X X 6 15 24
--------------------------
Player 2 - Drawn Number: 7
Player 1's Card:
X 18 23 X 4
X 15 3 12 X
24 13 14 2 1
X 21 19 X 6
20 X X 17 25
--------------------------
Player 2's Card:
14 X X 3 20
23 21 12 18 2
25 1 X X X
4 19 13 17 X
X X 6 15 24
--------------------------
Player 1 - Drawn Number: 2
Player 1's Card:
X 18 23 X 4
X 15 3 12 X
24 13 14 X 1
X 21 19 X 6
20 X X 17 25
--------------------------
Player 2's Card:
14 X X 3 20
23 21 12 18 X
25 1 X X X
4 19 13 17 X
X X 6 15 24
--------------------------
Player 2 - Drawn Number: 18
Player 1's Card:
X X 23 X 4
X 15 3 12 X
24 13 14 X 1
X 21 19 X 6
20 X X 17 25
--------------------------
Player 2's Card:
14 X X 3 20
23 21 12 X X
25 1 X X X
4 19 13 17 X
X X 6 15 24
--------------------------
Player 1 - Drawn Number: 22
Player 1's Card:
X X 23 X 4
X 15 3 12 X
24 13 14 X 1
X 21 19 X 6
20 X X 17 25
--------------------------
Player 2's Card:
14 X X 3 20
23 21 12 X X
25 1 X X X
4 19 13 17 X
X X 6 15 24
--------------------------
Player 2 - Drawn Number: 17
Player 1's Card:
X X 23 X 4
X 15 3 12 X
24 13 14 X 1
X 21 19 X 6
20 X X X 25
--------------------------
Player 2's Card:
14 X X 3 20
23 21 12 X X
25 1 X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 1 - Drawn Number: 3
Player 1's Card:
X X 23 X 4
X 15 X 12 X
24 13 14 X 1
X 21 19 X 6
20 X X X 25
--------------------------
Player 2's Card:
14 X X X 20
23 21 12 X X
25 1 X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 2 - Drawn Number: 9
Player 1's Card:
X X 23 X 4
X 15 X 12 X
24 13 14 X 1
X 21 19 X 6
20 X X X 25
--------------------------
Player 2's Card:
14 X X X 20
23 21 12 X X
25 1 X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 1 - Drawn Number: 23
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X 1
X 21 19 X 6
20 X X X 25
--------------------------
Player 2's Card:
14 X X X 20
X 21 12 X X
25 1 X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 2 - Drawn Number: 17
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X 1
X 21 19 X 6
20 X X X 25
--------------------------
Player 2's Card:
14 X X X 20
X 21 12 X X
25 1 X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 1 - Drawn Number: 23
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X 1
X 21 19 X 6
20 X X X 25
--------------------------
Player 2's Card:
14 X X X 20
X 21 12 X X
25 1 X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 2 - Drawn Number: 20
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X 1
X 21 19 X 6
X X X X 25
--------------------------
Player 2's Card:
14 X X X X
X 21 12 X X
25 1 X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 1 - Drawn Number: 10
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X 1
X 21 19 X 6
X X X X 25
--------------------------
Player 2's Card:
14 X X X X
X 21 12 X X
25 1 X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 2 - Drawn Number: 2
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X 1
X 21 19 X 6
X X X X 25
--------------------------
Player 2's Card:
14 X X X X
X 21 12 X X
25 1 X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 1 - Drawn Number: 1
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X X
X 21 19 X 6
X X X X 25
--------------------------
Player 2's Card:
14 X X X X
X 21 12 X X
25 X X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 2 - Drawn Number: 20
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X X
X 21 19 X 6
X X X X 25
--------------------------
Player 2's Card:
14 X X X X
X 21 12 X X
25 X X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 1 - Drawn Number: 25
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X X
X 21 19 X 6
X X X X X
--------------------------
Player 2's Card:
14 X X X X
X 21 12 X X
X X X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 2 - Drawn Number: 25
Player 1's Card:
X X X X 4
X 15 X 12 X
24 13 14 X X
X 21 19 X 6
X X X X X
--------------------------
Player 2's Card:
14 X X X X
X 21 12 X X
X X X X X
4 19 13 X X
X X 6 15 24
--------------------------
Player 2 has achieved Bingo! Congratulations!
Similar Reads
Dino Game in C The Dino game is a simple hurdle-based game. In this game a dinosaur has to jump hurdles, if the dinosaur successfully jumps a hurdle, the score point is incremented by one. And if the dinosaur hits the hurdle then the Game is Over. Approach for GameThe dinosaur is represented by ASCII art and moves
4 min read
2048 Game in C 2048 is a popular single-player puzzle game that gained widespread popularity after its release in 2014. It was created by the Italian developer Gabriele Cirulli. The game's objective is to slide numbered tiles on a grid to combine them, with the ultimate goal of creating a tile with the number 2048
10 min read
Draw a Chess Board using Graphics Programming in C Prerequisite: graphics.h, How to include graphics.h in CodeBlocks? In Computer Graphics, we use graphics.h which provide direct functions to draw different coordinate shapes(like circle, rectangle etc). By using these functions we can draw different objects like car, hut, trees etc. In this program,
4 min read
Hangman Game in C Hangman game is a popular and simple game in which the player has to guess the word based on the given hint. In this article, we will write a program for the hangman game using C programming language. What is the Hangman Game? Hangman is a word puzzle game that involves: A secret word: A word is sel
6 min read
Creating a Rainbow using Graphics Programming in C In Turbo C graphics we use graphics.h functions to draw different shapes(like circle, rectangle etc), display text(any message) in different format(different fonts and colors). By using graphics.h we can make programs, animations and also games. These can be useful for beginners. Functions Used : de
2 min read
Shopping Cart Project Using C Language Online Shopping applications are one of the favorite applications out of all online applications. It is a very much used application in everyone's life. So, Let's try to create a Shopping cart using C language which can perform basic tasks for us. The functionality of the Shopping Cart Although onli
11 min read