Tic Tac Toe
I created a simple GUI Tic Tac Toe application this morning. It works fine. I would like to know if this is an efficient way to do this program?Any input is well received.
package tic_tac_toe;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
publicclass Tic_tac_toe{
publicstaticvoid main(String[] args){
new Tic_tac_toe();
}
public Tic_tac_toe(){
int turn = 0;
int turns_taken = 0;
try{
UIManager.getSystemLookAndFeelClassName();// looks like the XP default window.
}catch (Exception e){}
JFrame ticTacToe =new JFrame("Tic Tac Toe");// creates top level container.
ticTacToe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// makes so the frame closes when you hit x button.
JPanel buttonPanel =new JPanel();
buttonPanel.setLayout(new GridLayout(3,3));
JButton button1 =new JButton("");
button1.setName("");
JButton button2 =new JButton("");
button2.setName("");
JButton button3 =new JButton("");
button3.setName("");
JButton button4 =new JButton("");
button4.setName("");
JButton button5 =new JButton("");
button5.setName("");
JButton button6 =new JButton("");
button6.setName("");
JButton button7 =new JButton("");
button7.setName("");
JButton button8 =new JButton("");
button8.setName("");
JButton button9 =new JButton("");
button9.setName("");
button1.addMouseListener(new Click(turn,turns_taken,button1,button2,button3,button4,button5,button6,button7,button8,button9));
button2.addMouseListener(new Click(turn,turns_taken,button1,button2,button3,button4,button5,button6,button7,button8,button9));
button3.addMouseListener(new Click(turn,turns_taken,button1,button2,button3,button4,button5,button6,button7,button8,button9));
button4.addMouseListener(new Click(turn,turns_taken,button1,button2,button3,button4,button5,button6,button7,button8,button9));
button5.addMouseListener(new Click(turn,turns_taken,button1,button2,button3,button4,button5,button6,button7,button8,button9));
button6.addMouseListener(new Click(turn,turns_taken,button1,button2,button3,button4,button5,button6,button7,button8,button9));
button7.addMouseListener(new Click(turn,turns_taken,button1,button2,button3,button4,button5,button6,button7,button8,button9));
button8.addMouseListener(new Click(turn,turns_taken,button1,button2,button3,button4,button5,button6,button7,button8,button9));
button9.addMouseListener(new Click(turn,turns_taken,button1,button2,button3,button4,button5,button6,button7,button8,button9));
buttonPanel.add(button1);
buttonPanel.add(button2);
buttonPanel.add(button3);
buttonPanel.add(button4);
buttonPanel.add(button5);
buttonPanel.add(button6);
buttonPanel.add(button7);
buttonPanel.add(button8);
buttonPanel.add(button9);
ticTacToe.add(buttonPanel);// adds the superpanel to the frame.
ticTacToe.setResizable(true);
ticTacToe.pack();// makes the frame work
ticTacToe.setVisible(true);// makes the frame visible
}
publicstaticvoid reset(JButton button1,JButton button2,JButton button3,JButton button4,JButton button5,JButton button6,JButton button7,JButton button8,JButton button9){
button1.setName("");
button1.setText("");
button1.setEnabled(true);
button2.setName("");
button2.setText("");
button2.setEnabled(true);
button3.setName("");
button3.setText("");
button3.setEnabled(true);
button4.setName("");
button4.setText("");
button4.setEnabled(true);
button5.setName("");
button5.setText("");
button5.setEnabled(true);
button6.setName("");
button6.setText("");
button6.setEnabled(true);
button7.setName("");
button7.setText("");
button7.setEnabled(true);
button8.setName("");
button8.setText("");
button8.setEnabled(true);
button9.setName("");
button9.setText("");
button9.setEnabled(true);
}
}
class Clickextends MouseAdapter{
staticint t, tt;
JButton b1, b2, b3, b4, b5, b6, b7, b8, b9;
public Click(int turn,int turns_taken, JButton button1,JButton button2,JButton button3,JButton button4,JButton button5,JButton button6,JButton button7,JButton button8,JButton button9){
t = turn;
tt = turns_taken;
b1 = button1;
b2 = button2;
b3 = button3;
b4 = button4;
b5 = button5;
b6 = button6;
b7 = button7;
b8 = button8;
b9 = button9;
}
publicvoid mouseClicked(MouseEvent e){
JButton button = (JButton)e.getSource();
if (t==0 && button.getName() ==""){
button.setText(" X ");
button.setName("X");
t++;
tt++;
button.setEnabled(false);// disables button after use.
if (b1.getName() =="X" && b2.getName() =="X" && b3.getName() =="X"){
JOptionPane.showMessageDialog(null,"X Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b1.getName() =="X" && b4.getName() =="X" && b7.getName() =="X"){
JOptionPane.showMessageDialog(null,"X Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b1.getName() =="X" && b5.getName() =="X" && b9.getName() =="X"){
JOptionPane.showMessageDialog(null,"X Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b4.getName() =="X" && b5.getName() =="X" && b6.getName() =="X"){
JOptionPane.showMessageDialog(null,"X Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b7.getName() =="X" && b8.getName() =="X" && b9.getName() =="X"){
JOptionPane.showMessageDialog(null,"X Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b2.getName() =="X" && b5.getName() =="X" && b8.getName() =="X"){
JOptionPane.showMessageDialog(null,"X Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b3.getName() =="X" && b5.getName() =="X" && b7.getName() =="X"){
JOptionPane.showMessageDialog(null,"X Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b3.getName() =="X" && b6.getName() =="X" && b9.getName() =="X"){
JOptionPane.showMessageDialog(null,"X Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (tt == 9){
JOptionPane.showMessageDialog(null,"Draw","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}
}elseif (t==1 && button.getName() ==""){
button.setText(" O ");
button.setName("O");
t--;
tt++;
button.setEnabled(false);// disables button after use
if (b1.getName() =="O" && b2.getName() =="O" && b3.getName() =="O"){
JOptionPane.showMessageDialog(null,"O Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b1.getName() =="O" && b4.getName() =="O" && b7.getName() =="O"){
JOptionPane.showMessageDialog(null,"O Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b1.getName() =="O" && b5.getName() =="O" && b9.getName() =="O"){
JOptionPane.showMessageDialog(null,"O Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b4.getName() =="O" && b5.getName() =="O" && b6.getName() =="O"){
JOptionPane.showMessageDialog(null,"O Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b7.getName() =="O" && b8.getName() =="O" && b9.getName() =="O"){
JOptionPane.showMessageDialog(null,"O Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b2.getName() =="O" && b5.getName() =="O" && b8.getName() =="O"){
JOptionPane.showMessageDialog(null,"O Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b3.getName() =="O" && b5.getName() =="O" && b7.getName() =="O"){
JOptionPane.showMessageDialog(null,"O Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (b3.getName() =="O" && b6.getName() =="O" && b9.getName() =="O"){
JOptionPane.showMessageDialog(null,"O Wins the Game!","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}elseif (tt == 9){
JOptionPane.showMessageDialog(null,"Draw","Game Over", JOptionPane.ERROR_MESSAGE);
Tic_tac_toe.reset(b1,b2,b3,b4,b5,b6,b7,b8,b9);
}
}
}
}

