Skip to content

Instantly share code, notes, and snippets.

@tinkerstudent
Last active June 12, 2016 14:16
Show Gist options
  • Select an option

  • Save tinkerstudent/a02c151e545a32139d3eec6747ea5f55 to your computer and use it in GitHub Desktop.

Select an option

Save tinkerstudent/a02c151e545a32139d3eec6747ea5f55 to your computer and use it in GitHub Desktop.
package com.tinkeracademy.projects;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
public class TicTacToe implements ActionListener {
public int round = 0;
JButton[][] buttons;
public static void main(String[] args) {
TicTacToe ticTacToe = new TicTacToe();
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
ticTacToe.createAndShowGUI();
}
});
}
public void createAndShowGUI() {
Window.show();
Window.addLabel("Tic Tac Toe Application Developed By: Tinker Academy v1.0");
String[][] controls = {
{ "", "", "" },
{ "", "", "" },
{ "", "", "" }
};
buttons = Window.addGridButtons(controls);
for (int i = 0; i < buttons.length; i++) {
JButton[] innerArray = buttons[i];
for (int j = 0; j < innerArray.length; j++) {
JButton button = innerArray[j];
button.addActionListener(this);
Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 32);
button.setFont(font);
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// System.out.println("Button clicked");
String text = e.getActionCommand();
if (text.equals("")) {
// System.out.println("X");
JButton button = (JButton) e.getSource();
if (round % 2 == 0) {
button.setText("X");
} else {
button.setText("O");
}
round++;
if (round == 9) {
System.out.println("Game Ended!");
boolean won = checkWon();
if (won) {
JOptionPane.showMessageDialog(Window.frame, "You won!!");
} else {
JOptionPane.showMessageDialog(Window.frame, "Draw!!");
}
clearBoard();
} else {
boolean won = checkWon();
if (won) {
JOptionPane.showMessageDialog(Window.frame, "You won!!");
clearBoard();
}
}
}
}
public boolean checkWon() {
// _______ _______ ________
// | | | |
// | 0,0 | 0,1 | 0,2 |
// |_______|_______|_______|
// _______ _______ ________
// | | | |
// | 1,0 | 1,1 | 1,2 |
// |_______|_______|_______|
// _______ _______ ________
// | | | |
// | 2,0 | 2,1 | 2,2 |
// |_______|_______|_______|
// Winning Triple 1
// Buttons at (0,0), (0,1) and (0,2) display 'X'
// Buttons at (0,0), (0,1) and (0,2) display 'O'
if (buttons[0][0].getText().equals("X")
&& buttons[0][0].getText().equals(buttons[0][1].getText())
&& buttons[0][1].getText().equals(buttons[0][2].getText())) {
return true;
}
if (buttons[0][0].getText().equals("O")
&& buttons[0][0].getText().equals(buttons[0][1].getText())
&& buttons[0][1].getText().equals(buttons[0][2].getText())) {
return true;
}
// Winning Triple 2
// Buttons at (1,0), (1,1) and (1,2) display 'X'
// Buttons at (1,0), (1,1) and (1,2) display 'O'
if (buttons[1][0].getText().equals("X")
&& buttons[1][0].getText().equals(buttons[1][1].getText())
&& buttons[1][1].getText().equals(buttons[1][2].getText())) {
return true;
}
if (buttons[1][0].getText().equals("O")
&& buttons[1][0].getText().equals(buttons[1][1].getText())
&& buttons[1][1].getText().equals(buttons[1][2].getText())) {
return true;
}
// Winning Triple 3
// Buttons at (2,0), (2,1) and (2,2) display 'X'
// Buttons at (2,0), (2,1) and (2,2) display 'O'
if (buttons[2][0].getText().equals("X")
&& buttons[2][0].getText().equals(buttons[2][1].getText())
&& buttons[2][1].getText().equals(buttons[2][2].getText())) {
return true;
}
if (buttons[2][0].getText().equals("O")
&& buttons[2][0].getText().equals(buttons[2][1].getText())
&& buttons[2][1].getText().equals(buttons[2][2].getText())) {
return true;
}
// Winning Triple 4
// Buttons at (0,0), (1,0) and (2,0) display 'X'
// Buttons at (0,0), (1,0) and (2,0) display 'O'
if (buttons[0][0].getText().equals("X")
&& buttons[0][0].getText().equals(buttons[1][0].getText())
&& buttons[1][0].getText().equals(buttons[2][0].getText())) {
return true;
}
if (buttons[0][0].getText().equals("O")
&& buttons[0][0].getText().equals(buttons[1][0].getText())
&& buttons[1][0].getText().equals(buttons[2][0].getText())) {
return true;
}
// Winning Triple 5
// Buttons at (0,1), (1,1) and (2,1) display 'X'
// Buttons at (0,1), (1,1) and (2,1) display 'O'
if (buttons[0][1].getText().equals("X")
&& buttons[0][1].getText().equals(buttons[1][1].getText())
&& buttons[1][1].getText().equals(buttons[2][1].getText())) {
return true;
}
if (buttons[0][1].getText().equals("O")
&& buttons[0][1].getText().equals(buttons[1][1].getText())
&& buttons[1][1].getText().equals(buttons[2][1].getText())) {
return true;
}
// Winning Triple 6
// Buttons at (0,2), (1,2) and (2,2) display 'X'
// Buttons at (0,2), (1,2) and (2,2) display 'O'
if (buttons[0][2].getText().equals("X")
&& buttons[0][2].getText().equals(buttons[1][2].getText())
&& buttons[1][2].getText().equals(buttons[2][2].getText())) {
return true;
}
if (buttons[0][2].getText().equals("O")
&& buttons[0][2].getText().equals(buttons[1][2].getText())
&& buttons[1][2].getText().equals(buttons[2][2].getText())) {
return true;
}
// Winning Triple 7
// Buttons at (0,0), (1,1) and (2,2) display 'X'
// Buttons at (0,0), (1,1) and (2,2) display 'O'
if (buttons[0][0].getText().equals("X")
&& buttons[0][0].getText().equals(buttons[1][1].getText())
&& buttons[1][1].getText().equals(buttons[2][2].getText())) {
return true;
}
if (buttons[0][0].getText().equals("O")
&& buttons[0][0].getText().equals(buttons[1][1].getText())
&& buttons[1][1].getText().equals(buttons[2][2].getText())) {
return true;
}
// Winning Triple 8
// Buttons at (0,2), (1,1) and (2,0) display 'X'
// Buttons at (0,2), (1,1) and (2,0) display 'O'
if (buttons[0][2].getText().equals("X")
&& buttons[0][2].getText().equals(buttons[1][1].getText())
&& buttons[1][1].getText().equals(buttons[2][0].getText())) {
return true;
}
if (buttons[0][2].getText().equals("O")
&& buttons[0][2].getText().equals(buttons[1][1].getText())
&& buttons[1][1].getText().equals(buttons[2][0].getText())) {
return true;
}
return false;
}
public void clearBoard() {
for (int i = 0; i < buttons.length; i++) {
JButton[] innerArray = buttons[i];
for (int j = 0; j < innerArray.length; j++) {
JButton button = innerArray[j];
button.setText("");
}
}
round = 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment