Open In App

Create Bingo Game Using C++

Last Updated : 22 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Bingo, a timeless game of chance and anticipation, has been captivating players for generations. The thrill of marking numbers off your card and the excitement of shouting “Bingo!” are experiences that transcend time. In this article, we will guide you through the process of creating your very own Bingo game using the versatile and powerful C++ programming language.

Setting Up Development Environment

Before we dive into creating our Bingo game, make sure you have a functional C++ development environment in place. Popular choices include compilers like GCC (GNU Compiler Collection) or Visual C++. These tools will help you compile and execute your code seamlessly. With your environment ready, let’s embark on the journey of building the Bingo game!

Designing the Bingo Game

Developing a Bingo game in C++ involves breaking down the implementation into several crucial components:

Bingo Card: We’ll start by defining a structure that represents a Bingo card. This structure will hold the numbers that players aim to mark off.

Number Drawing: Next, we’ll create a mechanism to draw random numbers and ensure that both players update their cards accordingly.

Game Logic: The game should run within a loop until a player achieves Bingo or a predefined condition is met.

Implementing the Bingo Game

C++




// C++ Program to implement
// Bingo Game
#include <bits/stdc++.h>
using namespace std;
  
// Represents a Bingo card
struct BingoCard {
    vector<int> numbers;
};
  
// Function to generate a random number
int generateRandomNumber(int min, int max)
{
    return min + (rand() % (max - min + 1));// Mark the number as drawn for Player
                     // 1
}
  
// Function to create a Bingo card
BingoCard createBingoCard()
{
    BingoCard card;
    vector<int> possibleNumbers;
    for (int i = 1; i <= 25; ++i) {
        possibleNumbers.push_back(i);
    }
    random_shuffle(possibleNumbers.begin(),
                   possibleNumbers.end());
  
    for (int i = 0; i < 25; ++i) {
        card.numbers.push_back(possibleNumbers[i]);
    }
    return card;
}
  
// Function to draw a number and mark it on the cards
void drawNumberAndMark(BingoCard& player1Card,
                       BingoCard& player2Card, int number)
{
    for (int i = 0; i < player1Card.numbers.size(); ++i) {
        // Mark the number as drawn for Player
        // 1
        if (player1Card.numbers[i] == number) {
            player1Card.numbers[i] = 0;
        }
        // Mark the number as drawn for Player
        // 2
        if (player2Card.numbers[i] == number) {
            player2Card.numbers[i] = 0;
        }
    }
}
  
// Function to check if a player has achieved Bingo
bool hasBingo(const BingoCard& card)
{
    // Check rows, columns, and diagonals for a Bingo
    // pattern Implement your logic here
    for (int i = 0; i < 5; ++i) {
        // Check rows
        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 true;
        }
        // Check columns
        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 true;
        }
    }
    // Check diagonals
    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 true;
    }
    return false;
}
  
// Function to display the Bingo card
void displayCard(const BingoCard& card)
{
    for (int i = 0; i < card.numbers.size(); ++i) {
        cout << (card.numbers[i]
                     ? std::to_string(card.numbers[i])
                     : "X")
             << "\t";
        if ((i + 1) % 5 == 0) {
            std::cout << std::endl;
        }
    }
}
  
int main()
{
    // Seed the random number generator with
    // current time
    srand(time(0));
  
    BingoCard player1Card = createBingoCard();
    BingoCard player2Card = createBingoCard();
  
    // Player 1 starts
    int currentPlayer = 1;
  
    while (true) {
        BingoCard& currentCard = (currentPlayer == 1)
                                     ? player1Card
                                     : player2Card;
  
        // Numbers between 0 and 26
        int drawnNumber = generateRandomNumber(0, 26);
        drawNumberAndMark(player1Card, player2Card,
                          drawnNumber);
  
        cout << "Player " << currentPlayer
             << " - Drawn Number: " << drawnNumber << endl;
  
        // Display both players' updated Bingo cards
        cout << "Player 1's Card:\n";
        displayCard(player1Card);
        cout << "--------------------------" << endl;
        cout << "Player 2's Card:\n";
        displayCard(player2Card);
        cout << "--------------------------" << endl;
  
        if (hasBingo(currentCard)) {
            cout << "Player " << currentPlayer
                 << " has achieved Bingo! Congratulations!"
                 << endl;
            break;
        }
  
        // Switch players
        currentPlayer = (currentPlayer == 1) ? 2 : 1;
    }
  
    return 0;
}


Output:

Player 1 - Drawn Number: 14
Player 1's Card:
25 15 22 12 10
24 23 5 16 20
21 7 11 6 3
1 4 13 17 18
19 X 8 9 2
--------------------------
Player 2's Card:
22 10 16 24 8
1 13 15 20 12
5 X 25 4 19
17 9 18 7 23
11 21 3 6 2
--------------------------
Player 2 - Drawn Number: 11
Player 1's Card:
25 15 22 12 10
24 23 5 16 20
21 7 X 6 3
1 4 13 17 18
19 X 8 9 2
--------------------------
Player 2's Card:
22 10 16 24 8
1 13 15 20 12
5 X 25 4 19
17 9 18 7 23
X 21 3 6 2
--------------------------
Player 1 - Drawn Number: 15
Player 1's Card:
25 X 22 12 10
24 23 5 16 20
21 7 X 6 3
1 4 13 17 18
19 X 8 9 2
--------------------------
Player 2's Card:
22 10 16 24 8
1 13 X 20 12
5 X 25 4 19
17 9 18 7 23
X 21 3 6 2
--------------------------
Player 2 - Drawn Number: 21
Player 1's Card:
25 X 22 12 10
24 23 5 16 20
X 7 X 6 3
1 4 13 17 18
19 X 8 9 2
--------------------------
Player 2's Card:
22 10 16 24 8
1 13 X 20 12
5 X 25 4 19
17 9 18 7 23
X X 3 6 2
--------------------------
Player 1 - Drawn Number: 6
Player 1's Card:
25 X 22 12 10
24 23 5 16 20
X 7 X X 3
1 4 13 17 18
19 X 8 9 2
--------------------------
Player 2's Card:
22 10 16 24 8
1 13 X 20 12
5 X 25 4 19
17 9 18 7 23
X X 3 X 2
--------------------------
Player 2 - Drawn Number: 2
Player 1's Card:
25 X 22 12 10
24 23 5 16 20
X 7 X X 3
1 4 13 17 18
19 X 8 9 X
--------------------------
Player 2's Card:
22 10 16 24 8
1 13 X 20 12
5 X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 1 - Drawn Number: 5
Player 1's Card:
25 X 22 12 10
24 23 X 16 20
X 7 X X 3
1 4 13 17 18
19 X 8 9 X
--------------------------
Player 2's Card:
22 10 16 24 8
1 13 X 20 12
X X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 2 - Drawn Number: 21
Player 1's Card:
25 X 22 12 10
24 23 X 16 20
X 7 X X 3
1 4 13 17 18
19 X 8 9 X
--------------------------
Player 2's Card:
22 10 16 24 8
1 13 X 20 12
X X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 1 - Drawn Number: 6
Player 1's Card:
25 X 22 12 10
24 23 X 16 20
X 7 X X 3
1 4 13 17 18
19 X 8 9 X
--------------------------
Player 2's Card:
22 10 16 24 8
1 13 X 20 12
X X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 2 - Drawn Number: 22
Player 1's Card:
25 X X 12 10
24 23 X 16 20
X 7 X X 3
1 4 13 17 18
19 X 8 9 X
--------------------------
Player 2's Card:
X 10 16 24 8
1 13 X 20 12
X X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 1 - Drawn Number: 13
Player 1's Card:
25 X X 12 10
24 23 X 16 20
X 7 X X 3
1 4 X 17 18
19 X 8 9 X
--------------------------
Player 2's Card:
X 10 16 24 8
1 X X 20 12
X X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 2 - Drawn Number: 6
Player 1's Card:
25 X X 12 10
24 23 X 16 20
X 7 X X 3
1 4 X 17 18
19 X 8 9 X
--------------------------
Player 2's Card:
X 10 16 24 8
1 X X 20 12
X X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 1 - Drawn Number: 21
Player 1's Card:
25 X X 12 10
24 23 X 16 20
X 7 X X 3
1 4 X 17 18
19 X 8 9 X
--------------------------
Player 2's Card:
X 10 16 24 8
1 X X 20 12
X X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 2 - Drawn Number: 22
Player 1's Card:
25 X X 12 10
24 23 X 16 20
X 7 X X 3
1 4 X 17 18
19 X 8 9 X
--------------------------
Player 2's Card:
X 10 16 24 8
1 X X 20 12
X X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 1 - Drawn Number: 8
Player 1's Card:
25 X X 12 10
24 23 X 16 20
X 7 X X 3
1 4 X 17 18
19 X X 9 X
--------------------------
Player 2's Card:
X 10 16 24 X
1 X X 20 12
X X 25 4 19
17 9 18 7 23
X X 3 X X
--------------------------
Player 1 has achieved Bingo! Congratulations!

Playing the Bingo Game

Initiating the Game: Begin by compiling and executing the C++ program to initiate gameplay. The console will showcase the game’s progression and updates as they unfold.

Unfolding Gameplay: As the game proceeds, participants will alternately draw numbers and adjust their individual Bingo cards accordingly.

Achieving Bingo: The game endures until a player successfully forms a Bingo pattern on their card. At this juncture, the program will announce the victor and bring the game to a close.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads