Last active
June 12, 2016 14:16
-
-
Save tinkerstudent/a02c151e545a32139d3eec6747ea5f55 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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