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

The assignment is to write a GUI Tic Tac Toe program and I\'ve written out the c

ID: 3561940 • Letter: T

Question

The assignment is to write a GUI Tic Tac Toe program and I've written out the code and it builds, however whenever the program checks the board for a three in a row with the checkBoard() method in the Game class, it comes back with no matches even though there is a match on the board

Frame Class

//awt Imports
import java.awt.GridLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashSet;

//Swing Imports
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Frame extends JFrame{
private final JButton upLeftButton, upCenterButton, upRightButton,
middleLeftButton, middleCenterButton, middleRightButton,
downLeftButton, downCenterButton, downRightButton;
private final JPanel mainPanel, downPanel, middlePanel, upPanel;
private final JTextField messageText;
Player player = new Player();
Game mainBoard;
  
public Frame(){
  
//set window properties
setTitle("p2James");
setSize(500,500);
setLocation(100,100);
  
  
//create contents
  
//Create the Message Text Field
messageText = new JTextField("Play Tic-Tac-Toe!");
//Allgin the text to the center of the JTextField
messageText.setHorizontalAlignment(JTextField.CENTER);
messageText.setEditable(false);
  
//create the game buttons
upLeftButton = new JButton(" ");
upCenterButton = new JButton(" ");
upRightButton = new JButton(" ");
middleLeftButton = new JButton(" ");
middleCenterButton = new JButton(" ");
middleRightButton = new JButton(" ");
downLeftButton = new JButton(" ");
downCenterButton = new JButton(" ");
downRightButton = new JButton(" ");
  
//Create Game Board to keep track of square properties
mainBoard = new Game(upLeftButton, upCenterButton, upRightButton,
middleLeftButton, middleCenterButton, middleRightButton,
downLeftButton, downCenterButton, downRightButton);
  
//JPanels will be split into three sections: Up, Middle, and Down
//With respective locations on the main container
downPanel = new JPanel(new GridLayout(1,3));
middlePanel = new JPanel(new GridLayout(1,3));
upPanel = new JPanel(new GridLayout(1,3));
mainPanel = new JPanel(new GridLayout(3,1));
  
//add Buttons to the JPanels
  
//Up
upPanel.add(upLeftButton);
upPanel.add(upCenterButton);
upPanel.add(upRightButton);
  
//Middle
middlePanel.add(middleLeftButton);
middlePanel.add(middleCenterButton);
middlePanel.add(middleRightButton);
  
//Down
downPanel.add(downLeftButton);
downPanel.add(downCenterButton);
downPanel.add(downRightButton);
  
//add panels to main panel
mainPanel.add(upPanel);
mainPanel.add(middlePanel);
mainPanel.add(downPanel);
  
//create the main container for the window
//Panels will go to their respective locations
Container mainContentPane = getContentPane();
mainContentPane.add(mainPanel);
mainContentPane.add(messageText, "North");
  
//Create Event Listeners for each button
  
//Up
upLeftButton.addActionListener(new ButtonListener());
upCenterButton.addActionListener(new ButtonListener());
upRightButton.addActionListener(new ButtonListener());
  
//Middle
middleLeftButton.addActionListener(new ButtonListener());
middleCenterButton.addActionListener(new ButtonListener());
middleRightButton.addActionListener(new ButtonListener());
  
//Down
downLeftButton.addActionListener(new ButtonListener());
downCenterButton.addActionListener(new ButtonListener());
downRightButton.addActionListener(new ButtonListener());   
}
  
public void gameOver(String winner)
{
if(winner.equals("X") == true)
{
messageText.setText("GAME OVER! - The Winner is X!");
mainPanel.setEnabled(false);
}
else if(winner.equals("O") == true)
{
messageText.setText("GAME OVER! - The Winner is O!");
mainPanel.setEnabled(false);
}
}

private class ButtonListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent e){
Object source = e.getSource();
  
//Up
if(source == upLeftButton){
if(player.isOTurn())
{
upLeftButton.setText("O");
upLeftButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
else if(player.isOTurn() == false)
{
upLeftButton.setText("X");
upLeftButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
//Last button is pressed
else if(source == upCenterButton)
{
if(player.isOTurn())
{
upCenterButton.setText("O");
upCenterButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
else if(player.isOTurn() == false)
{
upCenterButton.setText("X");
upCenterButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
else if(source == upRightButton)
{
if(player.isOTurn())
{
upRightButton.setText("O");
upRightButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
else if(player.isOTurn() == false)
{
upRightButton.setText("X");
upRightButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
  
//Middle
else if(source == middleLeftButton)
{
if(player.isOTurn())
{
middleLeftButton.setText("O");
middleLeftButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
else if(player.isOTurn() == false)
{
middleLeftButton.setText("X");
middleLeftButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
else if(source == middleCenterButton)
{
if(player.isOTurn())
{
middleCenterButton.setText("O");
middleCenterButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
else if(player.isOTurn() == false)
{
middleCenterButton.setText("X");
middleCenterButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
else if(source == middleRightButton)
{
if(player.isOTurn())
{
middleRightButton.setText("O");
middleRightButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
else if(player.isOTurn() == false)
{
middleRightButton.setText("X");
middleRightButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
  
//Down
else if(source == downLeftButton)
{
if(player.isOTurn())
{
downLeftButton.setText("O");
downLeftButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
else if(player.isOTurn() == false)
{
downLeftButton.setText("X");
downLeftButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
else if(source == downCenterButton)
{
if(player.isOTurn())
{
downCenterButton.setText("O");
downCenterButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
else if(player.isOTurn() == false)
{
downCenterButton.setText("x");
downCenterButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
else if(source == downRightButton)
{
if(player.isOTurn())
{
downRightButton.setText("O");
downRightButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
else if(player.isOTurn() == false)
{
downRightButton.setText("X");
downRightButton.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
  
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
}
}
}

Game Class


import javax.swing.JButton;


public class Game {
  
private JButton[][] theBoard;
  
public Game(JButton inUpLeft, JButton inUpCenter, JButton inUpRight,
JButton inMiddleLeft, JButton inMiddleCenter, JButton inMiddleRight,
JButton inDownLeft, JButton inDownCenter, JButton inDownRight)
{
  
theBoard = new JButton[3][3];
  
//Up
theBoard[0][0] = inUpLeft;
theBoard[0][1] = inUpCenter;
theBoard[0][2] = inUpRight;
  
//Middle
theBoard[1][0] = inMiddleLeft;
theBoard[1][1] = inMiddleCenter;
theBoard[1][2] = inMiddleRight;
  
//Down
theBoard[2][0] = inDownLeft;
theBoard[2][1] = inDownCenter;
theBoard[2][2] = inDownRight;
  
}
  
public String checkBoard()
{
//Check all instances of a 3 in a row
  
/*
xxx
---
---
*/
if(theBoard[0][0].getText().equals("X") && theBoard[0][1].getText().equals("X") &&
theBoard[0][2].getText().equals("X"))
{
return "X";
}
else if(theBoard[0][0].getText().equals("O") && theBoard[0][1].getText().equals("O") &&
theBoard[0][2].getText().equals("O"))
{
return "O";
}
  
/*
---
xxx
---
*/
  
else if(theBoard[1][0].getText().equals("X") && theBoard[1][1].getText().equals("X") &&
theBoard[1][2].getText().equals("X"))
{
return "X";
}
else if(theBoard[1][0].getText().equals("O") && theBoard[1][1].getText().equals("O") &&
theBoard[1][2].getText().equals("O"))
{
return "O";
}
  
/*
---
---
xxx
*/
else if(theBoard[2][0].getText().equals("X") && theBoard[2][1].getText().equals("X") &&
theBoard[2][2].getText().equals("X"))
{
return "X";
}
else if(theBoard[2][0].getText().equals("O") && theBoard[2][1].getText().equals("O") &&
theBoard[2][2].getText().equals("O"))
{
return "O";
}
  
/*
x--
x--
x--
*/
  
else if(theBoard[0][0].getText().equals("X") && theBoard[1][0].getText().equals("X") &&
theBoard[2][0].getText().equals("X"))
{
return "X";
}
else if(theBoard[0][0].getText().equals("O") && theBoard[1][0].getText().equals("O") &&
theBoard[2][0].getText().equals("O"))
{
return "O";
}
  
/*
-x-
-x-
-x-
*/
  
else if(theBoard[0][1].getText().equals("X") && theBoard[1][1].getText().equals("X") &&
theBoard[2][1].getText().equals("X"))
{
return "X";
}
else if(theBoard[0][1].getText().equals("O") && theBoard[1][1].getText().equals("O") &&
theBoard[2][1].getText().equals("O"))
{
return "O";
}
  
/*
--x
--x
--x
*/
  
else if(theBoard[0][2].getText().equals("X") && theBoard[1][2].getText().equals("X") &&
theBoard[2][2].getText().equals("X"))
{
return "X";
}
else if(theBoard[0][2].getText().equals("O") && theBoard[1][2].getText().equals("O") &&
theBoard[2][2].getText().equals("O"))
{
return "O";
}
  
/*
--x
-x-
x--
*/
  
else if(theBoard[2][0].getText().equals("X") && theBoard[1][1].getText().equals("X") &&
theBoard[0][2].getText().equals("X"))
{
return "X";
}
else if(theBoard[2][0].getText().equals("O") && theBoard[1][1].getText().equals("O") &&
theBoard[0][2].getText().equals("O"))
{
return "O";
}
  
/*
x--
-x-
--x
*/
  
else if(theBoard[0][0].getText().equals("X") && theBoard[1][1].getText().equals("X") &&
theBoard[2][2].getText().equals("X"))
{
return "X";
}
else if(theBoard[0][0].getText().equals("O") && theBoard[1][1].getText().equals("O") &&
theBoard[2][2].getText().equals("O"))
{
return "O";
}
else
{
return " ";
}
}
}

Explanation / Answer

// Add else in the ButtonListener, and the 9 buttons can be merged into one.

// Frame

//awt Imports
import java.awt.GridLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashSet;

//Swing Imports
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Frame extends JFrame{
private final JButton upLeftButton, upCenterButton, upRightButton,
middleLeftButton, middleCenterButton, middleRightButton,
downLeftButton, downCenterButton, downRightButton;
private final JPanel mainPanel, downPanel, middlePanel, upPanel;
private final JTextField messageText;
Player player = new Player();
Game mainBoard;
  
public Frame(){
  
//set window properties
setTitle("p2James");
setSize(500,500);
setLocation(100,100);
  
  
//create contents
  
//Create the Message Text Field
messageText = new JTextField("Play Tic-Tac-Toe!");
//Allgin the text to the center of the JTextField
messageText.setHorizontalAlignment(JTextField.CENTER);
messageText.setEditable(false);
  
//create the game buttons
upLeftButton = new JButton(" ");
upCenterButton = new JButton(" ");
upRightButton = new JButton(" ");
middleLeftButton = new JButton(" ");
middleCenterButton = new JButton(" ");
middleRightButton = new JButton(" ");
downLeftButton = new JButton(" ");
downCenterButton = new JButton(" ");
downRightButton = new JButton(" ");
  
//Create Game Board to keep track of square properties
mainBoard = new Game(upLeftButton, upCenterButton, upRightButton,
middleLeftButton, middleCenterButton, middleRightButton,
downLeftButton, downCenterButton, downRightButton);
  
//JPanels will be split into three sections: Up, Middle, and Down
//With respective locations on the main container
downPanel = new JPanel(new GridLayout(1,3));
middlePanel = new JPanel(new GridLayout(1,3));
upPanel = new JPanel(new GridLayout(1,3));
mainPanel = new JPanel(new GridLayout(3,1));
  
//add Buttons to the JPanels
  
//Up
upPanel.add(upLeftButton);
upPanel.add(upCenterButton);
upPanel.add(upRightButton);
  
//Middle
middlePanel.add(middleLeftButton);
middlePanel.add(middleCenterButton);
middlePanel.add(middleRightButton);
  
//Down
downPanel.add(downLeftButton);
downPanel.add(downCenterButton);
downPanel.add(downRightButton);
  
//add panels to main panel
mainPanel.add(upPanel);
mainPanel.add(middlePanel);
mainPanel.add(downPanel);
  
//create the main container for the window
//Panels will go to their respective locations
Container mainContentPane = getContentPane();
mainContentPane.add(mainPanel);
mainContentPane.add(messageText, "North");
  
//Create Event Listeners for each button
  
//Up
upLeftButton.addActionListener(new ButtonListener());
upCenterButton.addActionListener(new ButtonListener());
upRightButton.addActionListener(new ButtonListener());
  
//Middle
middleLeftButton.addActionListener(new ButtonListener());
middleCenterButton.addActionListener(new ButtonListener());
middleRightButton.addActionListener(new ButtonListener());
  
//Down
downLeftButton.addActionListener(new ButtonListener());
downCenterButton.addActionListener(new ButtonListener());
downRightButton.addActionListener(new ButtonListener());   
}
  
public void gameOver(String winner)
{
if(winner.equals("X") == true)
{
messageText.setText("GAME OVER! - The Winner is X!");
mainPanel.setEnabled(false);
}
else if(winner.equals("O") == true)
{
messageText.setText("GAME OVER! - The Winner is O!");
mainPanel.setEnabled(false);
}
}

private class ButtonListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent e){
JButton btnInput = (JButton)e.getSource();
  
if(player.isOTurn())
{
btnInput.setText("O");
btnInput.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
else
{
//Set isOTurn to false based on which players turn it currently is
player.setIsOTurn(false);
messageText.setText("It is now X's turn!");
}
}
else if(player.isOTurn() == false)
{
btnInput.setText("X");
btnInput.setEnabled(false);
  
//Check Board to see if theres a winner
if(mainBoard.checkBoard().equals("X") == true)
{
//Game over X wins
gameOver("X");
}
else if(mainBoard.checkBoard().equals("O") == true)
{
//Game Over O wins
gameOver("O");
}
else
{
//It is now O's turn
player.setIsOTurn(true);
messageText.setText("It is now O's turn!");
}
}
}
}
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote