import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
/**
* Tic-Tac-Toe against human or CPU.
*
*/
public class TicTacToe {
//....Random....\\
//....Buttons....\\
//....Labels....\\
static JLabel mssg
= new JLabel ("Please choose a difficulty.");
//....Panels....\\
//....Character Selection....\\
if (evt.getSource() == butEasy || evt.getSource() == butHard || evt.getSource() == butHvH) {
characterSelection();
}
//....Game Setup....\\
if (evt.getSource() == butX || evt.getSource() == butO) {
ticTacToeSetup(or);
}
//....Easy CPU....\\
if (evt.getSource() == butEasy) {
}
//....Hard CPU....\\
if (evt.getSource() == butHard) {
}
//....Vs. a Friend....\\
if (evt.getSource() == butHvH) {
}
//....Choose....\\
if (evt.getSource() == butX) {
mssg.setText("It is X's turn.");
} else if (evt.getSource() == butO) {
mssg.setText("It is O's turn.");
}
//....Turn....\\
if (mssg.getText() == "It is X's turn.") {
letter = "X";
turn = "It is O's turn.";
} else {
letter = "O";
turn = "It is X's turn.";
}
//....Placing Characters....\\
if (evt.getSource() == butA) {
butA.setText(letter);
mssg.setText(turn);
butA1 = butA;
butA = butSame;
} else if (evt.getSource() == butB) {
butB.setText(letter);
mssg.setText(turn);
butB1 = butB;
butB = butSame;
} else if (evt.getSource() == butC) {
butC.setText(letter);
mssg.setText(turn);
butC1 = butC;
butC = butSame;
} else if (evt.getSource() == butD) {
butD.setText(letter);
mssg.setText(turn);
butD1 = butD;
butD = butSame;
} else if (evt.getSource() == butE) {
butE.setText(letter);
mssg.setText(turn);
butE1 = butE;
butE = butSame;
} else if (evt.getSource() == butF) {
butF.setText(letter);
mssg.setText(turn);
butF1 = butF;
butF = butSame;
} else if (evt.getSource() == butG) {
butG.setText(letter);
mssg.setText(turn);
butG1 = butG;
butG = butSame;
} else if (evt.getSource() == butH) {
butH.setText(letter);
mssg.setText(turn);
butH1 = butH;
butH = butSame;
} else if (evt.getSource() == butI) {
butI.setText(letter);
mssg.setText(turn);
butI1 = butI;
butI = butSame;
}
//....Ref....\\
//....Winner....\\
if ((butA1.getText() == (turn) && butB1.getText() == (turn) && butC1.getText() == (turn)) ||
(butA1.getText() == (turn) && butE1.getText() == (turn) && butI1.getText() == (turn)) ||
(butA1.getText() == (turn) && butD1.getText() == (turn) && butG1.getText() == (turn)) ||
(butB1.getText() == (turn) && butE1.getText() == (turn) && butH1.getText() == (turn)) ||
(butC1.getText() == (turn) && butF1.getText() == (turn) && butI1.getText() == (turn)) ||
(butC1.getText() == (turn) && butE1.getText() == (turn) && butG1.getText() == (turn)) ||
(butD1.getText() == (turn) && butE1.getText() == (turn) && butF1.getText() == (turn)) ||
(butG1.getText() == (turn) && butH1.getText() == (turn) && butI1.getText() == (turn))) {
mssg.setText(turn + " Wins!");
butA = butSame;
butB = butSame;
butC = butSame;
butD = butSame;
butE = butSame;
butF = butSame;
butG = butSame;
butH = butSame;
butI = butSame;
} else if ((butA1.getText() == (letter) && butB1.getText() == (letter) && butC1.getText() == (letter)) ||
(butA1.getText() == (letter) && butE1.getText() == (letter) && butI1.getText() == (letter)) ||
(butA1.getText() == (letter) && butD1.getText() == (letter) && butG1.getText() == (letter)) ||
(butB1.getText() == (letter) && butE1.getText() == (letter) && butH1.getText() == (letter)) ||
(butC1.getText() == (letter) && butF1.getText() == (letter) && butI1.getText() == (letter)) ||
(butC1.getText() == (letter) && butE1.getText() == (letter) && butG1.getText() == (letter)) ||
(butD1.getText() == (letter) && butE1.getText() == (letter) && butF1.getText() == (letter)) ||
(butG1.getText() == (letter) && butH1.getText() == (letter) && butI1.getText() == (letter))) {
mssg.setText(letter + " Wins!");
butA = butSame;
butB = butSame;
butC = butSame;
butD = butSame;
butE = butSame;
butF = butSame;
butG = butSame;
butH = butSame;
butI = butSame;
} else if ((butA1.getText() == ("X") || butA1.getText() == ("O")) &&
(butB1.getText() == ("X") || butB1.getText() == ("O")) &&
(butC1.getText() == ("X") || butC1.getText() == ("O")) &&
(butD1.getText() == ("X") || butD1.getText() == ("O")) &&
(butE1.getText() == ("X") || butE1.getText() == ("O")) &&
(butF1.getText() == ("X") || butF1.getText() == ("O")) &&
(butG1.getText() == ("X") || butG1.getText() == ("O")) &&
(butH1.getText() == ("X") || butH1.getText() == ("O")) &&
(butI1.getText() == ("X") || butI1.getText() == ("O"))){
mssg.setText("It's a tie!");
}
}
}
public static void main
(String[] args
) { //....Font....\\
butA.setFont(t);
butB.setFont(t);
butC.setFont(t);
butD.setFont(t);
butE.setFont(t);
butF.setFont(t);
butG.setFont(t);
butH.setFont(t);
butI.setFont(t);
butX.setFont(t);
or.setFont(o);
butO.setFont(t);
butEasy.setFont(d);
butHard.setFont(d);
butHvH.setFont(d);
//....Listener....\\
ButtonHandler listener = new ButtonHandler();
butA.addActionListener(listener);
butB.addActionListener(listener);
butC.addActionListener(listener);
butD.addActionListener(listener);
butE.addActionListener(listener);
butF.addActionListener(listener);
butG.addActionListener(listener);
butH.addActionListener(listener);
butI.addActionListener(listener);
butX.addActionListener(listener);
butO.addActionListener(listener);
butEasy.addActionListener(listener);
butHvH.addActionListener(listener);
butHard.addActionListener(listener);
//....Layout....\\
//....message....\\
message.add(mssg);
//....main....\\
main.add(butEasy);
main.add(butHard);
main.add(butHvH);
main.add(message);
//....Window....\\
window.setContentPane(main);
window.setSize(375,500);
window.setLocation(100,100);
window.
setDefaultCloseOperation( JFrame.
EXIT_ON_CLOSE ); window.setVisible(true);
}
public static void characterSelection() {
//....Remove....\\
main.remove(butEasy);
main.remove(butHard);
main.remove(butHvH);
main.remove(message); //This must be removed, then added again so it will remain on the bottom
//....Add....\\
main.add(butX);
main.add(or);
main.add(butO);
main.add(message);
mssg.setText("Please choose a character.");
}
public static void ticTacToeSetup
(JLabel or
) { //....Remove....\\
main.remove(butX);
main.remove(butO);
main.remove(or);
main.remove(message);
//....Layout....\\
//....Add....\\
main.add(butA);
main.add(butB);
main.add(butC);
main.add(butD);
main.add(butE);
main.add(butF);
main.add(butG);
main.add(butH);
main.add(butI);
main.add(message);
}
}