Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

///lots of comments import java.util.*; import java.awt.*; import javax.swing.*;

ID: 3583075 • Letter: #

Question

///lots of comments
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.HashMap;
import java.util.Random;


public class BingoGame extends JFrame
{
//some panels
   JPanel CardPanel;
   // create 5 BCells
   JLabel BCell1;
     
   // create 5 ICells
   JLabel ICell1;
     
   ///do the rest
     
   public BingoGame()
   {
   buildBingoCardPanel();
       //buildButtonPanel();
add(CardPanel);
       setSize(500,500);
       setVisible(true);
   }
     
   public void buildBingoCardPanel()
   {
   CardPanel = new JPanel();
       BCell1 = new JLabel("");
ICell1 = new JLabel("");
       fillCells();
       CardPanel.add(BCell1);
       CardPanel.add(ICell1);
  
   }
     
   public void fillCells()
   {
   //WITH FIRST TWO METHODS, NEED TO MAKE SURE YOU
   //DON'T HAVE DUPLICATES
     
   //randomize some numbers to fill Bingo Board
   //1st way -- use Math.random()
   //rand num between 1-15
   int randNum = (int)(Math.random()*15) + 1;
   //add +15 for Is, add +30 for Ns, add +45 for Gs, add +60 for Os  
   BCell1.setText(String.valueOf(randNum));
  
   //2nd way -- use Random class
   //give it the upper bounds of range of random nums
Random myRandom = new Random(15);
   randNum = myRandom.nextInt();
   BCell1.setText(String.valueOf(randNum));
  
   //3rd way -- use the ArrayList & the Collections class
   //put 15 numbers into array & then shuffle them
   //put this UP TOP!!
   ArrayList<Integer> Bnumbers = new ArrayList<Integer>();
for (int i=1; i<=15; i++)
   {
   Bnumbers.add(i);
       //Inumbers.add(i+15);
       //Nnumbers.add(i+30);
       //Gnumbers.add(i+45);
       //Onumbers.add(i+60);
   }
   Collections.shuffle(Bnumbers);  
   System.out.println(Bnumbers);
   //Collections.shuffle(Inumbers);
   //etc...
  
  
   BCell1.setText((Bnumbers.get(0)).toString());
   //BCell2.setText((Bnumbers.get(1).toString());
   //BCell3.setText((Bnumbers.get(2).toString());
   //BCell4.setText((Bnumbers.get(3).toString());
   //BCell5.setText((Bnumbers.get(4).toString());
  
  
   }

public static void main(String[] args)
{
BingoGame myGame = new BingoGame();
}
}

// Import the jars required.


class BingoBoard
{
private String board[][];
private final int BOARD_DIM = 5;
private final int MAX_SIZE = BOARD_DIM * BOARD_DIM;
private HashMap<String,Boolean> eventCalledMap;
private ArrayList<String> events;
private ArrayList<String> selectedEvents;
private final String FREE = "FREE SPACE";
private final int player;
private boolean win;

BingoBoard()
{
board = new String[BOARD_DIM][BOARD_DIM];
selectedEvents = new ArrayList<>();
events = new ArrayList<>();
eventCalledMap = new HashMap<>();
eventCalledMap.put(FREE, true);
player = -1;
win = false;
}//end BingoBoard

BingoBoard(ArrayList<String> eventList)
{
board = new String[BOARD_DIM][BOARD_DIM];
selectedEvents = new ArrayList<>();
events = eventList;
eventCalledMap = new HashMap<>();
eventCalledMap.put(FREE, true);
player = -1;
win = false;
}//end BingoBoard

BingoBoard(ArrayList<String> eventList, int numb)
{
board = new String[BOARD_DIM][BOARD_DIM];
selectedEvents = new ArrayList<>();
events = eventList;
eventCalledMap = new HashMap<>();
eventCalledMap.put(FREE, true);
player = numb;
win = false;
}//end BingoBoard

//updates the event list.
public void updateEvents(ArrayList<String> eventList)
{
events.addAll(eventList);
}//end updateEvents

//Chooses events and adds them to the board.
public boolean randomizeEvents()
{
if(this.events.size() < MAX_SIZE - 1)
return false;
while(selectedEvents.size() < MAX_SIZE - 1)
{
Random rand = new Random();
int index = rand.nextInt(this.events.size());
String str = events.get(index);
selectedEvents.add(str);
events.remove(str);
}//end while
int count = 0;
for(String str:selectedEvents)
{
eventCalledMap.put(str,false);
if(count == MAX_SIZE/2)
{
board[count/BOARD_DIM][count%BOARD_DIM] = FREE;
count++;
}//end if
board[count/BOARD_DIM][count%BOARD_DIM] = str;
count++;
}//end for
return true;
}//end randomizeEvents

public void printBoard()
{
System.out.printf("Player %d ",this.player);
System.out.println("_____________________");
for(int i = 0; i < BOARD_DIM; i++)
{

System.out.println("|---|---|---|---|---|");
for(int j = 0; j < BOARD_DIM; j++)
if(eventCalledMap.get(board[i][j]) == true)
System.out.printf("|%3s", "X");
else
System.out.printf("|%3s",board[i][j]);
System.out.println("|");
}//end for
System.out.println("|---|---|---|---|---|");
System.out.println("_____________________ ");
}//end printBoard

//Puts maker on given value if it
public void putMarker(String value)
{
if(eventCalledMap.containsKey(value))
eventCalledMap.put(value, Boolean.TRUE);
}//end method putMarker

/*Checks board for a win and returns true if board won and false
otherwise. */
public boolean checkWin()
{
this.win = evalBoard();
return this.win;
}//end method putMarker

//Returns true if
public boolean won()
{
return this.win;
}//end method won

//returns player number
public int getPlayer()
{
return player;
}//end getPlayer

//Checks the board for win. Returns true if a win is found.
private boolean evalBoard()
{
int i, j, count;

for(i = 0; i < BOARD_DIM; i++)
{
j = 0;
count = 0;
//Checks horizontally for a win.
while(eventCalledMap.get(board[i][j]) != false)
{
count++;
j++;
if(count == BOARD_DIM)
return true;
}//end while

j = 0;
count = 0;
//Checks verically for a win.
while(eventCalledMap.get(board[j][i]) != false)
{
count++;
j++;
if(count == BOARD_DIM)
return true;
}//end while
}//end for

i = 0;
count = 0;
//Checks the top left to bottom right diagnal for a win.
while(eventCalledMap.get(board[i][i]) != false)
{
count++;
i++;
if(count == BOARD_DIM)
return true;
}//end while

i = BOARD_DIM -1;
j = 0;
count = 0;
//Checks the top left to bottom right diagnal for a win.
while(eventCalledMap.get(board[i][j]) != false)
{
count++;
i--;
j++;
if(count == BOARD_DIM)
return true;
}//end while

return false;
}//end evalBoard
}//end class

public class BingoGame
{

private ArrayList<String> eventList;
private final int DEFAULT_PLAYER_COUNT = 2;
private int playerCount;
private boolean winnerDetermined;
private ArrayList<BingoBoard> boardList;

BingoGame()
{
this.eventList = new ArrayList<>();
this.playerCount = DEFAULT_PLAYER_COUNT;
this.winnerDetermined = false;
this.boardList = new ArrayList<>();
}//end default constructor

BingoGame(int players)
{
this.eventList = new ArrayList<>();
this.playerCount = players;
this.winnerDetermined = false;
boardList = new ArrayList<>();
}//end constructor

//adds events for game.
public void addEvent(String event)
{
this.eventList.add(event);
}//end method addEvent

//Main driver for the game.
public void startGame()
{
this.winnerDetermined = false;
for(int i = 1; i <= this.playerCount;i++)
{
ArrayList<String> events = (ArrayList<String>) eventList.clone();
BingoBoard board = new BingoBoard(events,i);
board.randomizeEvents();
this.boardList.add(board);
board.printBoard();
}//end for
Scanner in = new Scanner(System.in);
while(this.winnerDetermined == false)
{
System.out.println("Enter Event:");
String check = in.next();
for(BingoBoard boards:boardList)
{
boards.putMarker(check);
boards.printBoard();
if(winnerDetermined == false)
winnerDetermined = boards.checkWin();
else
boards.checkWin();
}//end for
}//end while

this.printWinner();

}//end startGame


//Prints out winning boards. More than one player may win.
private void printWinner()
{
//Prints out winning boards. More than one player may win.
for(BingoBoard boards:boardList)
{
if(boards.won())
System.out.printf("Player %d wins! ",boards.getPlayer());
}//end for
}//end printWinner
  
public static void main(String[] args)
{
BingoGame game = new BingoGame(4);

for(int i=1; i<=25; i++)
game.addEvent(Integer.toString(i));
game.startGame();

}//end main

}//end class

on this code I got some problem

BingoGame.java:281: error: duplicate class: BingoGame
public class BingoGame

^

Explanation / Answer

import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.HashMap;
import java.util.Random;


public class BingoGame extends JFrame
{
  
     JPanel CardPanel;
   
     JLabel BCell1;
   
   
     JLabel ICell1;
   
   
   
     public BingoGame()
     {
       buildBingoCardPanel();
      
      add(CardPanel);
        setSize(500,500);
        setVisible(true);
     }
   
     public void buildBingoCardPanel()
     {
       CardPanel = new JPanel();
        BCell1 = new JLabel("");
      ICell1 = new JLabel("");  
        fillCells();
        CardPanel.add(BCell1);
        CardPanel.add(ICell1);
    
     }
   
     public void fillCells()
     {

      int randNum = (int)(Math.random()*15) + 1;
         
      BCell1.setText(String.valueOf(randNum));
    
   
     Random myRandom = new Random(15);
      randNum = myRandom.nextInt();
      BCell1.setText(String.valueOf(randNum));
  
    
      ArrayList<Integer> Bnumbers = new ArrayList<Integer>();
     for (int i=1; i<=15; i++)
      {
         Bnumbers.add(i);
        
      }
      Collections.shuffle(Bnumbers);  
      System.out.println(Bnumbers);
    
    
    
      BCell1.setText((Bnumbers.get(0)).toString());
   
    
     }

public static void main(String[] args)
{
    BingoGame myGame = new BingoGame();
}
}

class BingoBoard
{
   private String board[][];
   private final int BOARD_DIM = 5;
   private final int MAX_SIZE = BOARD_DIM * BOARD_DIM;
   private HashMap<String,Boolean> eventCalledMap;
   private ArrayList<String> events;
   private ArrayList<String> selectedEvents;
   private final String FREE = "FREE SPACE";
   private final int player;
   private boolean win;

   BingoBoard()
   {
      board = new String[BOARD_DIM][BOARD_DIM];
      selectedEvents = new ArrayList<>();
      events = new ArrayList<>();
      eventCalledMap = new HashMap<>();
      eventCalledMap.put(FREE, true);
      player = -1;
      win = false;
   }//end BingoBoard

BingoBoard(ArrayList<String> eventList)
{
   board = new String[BOARD_DIM][BOARD_DIM];
   selectedEvents = new ArrayList<>();
   events = eventList;
   eventCalledMap = new HashMap<>();
   eventCalledMap.put(FREE, true);
   player = -1;
   win = false;
}//end BingoBoard

BingoBoard(ArrayList<String> eventList, int numb)
{
   board = new String[BOARD_DIM][BOARD_DIM];
   selectedEvents = new ArrayList<>();
   events = eventList;
   eventCalledMap = new HashMap<>();
   eventCalledMap.put(FREE, true);
   player = numb;
   win = false;
}


public void updateEvents(ArrayList<String> eventList)
{
   events.addAll(eventList);
}


public boolean randomizeEvents()
{
   if(this.events.size() < MAX_SIZE - 1)
   return false;
   while(selectedEvents.size() < MAX_SIZE - 1)
   {
      Random rand = new Random();
      int index = rand.nextInt(this.events.size());
      String str = events.get(index);
      selectedEvents.add(str);
      events.remove(str);
   }
   int count = 0;
   for(String str:selectedEvents)
   {
      eventCalledMap.put(str,false);
      if(count == MAX_SIZE/2)
      {
         board[count/BOARD_DIM][count%BOARD_DIM] = FREE;
         count++;
      }
      board[count/BOARD_DIM][count%BOARD_DIM] = str;
      count++;
   }
   return true;
}

public void printBoard()
{
   System.out.printf("Player %d ",this.player);
   System.out.println("_____________________");
   for(int i = 0; i < BOARD_DIM; i++)
   {

      System.out.println("|---|---|---|---|---|");
      for(int j = 0; j < BOARD_DIM; j++)
      if(eventCalledMap.get(board[i][j]) == true)
      System.out.printf("|%3s", "X");
      else
      System.out.printf("|%3s",board[i][j]);
      System.out.println("|");
   }
   System.out.println("|---|---|---|---|---|");
   System.out.println("_____________________ ");
}


public void putMarker(String value)
{
   if(eventCalledMap.containsKey(value))
   eventCalledMap.put(value, Boolean.TRUE);
}


public boolean checkWin()
{
   this.win = evalBoard();
   return this.win;
}


public boolean won()
{
   return this.win;
}


public int getPlayer()
{
return player;
}


private boolean evalBoard()
{
   int i, j, count;

   for(i = 0; i < BOARD_DIM; i++)
   {
      j = 0;
      count = 0;
    
      while(eventCalledMap.get(board[i][j]) != false)
      {
         count++;
         j++;
         if(count == BOARD_DIM)
         return true;
      }//end while

      j = 0;
      count = 0;
   
      while(eventCalledMap.get(board[j][i]) != false)
      {
         count++;
         j++;
         if(count == BOARD_DIM)
         return true;
      }
   }

   i = 0;
   count = 0;

   while(eventCalledMap.get(board[i][i]) != false)
   {
      count++;
      i++;
      if(count == BOARD_DIM)
      return true;
   }//end while

   i = BOARD_DIM -1;
   j = 0;
   count = 0;

   while(eventCalledMap.get(board[i][j]) != false)
   {
      count++;
      i--;
      j++;
      if(count == BOARD_DIM)
      return true;
   }

   return false;
   }
}

public class BingoGame
{

   private ArrayList<String> eventList;
   private final int DEFAULT_PLAYER_COUNT = 2;
   private int playerCount;
   private boolean winnerDetermined;
   private ArrayList<BingoBoard> boardList;

   BingoGame()
   {
      this.eventList = new ArrayList<>();
      this.playerCount = DEFAULT_PLAYER_COUNT;
      this.winnerDetermined = false;
      this.boardList = new ArrayList<>();
   }

   BingoGame(int players)
   {
   this.eventList = new ArrayList<>();
   this.playerCount = players;
   this.winnerDetermined = false;
   boardList = new ArrayList<>();
   }


   public void addEvent(String event)
   {
   this.eventList.add(event);
   }


   public void startGame()
   {
      this.winnerDetermined = false;
      for(int i = 1; i <= this.playerCount;i++)
      {
         ArrayList<String> events = (ArrayList<String>) eventList.clone();
         BingoBoard board = new BingoBoard(events,i);
         board.randomizeEvents();
         this.boardList.add(board);
         board.printBoard();
      }
      Scanner in = new Scanner(System.in);
      while(this.winnerDetermined == false)
      {
         System.out.println("Enter Event:");
         String check = in.next();
         for(BingoBoard boards:boardList)
         {
            boards.putMarker(check);
            boards.printBoard();
            if(winnerDetermined == false)
            winnerDetermined = boards.checkWin();
            else
            boards.checkWin();
         }
      }

      this.printWinner();

   }



   private void printWinner()
   {
   
      for(BingoBoard boards:boardList)
      {
         if(boards.won())
         System.out.printf("Player %d wins! ",boards.getPlayer());
      }
   }/

   public static void main(String[] args)
   {
      BingoGame game = new BingoGame(4);

      for(int i=1; i<=25; i++)
      game.addEvent(Integer.toString(i));
      game.startGame();

   }

}

Save the program as Bingo.java then compile and run