Open In App

Create Bingo Game Using Java

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

Bingo, a game of enduring appeal characterized by chance and anticipation, has consistently captivated players across generations. With its uncomplicated rules and element of unexpected delight, Bingo emerges as an ideal selection for diverse occasions. If your curiosity leads you into the realm of game development, embarking on the creation of a Bingo game using Java stands as a superb introductory step. Within this comprehensive guide, we shall navigate you through the journey, encompassing comprehension of game mechanics and culminating in the realization of a fully functional Bingo game.

Understanding the Bingo Game

Prior to diving into coding, it’s beneficial to gain a swift overview of the Bingo game’s mechanics. The game unfolds on a 5×5 grid, where each column symbolizes a distinct numerical range. Participants are equipped with Bingo cards, housing a varied collection of numbers drawn from these ranges. A designated caller randomly announces numbers, prompting players to cross off matching numbers on their cards. The ultimate aim is to achieve specific arrangements, such as lines, diagonals, or a full card, before others accomplish the same feat.

Project Initialization

Before embarking on the creation of your Java-based Bingo game, it’s crucial to establish your project environment. A development platform such as Eclipse or IntelliJ IDEA is essential for this endeavor. Here’s a step-by-step guide to configuring your project:

Initiate a Fresh Java Project: Launch your chosen Integrated Development Environment (IDE) and initiate a new Java project. Opt for a suitable name for your project, such as BingoGame.

Craft a Main Class: Within your project structure, generate a new Java class that will function as the game’s starting point. Consider naming this class BingoMain or GFG to reflect its role effectively.

Implementing Bingo’s Operational Logic

With a solid foundation in place, it’s time to bring the Bingo game’s core functionalities to life by translating the provided C++ code into Java. The Java version presented below encompasses crucial actions like number drawing, card marking, and the detection of winning patterns.

Java




import java.util.*;
  
// Nikunj Sonigara
class BingoCard {
    // List to store the Bingo card numbers
    List<Integer> numbers = new ArrayList<>();
}
  
public class GFG {
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Welcome to Bingo!");
  
        // Random number generator
        Random random = new Random();
  
        // Create Bingo cards for both players
        BingoCard player1Card = createBingoCard(random);
        BingoCard player2Card = createBingoCard(random);
  
        // Tracks the current player
        int currentPlayer = 1;
  
        // Main game loop
        while (true) {
            // Get the current
            // player's card
            BingoCard currentCard = (currentPlayer == 1)
                                        ? player1Card
                                        : player2Card;
  
            // Generate a random number between 0 and 25
            int drawnNumber
                = generateRandomNumber(random, 0, 25);
            // Mark the drawn number on both player's cards
            drawNumberAndMark(player1Card, player2Card,
                              drawnNumber);
  
            System.out.println("\nPlayer " + currentPlayer
                               + " - Drawn Number: "
                               + drawnNumber);
  
            // Display both player's cards
            System.out.println("Player 1's Card:");
            displayCard(player1Card);
            System.out.println(
                "--------------------------");
            System.out.println("Player 2's Card:");
            displayCard(player2Card);
            System.out.println(
                "--------------------------");
  
            // Check if the current player has achieved
            // Bingo
            if (hasBingo(currentCard)) {
                // Exit the game loop
                System.out.println(
                    "\nPlayer " + currentPlayer
                    + " has achieved Bingo! Congratulations!");
                break;
            }
  
            // Switch to the other player for the next round
            currentPlayer = (currentPlayer == 1) ? 2 : 1;
        }
        // Close the scanner
        scanner.close();
    }
  
    // Generates a random number between min and max
    // (inclusive)
    private static int
    generateRandomNumber(Random random, int min, int max)
    {
        return min + random.nextInt(max - min + 1);
    }
  
    // Creates a new Bingo card and shuffles the numbers
    private static BingoCard createBingoCard(Random random)
    {
        BingoCard card = new BingoCard();
        List<Integer> possibleNumbers = new ArrayList<>();
        for (int i = 1; i <= 25; ++i) {
            possibleNumbers.add(i);
        }
        Collections.shuffle(possibleNumbers, random);
        // Add shuffled numbers to the
        // card
        card.numbers.addAll(possibleNumbers);
        return card;
    }
  
    // Marks the drawn number on both player's cards
    private static void
    drawNumberAndMark(BingoCard player1Card,
                      BingoCard player2Card, int number)
    {
        for (int i = 0; i < player1Card.numbers.size();
             ++i) {
            // Mark the number as drawn on
            // player 1's card
            if (player1Card.numbers.get(i) == number) {
                player1Card.numbers.set(i, 0);
            }
  
            // Mark the number as drawn on
            // player 2's card
            if (player2Card.numbers.get(i) == number) {
                player2Card.numbers.set(i, 0);
            }
        }
    }
  
    // Checks if the Bingo card has achieved a Bingo pattern
    private static boolean hasBingo(BingoCard card)
    {
        for (int i = 0; i < 5; ++i) {
            // Check rows for Bingo
            if (card.numbers.get(i * 5) == 0
                && card.numbers.get(i * 5 + 1) == 0
                && card.numbers.get(i * 5 + 2) == 0
                && card.numbers.get(i * 5 + 3) == 0
                && card.numbers.get(i * 5 + 4) == 0) {
                return true;
            }
  
            // Check columns for Bingo
            if (card.numbers.get(i) == 0
                && card.numbers.get(i + 5) == 0
                && card.numbers.get(i + 10) == 0
                && card.numbers.get(i + 15) == 0
                && card.numbers.get(i + 20) == 0) {
                return true;
            }
        }
  
        // Check diagonals for Bingo
        if ((card.numbers.get(0) == 0
             && card.numbers.get(6) == 0
             && card.numbers.get(12) == 0
             && card.numbers.get(18) == 0
             && card.numbers.get(24) == 0)
            || (card.numbers.get(4) == 0
                && card.numbers.get(8) == 0
                && card.numbers.get(12) == 0
                && card.numbers.get(16) == 0
                && card.numbers.get(20) == 0)) {
            return true;
        }
  
        // No Bingo pattern found
        return false;
    }
  
    // Displays the Bingo card
    private static void displayCard(BingoCard card)
    {
        for (int i = 0; i < card.numbers.size(); ++i) {
            // Display numbers or 'X' for
            // drawn numbers
            System.out.print((card.numbers.get(i) != 0)
                                 ? card.numbers.get(i)
                                 : "X");
            System.out.print("\t");
  
            // Move to the next line
            // after every 5 numbers
            if ((i + 1) % 5 == 0) {
                System.out.println();
            }
        }
    }
}


Output:

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



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads