Open In App

Create Bingo Game Using C

Last Updated : 24 Oct, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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:

  1. Development Environment: Should have an installed IDE like Eclipse, VsCode, etc.
  2. C Compiler: GCC for Linux or MinGW for Windows
  3. 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:

  1. 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 5×5 grid. These numbers will range from 1 to 25 and each column on the card will correspond to a letter in the word “BINGO.”
  2. 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!


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads