Skip to content

Instantly share code, notes, and snippets.

@L8RFN
Created January 5, 2024 15:51
Show Gist options
  • Save L8RFN/5f21569a4b74db6824bcbdeeeef37802 to your computer and use it in GitHub Desktop.
Save L8RFN/5f21569a4b74db6824bcbdeeeef37802 to your computer and use it in GitHub Desktop.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class GUI extends JFrame implements ActionListener {
JButton[] buttons = new JButton[9];
int counter = 0;
String currentPlayer = "X";
public GUI() {
setLayout(new GridLayout(3, 3));
initializeButtons();
setTitle("Tic Tac Toe Game");
setSize(500, 500);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
private void initializeButtons() {
for (int i = 0; i < 9; i++) {
buttons[i] = new JButton();
buttons[i].addActionListener(this);
add(buttons[i]);
}
}
public void actionPerformed(ActionEvent ae) {
JButton clickedButton = (JButton) ae.getSource();
if (clickedButton.getText().equals("")) {
clickedButton.setText(currentPlayer);
counter++;
if (win()) {
JOptionPane.showMessageDialog(null, currentPlayer + " has won!");
resetGame();
} else if (counter == 9) {
JOptionPane.showMessageDialog(null, "It's a draw!");
resetGame();
} else {
currentPlayer = (currentPlayer.equals("X")) ? "O" : "X";
}
}
}
private boolean win() {
for (int i = 0; i < 8; i += 3) {
if (check(buttons[i], buttons[i + 1], buttons[i + 2])) return true;
}
for (int i = 0; i < 3; i++) {
if (check(buttons[i], buttons[i + 3], buttons[i + 6])) return true;
}
if (check(buttons[0], buttons[4], buttons[8])) return true;
if (check(buttons[2], buttons[4], buttons[6])) return true;
return false;
}
private boolean check(JButton b1, JButton b2, JButton b3) {
return !b1.getText().equals("") && b1.getText().equals(b2.getText()) && b2.getText().equals(b3.getText());
}
private void resetGame() {
for (JButton button : buttons) {
button.setText("");
}
counter = 0;
currentPlayer = "X";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment