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!

Create Bingo Game Using C++

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.

Similar Reads

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:...

Implementing the Bingo Game

C++ // C++ Program to implement // Bingo Game #include using namespace std;    // Represents a Bingo card struct BingoCard {     vector 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 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; }...

Playing the Bingo Game

...