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

I have written a code in Java for a tic tac toe game and need to add a graphic i

ID: 3859362 • Letter: I

Question

I have written a code in Java for a tic tac toe game and need to add a graphic in the JPanel to signify the winner. A Large X for x(player wins), an Large O for o(computer wins) and an overlapping XO for (tie). I have included the tic tac toe game. Just having issues with putting graphics in JPanel. Please help!

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class JTicTacToe2

extends JFrame

{

public static void main(String [] args)

{

new JTicTacToe();

}

private JButton buttonA1, buttonA2, buttonA3, buttonB1, buttonB2, buttonB3, buttonC1, buttonC2, buttonC3;

private Board board;

public JTicTacToe2()

{

// Set up the grid

this.setSize(300,300);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setTitle("Tic-Tac-Toe");

JPanel Marker = new JPanel();

Marker.setSize(300,300);

Marker.setLayout(new GridLayout(3,3));

buttonA1 = createButton("A1");

buttonA2 = createButton("A2");

buttonA3 = createButton("A3");

buttonB1 = createButton("B1");

buttonB2 = createButton("B2");

buttonB3 = createButton("B3");

buttonC1 = createButton("C1");

buttonC2 = createButton("C2");

buttonC3 = createButton("C3");

Marker.add(buttonA1);

Marker.add(buttonA2);

Marker.add(buttonA3);

Marker.add(buttonB1);

Marker.add(buttonB2);

Marker.add(buttonB3);

Marker.add(buttonC1);

Marker.add(buttonC2);

Marker.add(buttonC3);

this.add(Marker);

this.setVisible(true);

// Start the game

board = new Board();

}

private JButton createButton(String square)

{

JButton button = new JButton();

button.setPreferredSize(new Dimension(50, 50));

Font f = new Font("Dialog", Font.PLAIN, 72);

button.setFont(f);

button.addActionListener(e -> buttonClick(e, square));

return button;

}

private void buttonClick(ActionEvent e, String square)

{

if (board.getSquare(square) != 0)

return;

JButton button = (JButton)e.getSource();

button.setText("X");

board.playAt(square, 1);

if (board.isGameOver() == 3)

{

JOptionPane.showMessageDialog(null,

// need to have a graphic with an overlapping XO

"Tie! Try Again.", "Game Over",

JOptionPane.INFORMATION_MESSAGE);

resetGame();

return;

}

if (board.isGameOver() == 1)

{

JOptionPane.showMessageDialog(null,

// need to have a graphic with an O

"Computer Wins! Better Luck Next Time.", "Game Over",

JOptionPane.INFORMATION_MESSAGE);

resetGame();

return;

}

String computerTurn = board.getNextMove();

board.playAt(computerTurn,2);

/* use a switch for computer moves. If the center is empty, play the center square.

If the center is not empty but any of the four corners are empty, play one of the corners randomly.

If the center is not empty and no corners are empty, play one of the edges.*/

switch (computerTurn)

{

case "A1":

buttonA1.setText("O");

break;

case "A2":

buttonA2.setText("O");

break;

case "A3":

buttonA3.setText("O");

break;

case "B1":

buttonB1.setText("O");

break;

case "B2":

buttonB2.setText("O");

break;

case "B3":

buttonB3.setText("O");

break;

case "C1":

buttonC1.setText("O");

break;

case "C2":

buttonC2.setText("O");

break;

case "C3":

buttonC3.setText("O");

break;

}

if (board.isGameOver() == 2)

{

JOptionPane.showMessageDialog(null,

//need to have a graphic with an X

"User Beats Computer!!!", "Game Over",

JOptionPane.INFORMATION_MESSAGE);

resetGame();

return;

}

}

// reset buttons for next play

private void resetGame()

{

board.reset();

buttonA1.setText("");

buttonA2.setText("");

buttonA3.setText("");

buttonB1.setText("");

buttonB2.setText("");

buttonB3.setText("");

buttonC1.setText("");

buttonC2.setText("");

buttonC3.setText("");

}

}

Explanation / Answer

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class JTicTacToe2

extends JFrame

{

public static void main(String [] args)

{

new JTicTacToe();

}

private JButton buttonA1, buttonA2, buttonA3, buttonB1, buttonB2, buttonB3, buttonC1, buttonC2, buttonC3;

private Board board;

public JTicTacToe2()

{

// Set up the grid

this.setSize(300,300);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setTitle("Tic-Tac-Toe");

JPanel Marker = new JPanel();

Marker.setSize(300,300);

Marker.setLayout(new GridLayout(3,3));

buttonA1 = createButton("A1");

buttonA2 = createButton("A2");

buttonA3 = createButton("A3");

buttonB1 = createButton("B1");

buttonB2 = createButton("B2");

buttonB3 = createButton("B3");

buttonC1 = createButton("C1");

buttonC2 = createButton("C2");

buttonC3 = createButton("C3");

Marker.add(buttonA1);

Marker.add(buttonA2);

Marker.add(buttonA3);

Marker.add(buttonB1);

Marker.add(buttonB2);

Marker.add(buttonB3);

Marker.add(buttonC1);

Marker.add(buttonC2);

Marker.add(buttonC3);

this.add(Marker);

this.setVisible(true);

// Start the game

board = new Board();

}

private JButton createButton(String square)

{

JButton button = new JButton();

button.setPreferredSize(new Dimension(50, 50));

Font f = new Font("Dialog", Font.PLAIN, 72);

button.setFont(f);

button.addActionListener(e -> buttonClick(e, square));

return button;

}

private void buttonClick(ActionEvent e, String square)

{

if (board.getSquare(square) != 0)

return;

JButton button = (JButton)e.getSource();

button.setText("X");

board.playAt(square, 1);

if (board.isGameOver() == 3)

{

JOptionPane.showMessageDialog(null,

// need to have a graphic with an overlapping XO

"Tie! Try Again.", "Game Over",

JOptionPane.INFORMATION_MESSAGE);

resetGame();

return;

}

if (board.isGameOver() == 1)

{

JOptionPane.showMessageDialog(null,

// need to have a graphic with an O

"Computer Wins! Better Luck Next Time.", "Game Over",

JOptionPane.INFORMATION_MESSAGE);

resetGame();

return;

}

String computerTurn = board.getNextMove();

board.playAt(computerTurn,2);

/* use a switch for computer moves. If the center is empty, play the center square.

If the center is not empty but any of the four corners are empty, play one of the corners randomly.

If the center is not empty and no corners are empty, play one of the edges.*/

switch (computerTurn)

{

case "A1":

buttonA1.setText("O");

break;

case "A2":

buttonA2.setText("O");

break;

case "A3":

buttonA3.setText("O");

break;

case "B1":

buttonB1.setText("O");

break;

case "B2":

buttonB2.setText("O");

break;

case "B3":

buttonB3.setText("O");

break;

case "C1":

buttonC1.setText("O");

break;

case "C2":

buttonC2.setText("O");

break;

case "C3":

buttonC3.setText("O");

break;

}

if (board.isGameOver() == 2)

{

JOptionPane.showMessageDialog(null,

//need to have a graphic with an X

"User Beats Computer!!!", "Game Over",

JOptionPane.INFORMATION_MESSAGE);

resetGame();

return;

}

}

// reset buttons for next play

private void resetGame()

{

board.reset();

buttonA1.setText("");

buttonA2.setText("");

buttonA3.setText("");

buttonB1.setText("");

buttonB2.setText("");

buttonB3.setText("");

buttonC1.setText("");

buttonC2.setText("");

buttonC3.setText("");

}

}