Computer AI for Tic-Tac-Toe
Hi, I'm pretty new to java. I've taken some classes but I don't know much. I am trying to create a Tic-Tac-Toe application and I want to create a computer that will play all the correct moves and never lose. I'm not finished with the moves that the computer makes. I've tagged where I'm having the problems. Here it is:package mytictactoe;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
* Models a TicTacToe game.
* @author Charles Lockner
public class SupermanTicTacToe
// Instance Variables
private JFrame theFrame = new JFrame("Superman Tic-Tac-Toe");
private JMenuBar theMenuBar = new JMenuBar();
private JMenu fileMenu = new JMenu("File");
private JMenuItem quit = new JMenuItem("Quit");
private JMenu optionsMenu = new JMenu("Options");
private JMenuItem reset = new JMenuItem("Reset Game");
private JMenuItem vsComp = new JMenuItem("Human vs Superman");
private JMenuItem vsHuman = new JMenuItem("Human vs Human");
private JButton buttons[] = new JButton[9];
private int[][] winCombinations = new int[][]
{ 0, 1, 2 },
{ 3, 4, 5 },
{ 6, 7, 8 }, // Horizontal wins
{ 0, 3, 6 },
{ 1, 4, 7 },
{ 2, 5, 8 }, // Vertical wins
{ 0, 4, 8 },
{ 2, 4, 6 } // Diagonal wins
private String letter = "";
private int count = 0;
private boolean win = false;
private boolean compPlayer = false;
private boolean playerIsFirst = true;
private Random generator = new Random();
public SupermanTicTacToe()
// Create window
theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
theFrame.setSize(300,340);
theFrame.setLayout(new GridLayout(3,3));
theFrame.setLocationRelativeTo(null);
theFrame.setResizable(false);
// Add menu to window
theMenuBar.add(fileMenu);
fileMenu.add(quit);
theMenuBar.add(optionsMenu);
optionsMenu.add(reset);
optionsMenu.addSeparator();
optionsMenu.add(vsComp);
optionsMenu.add(vsHuman);
theFrame.setJMenuBar(theMenuBar);
// Add buttons to panel
for(int i = 0; i <= 8; i++)
buttons[i] = new JButton();
theFrame.add(buttons);
// Make Window Visible
theFrame.setVisible(true);
// Actions
quit.addActionListener(new QuitMenuListener());
reset.addActionListener(new ResetMenuListener());
vsComp.addActionListener(new VsCompMenuListener());
vsHuman.addActionListener(new VsHumanMenuListener());
for(int i = 0; i <= 8; i++)
buttons[i].addActionListener(new ButtonListener());
private class ButtonListener implements ActionListener
public void actionPerformed(ActionEvent e)
count++;
System.out.println("Button click done.");
// Calculate whose turn it is
if (count % 2 == 0)
letter = "O";
else
letter = "X";
JButton pressedButton = (JButton) e.getSource();
pressedButton.setText(letter);
pressedButton.setEnabled(false);
// Determine who won
for (int i = 0; i <= 7; i++)
if (buttons[winCombinations[i][0]].getText().equals(
buttons[winCombinations[i][1]].getText())
&& buttons[winCombinations[i][1]].getText().equals(
buttons[winCombinations[i][2]].getText())
&& buttons[winCombinations[i][0]].getText() != "")
win = true;
// Show a dialog when game is over
if (win == true)
for (int i = 0; i <= 8; i++)
buttons[i].setEnabled(false);
JOptionPane.showMessageDialog(null, letter + " is a beast.");
} else if (count == 9 && win == false)
JOptionPane.showMessageDialog(null, "No one is beastly enough to win this game.");
// Computer's actions PROBLEMS!!!=====================================
if (compPlayer)
if (playerIsFirst)
if (letter == "O")
if (buttons[4].getText().equals(""))
buttons[4].doClick();
else if (buttons[0].getText().equals(""))
buttons[0].doClick();
else if (buttons[2].getText().equals(""))
buttons[2].doClick();
else if (buttons[6].getText().equals(""))
buttons[6].doClick();
else if (buttons[8].getText().equals(""))
buttons[8].doClick();
} else
if (letter == "X")
if (buttons[0].getText().equals(""))
buttons[0].doClick();
else if (buttons[2].getText().equals(""))
buttons[2].doClick();
else if (buttons[6].getText().equals(""))
buttons[6].doClick();
else if (buttons[8].getText().equals(""))
buttons[8].doClick();
} //==================================================================
private class QuitMenuListener implements ActionListener
public void actionPerformed(ActionEvent e)
System.exit(0);
private class ResetMenuListener implements ActionListener
public void actionPerformed(ActionEvent e)
for (int i = 0; i <= 8; i++)
playerIsFirst = generator.nextBoolean();
buttons[i].setEnabled(true);
buttons[i].setText("");
count = 0;
win = false;
if(playerIsFirst = false)
buttons[4].doClick();
private class VsCompMenuListener implements ActionListener
public void actionPerformed(ActionEvent e)
for (int i = 0; i <= 8; i++)
buttons[i].setEnabled(true);
buttons[i].setText("");
count = 0;
win = false;
compPlayer = true;
playerIsFirst = generator.nextBoolean();
System.out.println(playerIsFirst);
if(playerIsFirst = false)
buttons[4].doClick();
private class VsHumanMenuListener implements ActionListener
public void actionPerformed(ActionEvent e)
for (int i = 0; i <= 8; i++)
playerIsFirst = generator.nextBoolean();
buttons[i].setEnabled(true);
buttons[i].setText("");
count = 0;
win = false;
compPlayer = false;
public static void main(String[] args)
new SupermanTicTacToe();
Here is updated code, that I believe will not be beatable by human input. Let me know if you find any bugs.
-Squeaker2
// Computer's actions
if (compPlayer)
if (letter.contentEquals("O")){}
else if(letter.contentEquals("X"))
{//Code Computer AI Logic
boolean flagger = false;
flagger = computerLogic();
if (flagger == false){
if (buttons[4].getText().contentEquals(""))
buttons[4].doClick();
//Check for inside
else if (buttons[1].getText().contentEquals("X")
&& buttons[5].getText().contentEquals("X")
&& buttons[2].getText().contentEquals(""))
buttons[2].doClick();
else if (buttons[7].getText().contentEquals("X")
&& buttons[5].getText().contentEquals("X")
&& buttons[8].getText().contentEquals(""))
buttons[8].doClick();
else if (buttons[3].getText().contentEquals("X")
&& buttons[7].getText().contentEquals("X")
&& buttons[6].getText().contentEquals(""))
buttons[6].doClick();
else if (buttons[1].getText().contentEquals("X")
&& buttons[3].getText().contentEquals("X")
&& buttons[0].getText().contentEquals(""))
buttons[0].doClick();
else if (buttons[4].getText().contentEquals("X")
&& buttons[0].getText().contentEquals(""))
buttons[0].doClick();
else if (buttons[1].getText().contentEquals(""))
buttons[1].doClick();
else if (buttons[3].getText().contentEquals(""))
buttons[3].doClick();
else if (buttons[5].getText().contentEquals(""))
buttons[5].doClick();
else if (buttons[7].getText().contentEquals(""))
buttons[7].doClick();
else if (buttons[0].getText().contentEquals(""))
buttons[0].doClick();
else if (buttons[2].getText().contentEquals(""))
buttons[2].doClick();
else if (buttons[6].getText().contentEquals(""))
buttons[6].doClick();
else if (buttons[8].getText().contentEquals(""))
buttons[8].doClick();
public boolean computerLogic(){
boolean flagger = false;
boolean turnUsed = false;
for (int i = 0; i <= 7; i++)
{ //Check for WIN loop
if (turnUsed == false){
if (buttons[winCombinations[0]].getText().equals(buttons[winCombinations[i][1]].getText()) && buttons[winCombinations[i][0]].getText().contentEquals("O") && buttons[winCombinations[i][2]].getText().contentEquals(""))
buttons[winCombinations[i][2]].doClick();
flagger = true;
turnUsed = true;
else if (buttons[winCombinations[i][1]].getText().equals(buttons[winCombinations[i][2]].getText()) && buttons[winCombinations[i][1]].getText().contentEquals("O") && buttons[winCombinations[i][0]].getText().contentEquals(""))
buttons[winCombinations[i][0]].doClick();
flagger = true;
turnUsed = true;
else if (buttons[winCombinations[i][0]].getText().equals(buttons[winCombinations[i][2]].getText()) && buttons[winCombinations[i][2]].getText().contentEquals("O") && buttons[winCombinations[i][1]].getText().contentEquals(""))
buttons[winCombinations[i][1]].doClick();
flagger = true;
turnUsed = true;
for (int i = 0; i <= 7; i++)
{ //Check for Block Loop
if (turnUsed == false){
if (buttons[winCombinations[i][0]].getText().equals(buttons[winCombinations[i][1]].getText()) && buttons[winCombinations[i][0]].getText().contentEquals("X") && buttons[winCombinations[i][2]].getText().contentEquals(""))
buttons[winCombinations[i][2]].doClick();
flagger = true;
turnUsed = true;
else if (buttons[winCombinations[i][1]].getText().equals(buttons[winCombinations[i][2]].getText()) && buttons[winCombinations[i][1]].getText().contentEquals("X") && buttons[winCombinations[i][0]].getText().contentEquals(""))
buttons[winCombinations[i][0]].doClick();
flagger = true;
turnUsed = true;
else if (buttons[winCombinations[i][0]].getText().equals(buttons[winCombinations[i][2]].getText()) && buttons[winCombinations[i][2]].getText().contentEquals("X") && buttons[winCombinations[i][1]].getText().contentEquals(""))
buttons[winCombinations[i][1]].doClick();
flagger = true;
turnUsed = true;
return flagger;
Similar Messages
-
Hi, I'm brand new to your website this is my first post. I am currently in a Computer Science class and extremely new to Java. Our teacher gave us an assignment in Java (Eclipse) for Tic Tac Toe. I have the interface built already with Player One being X's and Player Two being O's and everything seems to work out but I have a major problem. When I get a player with 3 in a row I need a line to pop and for a message signify the winner. I have absolutely no idea on how to do this. So if there is anyone out there that would like to give me some guidance I would be greatly appreciated. I will just post my code below. Thank you very much.
package mmr.ics3m1.tictac;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
public class tictactoe extends javax.swing.JFrame {
private JLabel lblPlayer1;
private JLabel lblPlayer2;
private AbstractAction actionButtonPressed4;
private AbstractAction actionExit;
private JButton butExit;
private AbstractAction actionButtonPressed9;
private AbstractAction actionButtonPressed8;
private AbstractAction actionButtonPressed7;
private AbstractAction actionButtonPressed6;
private AbstractAction actionButtonPressed5;
private AbstractAction actionButtonPressed3;
private AbstractAction actionButtonPressed2;
private AbstractAction actionButtonPressed;
private JButton butCell;
private JButton butCell2;
private JButton butCell3;
private JButton butCell4;
private JButton butCell5;
private JButton butCell6;
private JButton butCell7;
private JButton butCell8;
private JButton butCell9;
private Boolean blnPlayer1=true;
* Auto-generated main method to display this JFrame
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
tictactoe inst = new tictactoe();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
public tictactoe() {
super();
initGUI();
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
lblPlayer1 = new JLabel();
getContentPane().add(lblPlayer1);
lblPlayer1.setText("Player One=X");
lblPlayer1.setBounds(28, 17, 110, 36);
lblPlayer1.setFont(new java.awt.Font("Segoe UI",3,12));
lblPlayer2 = new JLabel();
getContentPane().add(lblPlayer2);
lblPlayer2.setText("Player Two=O");
lblPlayer2.setBounds(245, 24, 83, 19);
lblPlayer2.setFont(new java.awt.Font("Segoe UI",3,12));
butCell = new JButton();
getContentPane().add(butCell);
getContentPane().add(getButCell2());
getContentPane().add(getButCell3());
getContentPane().add(getButCell4());
getContentPane().add(getButCell5());
getContentPane().add(getButCell6());
getContentPane().add(getButCell7());
getContentPane().add(getButCell8());
getContentPane().add(getButCell9());
getContentPane().add(getButExit());
butCell.setText("?");
butCell.setBounds(28, 65, 59, 40);
butCell.setAction(getActionButtonPressed(butCell));
pack();
setSize(400, 300);
} catch (Exception e) {
e.printStackTrace();
private AbstractAction getActionButtonPressed(final JButton pcell) {
if(actionButtonPressed == null) {
actionButtonPressed = new AbstractAction("?", null) {
public void actionPerformed(ActionEvent evt) {
if (pcell.getText()=="?")
//set square to X or O
if (blnPlayer1){
pcell.setText("X");
blnPlayer1=false;
else{
pcell.setText("O");
blnPlayer1=true;
else
System.out.println("already taken");
return actionButtonPressed;
private JButton getButCell2() {
if(butCell2 == null) {
butCell2 = new JButton();
butCell2.setText("?");
butCell2.setBounds(150, 65, 59, 40);
butCell2.setAction(getActionButtonPressed2(butCell2));
return butCell2;
private AbstractAction getActionButtonPressed2(final JButton pcell2) {
if(actionButtonPressed2 == null) {
actionButtonPressed2 = new AbstractAction("?", null) {
public void actionPerformed(ActionEvent evt) {
if (pcell2.getText()=="?")
//set square to X or O
if (blnPlayer1){
pcell2.setText("X");
blnPlayer1=false;
else{
pcell2.setText("O");
blnPlayer1=true;
else
System.out.println("already taken");
return actionButtonPressed2;
return actionButtonPressed;
private JButton getButCell3() {
if(butCell3 == null) {
butCell3 = new JButton();
butCell3.setText("?");
butCell3.setBounds(269, 65, 59, 40);
butCell3.setAction(getActionButtonPressed3(butCell3));
return butCell3;
private JButton getButCell4() {
if(butCell4 == null) {
butCell4 = new JButton();
butCell4.setText("?");
butCell4.setBounds(28, 116, 59, 40);
butCell4.setAction(getActionButtonPressed4(butCell4));
return butCell4;
private JButton getButCell5() {
if(butCell5 == null) {
butCell5 = new JButton();
butCell5.setText("?");
butCell5.setBounds(149, 116, 59, 40);
butCell5.setAction(getActionButtonPressed5(butCell5));
return butCell5;
private JButton getButCell6() {
if(butCell6 == null) {
butCell6 = new JButton();
butCell6.setText("?");
butCell6.setBounds(269, 116, 59, 40);
butCell6.setAction(getActionButtonPressed6(butCell6));
return butCell6;
private JButton getButCell7() {
if(butCell7 == null) {
butCell7 = new JButton();
butCell7.setText("?");
butCell7.setBounds(28, 161, 59, 40);
butCell7.setAction(getActionButtonPressed7(butCell7));
return butCell7;
private JButton getButCell8() {
if(butCell8 == null) {
butCell8 = new JButton();
butCell8.setText("?");
butCell8.setBounds(149, 161, 59, 40);
butCell8.setAction(getActionButtonPressed8(butCell8));
return butCell8;
private JButton getButCell9() {
if(butCell9 == null) {
butCell9 = new JButton();
butCell9.setText("?");
butCell9.setBounds(269, 161, 59, 40);
butCell9.setAction(getActionButtonPressed9(butCell9));
return butCell9;
private AbstractAction getActionButtonPressed3(final JButton pcell3) {
if(actionButtonPressed3 == null) {
actionButtonPressed3 = new AbstractAction("?", null) {
public void actionPerformed(ActionEvent evt) {
if (pcell3.getText()=="?")
//set square to X or O
if (blnPlayer1){
pcell3.setText("X");
blnPlayer1=false;
else{
pcell3.setText("O");
blnPlayer1=true;
else
System.out.println("already taken");
return actionButtonPressed3;
private AbstractAction getActionButtonPressed4(final JButton pcell4) {
if(actionButtonPressed4 == null) {
actionButtonPressed4 = new AbstractAction("?", null) {
public void actionPerformed(ActionEvent evt) {
if (pcell4.getText()=="?")
//set square to X or O
if (blnPlayer1){
pcell4.setText("X");
blnPlayer1=false;
else{
pcell4.setText("O");
blnPlayer1=true;
else
System.out.println("already taken");
return actionButtonPressed4;
private AbstractAction getActionButtonPressed5(final JButton pcell5) {
if(actionButtonPressed5 == null) {
actionButtonPressed5 = new AbstractAction("?", null) {
public void actionPerformed(ActionEvent evt) {
if (pcell5.getText()=="?")
//set square to X or O
if (blnPlayer1){
pcell5.setText("X");
blnPlayer1=false;
else{
pcell5.setText("O");
blnPlayer1=true;
else
System.out.println("already taken");
return actionButtonPressed5;
private AbstractAction getActionButtonPressed6(final JButton pcell6) {
if(actionButtonPressed6 == null) {
actionButtonPressed6 = new AbstractAction("?", null) {
public void actionPerformed(ActionEvent evt) {
if (pcell6.getText()=="?")
//set square to X or O
if (blnPlayer1){
pcell6.setText("X");
blnPlayer1=false;
else{
pcell6.setText("O");
blnPlayer1=true;
else
System.out.println("already taken");
return actionButtonPressed6;
private AbstractAction getActionButtonPressed7(final JButton pcell7) {
if(actionButtonPressed7 == null) {
actionButtonPressed7 = new AbstractAction("?", null) {
public void actionPerformed(ActionEvent evt) {
if (pcell7.getText()=="?")
//set square to X or O
if (blnPlayer1){
pcell7.setText("X");
blnPlayer1=false;
else{
pcell7.setText("O");
blnPlayer1=true;
else
System.out.println("already taken");
return actionButtonPressed7;
private AbstractAction getActionButtonPressed8(final JButton pcell8) {
if(actionButtonPressed8 == null) {
actionButtonPressed8 = new AbstractAction("?", null) {
public void actionPerformed(ActionEvent evt) {
if (pcell8.getText()=="?")
//set square to X or O
if (blnPlayer1){
pcell8.setText("X");
blnPlayer1=false;
else{
pcell8.setText("O");
blnPlayer1=true;
else
System.out.println("already taken");
return actionButtonPressed8;
private AbstractAction getActionButtonPressed9(final JButton pcell9) {
if(actionButtonPressed9 == null) {
actionButtonPressed9 = new AbstractAction("?", null) {
public void actionPerformed(ActionEvent evt) {
if (pcell9.getText()=="?")
//set square to X or O
if (blnPlayer1){
pcell9.setText("X");
blnPlayer1=false;
else{
pcell9.setText("O");
blnPlayer1=true;
else
System.out.println("already taken");
return actionButtonPressed9;
private JButton getButExit() {
if(butExit == null) {
butExit = new JButton();
butExit.setText("Exit");
butExit.setBounds(328, 231, 56, 33);
butExit.setAction(getActionExit());
return butExit;
private AbstractAction getActionExit() {
if(actionExit == null) {
actionExit = new AbstractAction("Exit", null) {
public void actionPerformed(ActionEvent evt) {
System.exit(0);
return actionExit;
}Don't forget to use the "Code Formatting Tags", so the posted code retains its original formatting.
http://forum.java.sun.com/help.jspa?sec=formatting
When I get a player with 3 in a row I need a line to pop and for a message signify the winner. Use a JOptionPane. Read the JOptionPane API and you will find a link to the Swing tutorial on "How to Use Dialogs". -
Creating Tic Tac Toe GUI game.
Okay so can someone please help fix my code for Tic Tac Toe i have no idea how to! =/
I'm new to programming so help would be appreciated..
thanx.
<code>
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TicTacToe implements ActionListener {
/*Instance Variables*/
private JFrame window = new JFrame("Tic-Tac-Toe");
private JButton button1 = new JButton("");
private JButton button2 = new JButton("");
private JButton button3 = new JButton("");
private JButton button4 = new JButton("");
private JButton button5 = new JButton("");
private JButton button6 = new JButton("");
private JButton button7 = new JButton("");
private JButton button8 = new JButton("");
private JButton button9 = new JButton("");
private String letter = "";
private ImageIcon O = new ImageIcon("LET-O.jpg");
private ImageIcon X = new ImageIcon("LET-X.jpg");
private int count = 0;
private boolean win = false;
public TicTacToe(){
/*Create Window*/
window.setSize(300,300);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new GridLayout(3,3));
/*Add Buttons To The Window*/
window.add(button1);
window.add(button2);
window.add(button3);
window.add(button4);
window.add(button5);
window.add(button6);
window.add(button7);
window.add(button8);
window.add(button9);
/*Add The Action Listener To The Buttons*/
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
button7.addActionListener(this);
button8.addActionListener(this);
button9.addActionListener(this);
/*Make The Window Visible*/
window.setVisible(true);
public void actionPerformed(ActionEvent e) {
count++;
/*Calculate Who's Turn It Is*/
if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9)
X = new ImageIcon("LET-X.jpg");
else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10)
O = new ImageIcon("LET-O.jpg");
/*Display X's or O's on the buttons*/
if(e.getSource() == button1){
button1.setIcon();
button1.setEnabled(false);
} else if(e.getSource() == button2){
button2.setIcon();
button2.setEnabled(false);
} else if(e.getSource() == button3){
button3.setIcon();
button3.setEnabled(false);
} else if(e.getSource() == button4){
button4.setIcon();
button4.setEnabled(false);
} else if(e.getSource() == button5){
button5.setIcon();
button5.setEnabled(false);
} else if(e.getSource() == button6){
button6.setIcon();
button6.setEnabled(false);
} else if(e.getSource() == button7){
button7.setIcon();
button7.setEnabled(false);
} else if(e.getSource() == button8){
button8.setIcon();
button8.setEnabled(false);
} else if(e.getSource() == button9){
button9.setIcon();
button9.setEnabled(false);
//Determine who won
//horizontal wins
if( button1.getText() == button2.getText() && button2.getText() == button3.getText() && button1.getText() != ""){
win = true;
else if(button4.getText() == button5.getText() && button5.getText() == button6.getText() && button4.getText() != ""){
win = true;
else if(button7.getText() == button8.getText() && button8.getText() == button9.getText() && button7.getText() != ""){
win = true;
//vertical wins
else if(button1.getText() == button4.getText() && button4.getText() == button7.getText() && button1.getText() != ""){
win = true;
else if(button2.getText() == button5.getText() && button5.getText() == button8.getText() && button2.getText() != ""){
win = true;
else if(button3.getText() == button6.getText() && button6.getText() == button9.getText() && button3.getText() != ""){
win = true;
//diagonal wins
else if(button1.getText() == button5.getText() && button5.getText() == button9.getText() && button1.getText() != ""){
win = true;
else if(button3.getText() == button5.getText() && button5.getText() == button7.getText() && button3.getText() != ""){
win = true;
else {
win = false;
/*Show a dialog if someone wins or the game is tie*/
if(win == true)
JOptionPane.showMessageDialog(null, letter + " WINS!");
else if(count == 9 && win == false)
JOptionPane.showMessageDialog(null, "Tie Game!");
public static void main(String[] args)
new TicTacToe();
</code>Yeah Thanks.
So I'm just stuck here. Like I need to program a Tic Tac Toe GUI with the X's and O's as images but I have no clue on what to do next. I have the images for both but I don't know how to make them work once the buttons are clicked.
Sorry here it is again..
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TicTacToe implements ActionListener {
/*Instance Variables*/
private JFrame window = new JFrame("Tic-Tac-Toe");
private JButton button1 = new JButton("");
private JButton button2 = new JButton("");
private JButton button3 = new JButton("");
private JButton button4 = new JButton("");
private JButton button5 = new JButton("");
private JButton button6 = new JButton("");
private JButton button7 = new JButton("");
private JButton button8 = new JButton("");
private JButton button9 = new JButton("");
private String letter = "";
private ImageIcon O = new ImageIcon("LET-O.jpg");
private ImageIcon X = new ImageIcon("LET-X.jpg");
private int count = 0;
private boolean win = false;
public TicTacToe(){
/*Create Window*/
window.setSize(300,300);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new GridLayout(3,3));
/*Add Buttons To The Window*/
window.add(button1);
window.add(button2);
window.add(button3);
window.add(button4);
window.add(button5);
window.add(button6);
window.add(button7);
window.add(button8);
window.add(button9);
/*Add The Action Listener To The Buttons*/
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
button7.addActionListener(this);
button8.addActionListener(this);
button9.addActionListener(this);
/*Make The Window Visible*/
window.setVisible(true);
public void actionPerformed(ActionEvent e) {
count++;
/*Calculate Who's Turn It Is*/
if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9)
X = new ImageIcon("LET-X.jpg");
else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10)
O = new ImageIcon("LET-O.jpg");
/*Display X's or O's on the buttons*/
if(e.getSource() == button1){
button1.setIcon();
button1.setEnabled(false);
} else if(e.getSource() == button2){
button2.setIcon();
button2.setEnabled(false);
} else if(e.getSource() == button3){
button3.setIcon();
button3.setEnabled(false);
} else if(e.getSource() == button4){
button4.setIcon();
button4.setEnabled(false);
} else if(e.getSource() == button5){
button5.setIcon();
button5.setEnabled(false);
} else if(e.getSource() == button6){
button6.setIcon();
button6.setEnabled(false);
} else if(e.getSource() == button7){
button7.setIcon();
button7.setEnabled(false);
} else if(e.getSource() == button8){
button8.setIcon();
button8.setEnabled(false);
} else if(e.getSource() == button9){
button9.setIcon();
button9.setEnabled(false);
//Determine who won
//horizontal wins
if( button1.getText() == button2.getText() && button2.getText() == button3.getText() && button1.getText() != ""){
win = true;
else if(button4.getText() == button5.getText() && button5.getText() == button6.getText() && button4.getText() != ""){
win = true;
else if(button7.getText() == button8.getText() && button8.getText() == button9.getText() && button7.getText() != ""){
win = true;
//vertical wins
else if(button1.getText() == button4.getText() && button4.getText() == button7.getText() && button1.getText() != ""){
win = true;
else if(button2.getText() == button5.getText() && button5.getText() == button8.getText() && button2.getText() != ""){
win = true;
else if(button3.getText() == button6.getText() && button6.getText() == button9.getText() && button3.getText() != ""){
win = true;
//diagonal wins
else if(button1.getText() == button5.getText() && button5.getText() == button9.getText() && button1.getText() != ""){
win = true;
else if(button3.getText() == button5.getText() && button5.getText() == button7.getText() && button3.getText() != ""){
win = true;
else {
win = false;
/*Show a dialog if someone wins or the game is tie*/
if(win == true)
JOptionPane.showMessageDialog(null, letter + " WINS!");
else if(count == 9 && win == false)
JOptionPane.showMessageDialog(null, "Tie Game!");
public static void main(String[] args)
new TicTacToe();
} -
Tic-tac-toe multithreaded server game
i have written the code for tic-tac-toe game partially.i am stuck at writing the code for "who is the winner"? and adding a button to start the new game ?please help me out to write the remaining?
iam unable to attach the code now;
Message was edited by:
vamshijupallyi have written the code for tic-tac-toe game
partially.i am stuck at writing the code for "who is
the winner"? and adding a button to start the new
game ?please help me out to write the remaining?That question is almost impossible to answer because you didn't provide two vital pieces of information.
1) What specific problems you're having.
2) Relevant code.
iam unable to attach the code now;So, you call the doctor on the phone, say, "I'm not feeling well. Please make me better. I can't come to your office or tell you anything about what's wrong with me now." -
I need help on a Tic Tac Toe game I am making for a class. I had finished a "2 Player" version and my instructor wants me to simulate a computer "AI" now. I cannot figure out what I'm doing wrong. The order of precedence is this:
1. X moves first (the player)
2. Computer moves to win.
3. If it can't win, it moves to block a win
4. If it can't block a win, it moves to the best possible spot to set up a win.
I think my problems are with several methods, but I cannot figure out what I'm doing wrong. Every time I look at my code, it just makes "sense". I think my problems could probably be found in 4 methods, setButtonText(), findOpen(), findBestOpen() and tempCheck(). I would like hints or maybe if I could get a second look at it for me.
public class VangTicTacToe extends javax.swing.JFrame {
private boolean isX;
private int turnCount;
private boolean gameWon;
private boolean isTemp;
/** Creates new form VangTicTacToe */
public VangTicTacToe() {
initComponents();
resetGame();
isX = true;
turnCount = 0;
private void checkWinner(String pressedButton){
//an multi-dimensional array of winning combinations
JButton[][] winningCombos = {{oneJButton, twoJButton,
threeJButton}, {oneJButton, fourJButton,
sevenJButton}, {oneJButton, fiveJButton, nineJButton},
{twoJButton, fiveJButton, eightJButton}, {threeJButton, sixJButton,
nineJButton}, {fourJButton, fiveJButton, sixJButton}, {sevenJButton,
eightJButton, nineJButton}, {sevenJButton, fiveJButton, threeJButton}};
String buttonPressed = pressedButton;
//loops and determines if any of the possible winning combinations have been
//met for X and displays output accordingly
for(JButton[] row : winningCombos){
for(JButton button : row){
if(button.getText().equals(buttonPressed)){
gameWon = true;
else{
gameWon = false;
break;
}//end inner for
if(gameWon == true && isTemp == false){
for(JButton button : row){
button.setBackground(Color.green);
}//end inner for
if(pressedButton.equals("X"))
outputJLabel.setText("Congratulations! Player 1 (\"X\") Wins!");
else
outputJLabel.setText("Sorry, computer wins.");
disableButtons();
break;
}//end if
else{
continue;//go to next outer loop and keep searching
}//end outer for
}//end method checkWinner
private void setButtonText(JButton buttonPressed){
if(isX == true){
buttonPressed.setText("X");
isX = false;
checkWinner("X");
outputJLabel.setText("Computer's turn");
isTemp = true; //sets isTemp to true so that the test is temporary
findOpen();//calls findOpen to start computer move
//disable the button so it cannot be pressed again
buttonPressed.setEnabled(false);
//increment the turn count number
turnCount++;
if(turnCount == 9)
outputJLabel.setText("Cats Game! You both are losers!");
}//end method setText
//the following 3 methods are for a computer move
//find next open space
private void findOpen(){
//array of buttons
JButton[] buttons = {oneJButton, twoJButton, threeJButton, fourJButton,
fiveJButton, sixJButton, sevenJButton, eightJButton, nineJButton};
//moves through array of buttons and looks for empty. If empty,
//it calls temporary select method.
for (int count = 0; count < buttons.length; count++){
if(buttons[count].getText().isEmpty())
tempCheck(buttons[count]);
}//end for loop
//if gameWon is false, call findBestButton to find the best open spot
if(gameWon == false){
findBestButton();
}//end method findOpen
private void findBestButton(){
//an multi-dimensional array of winning combinations
JButton[][] winningCombos = {{oneJButton, twoJButton,
threeJButton}, {oneJButton, fourJButton,
sevenJButton}, {oneJButton, fiveJButton, nineJButton},
{twoJButton, fiveJButton, eightJButton}, {threeJButton, sixJButton,
nineJButton}, {fourJButton, fiveJButton, sixJButton}, {sevenJButton,
eightJButton, nineJButton}, {sevenJButton, fiveJButton, threeJButton}};
boolean placeO = false;
int buttonCount = 0;
for(JButton[] row : winningCombos){
for(JButton button : row){
if(button.getText().equals("O") || button.getText().equals("")){
placeO = true;
else{
placeO = false;
buttonCount = 0;
if(placeO == true){
++buttonCount;
else{
break;
if(buttonCount == 3 && placeO == true){
button.setText("O");
}//end inner for
if(placeO == true){
isX = true;
break;
else{
continue;
}//end outer for
}//end method findBestButton
//checks if temp move would win
private void tempCheck(JButton tempButton){
//temporarily assigns "O" to a square and checks if it wins
tempButton.setText("O");
checkWinner("O");
if(gameWon == true){//if it wins then set temp to false and call
isTemp = false;//checkWinner();
checkWinner("0");
else{
tempButton.setText("");//else, set buttonText to empty
}//end if
if(gameWon == false){//if gameWon is false, check if "X" would win
tempButton.setText("X");
isTemp = true;
checkWinner("X");
if(gameWon == true){//if x is going to win,
tempButton.setText("O");//block the player from winning
else{
tempButton.setText("X");
}//end method tempCheck()
}touandcim wrote:
I click to make "X"'s (the player's move). X appears but O never does, although a button is highlighted. If I keep pressing the buttons, all X's appear until the last move, when an "O" appears.I don't know if it's the problem, but
checkWinner("0");looks suspicious. (2nd invocation in your tempCheck() method).
Your program seems awfully brittle. How would you do it if you had a 4 x 4 board? Or 5 x 5?
Also, your 'winningCombos' array is repeated everywhere it's used. There's no need for that; just make it an instance variable/constant.
Winston -
Help with Tic Tac Toe program....
I am writing a tic tac toe program, and I have already put the 9 boxes onto the screen so that it looks like the Tic Tac Toe board.
My first box looks something like this:
Rectangle2D.Double box1 = new Rectangle2D.Double(0, 0, 100, 100);
g2.draw(box1);
I want assign a number to the 9 boxes so it looks like this:
123
456
789
And I want to know how am I suppose to assign a number to a box, so that when the number is pressed it will put an "X" or "O"(depending on whose turn it is).
P.S. If you already made a Tic Tac Toe progaram can you post it so I will have an idea of what you did. thx.I'd hate to post the whole thing, but if you don't have access to it, here it goes:
* @(#)TicTacToe.java 1.6 01/12/03
* Copyright 2002 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.net.*;
import java.applet.*;
* A TicTacToe applet. A very simple, and mostly brain-dead
* implementation of your favorite game! <p>
* In this game a position is represented by a white and black
* bitmask. A bit is set if a position is ocupied. There are
* 9 squares so there are 1<<9 possible positions for each
* side. An array of 1<<9 booleans is created, it marks
* all the winning positions.
* @version 1.2, 13 Oct 1995
* @author Arthur van Hoff
* @modified 04/23/96 Jim Hagen : winning sounds
* @modified 02/10/98 Mike McCloskey : added destroy()
public
class TicTacToe extends Applet implements MouseListener {
* White's current position. The computer is white.
int white;
* Black's current position. The user is black.
int black;
* The squares in order of importance...
final static int moves[] = {4, 0, 2, 6, 8, 1, 3, 5, 7};
* The winning positions.
static boolean won[] = new boolean[1 << 9];
static final int DONE = (1 << 9) - 1;
static final int OK = 0;
static final int WIN = 1;
static final int LOSE = 2;
static final int STALEMATE = 3;
* Mark all positions with these bits set as winning.
static void isWon(int pos) {
for (int i = 0 ; i < DONE ; i++) {
if ((i & pos) == pos) {
won[i] = true;
* Initialize all winning positions.
static {
isWon((1 << 0) | (1 << 1) | (1 << 2));
isWon((1 << 3) | (1 << 4) | (1 << 5));
isWon((1 << 6) | (1 << 7) | (1 << 8));
isWon((1 << 0) | (1 << 3) | (1 << 6));
isWon((1 << 1) | (1 << 4) | (1 << 7));
isWon((1 << 2) | (1 << 5) | (1 << 8));
isWon((1 << 0) | (1 << 4) | (1 << 8));
isWon((1 << 2) | (1 << 4) | (1 << 6));
* Compute the best move for white.
* @return the square to take
int bestMove(int white, int black) {
int bestmove = -1;
loop:
for (int i = 0 ; i < 9 ; i++) {
int mw = moves;
if (((white & (1 << mw)) == 0) && ((black & (1 << mw)) == 0)) {
int pw = white | (1 << mw);
if (won[pw]) {
// white wins, take it!
return mw;
for (int mb = 0 ; mb < 9 ; mb++) {
if (((pw & (1 << mb)) == 0) && ((black & (1 << mb)) == 0)) {
int pb = black | (1 << mb);
if (won[pb]) {
// black wins, take another
continue loop;
// Neither white nor black can win in one move, this will do.
if (bestmove == -1) {
bestmove = mw;
if (bestmove != -1) {
return bestmove;
// No move is totally satisfactory, try the first one that is open
for (int i = 0 ; i < 9 ; i++) {
int mw = moves[i];
if (((white & (1 << mw)) == 0) && ((black & (1 << mw)) == 0)) {
return mw;
// No more moves
return -1;
* User move.
* @return true if legal
boolean yourMove(int m) {
if ((m < 0) || (m > 8)) {
return false;
if (((black | white) & (1 << m)) != 0) {
return false;
black |= 1 << m;
return true;
* Computer move.
* @return true if legal
boolean myMove() {
if ((black | white) == DONE) {
return false;
int best = bestMove(white, black);
white |= 1 << best;
return true;
* Figure what the status of the game is.
int status() {
if (won[white]) {
return WIN;
if (won[black]) {
return LOSE;
if ((black | white) == DONE) {
return STALEMATE;
return OK;
* Who goes first in the next game?
boolean first = true;
* The image for white.
Image notImage;
* The image for black.
Image crossImage;
* Initialize the applet. Resize and load images.
public void init() {
notImage = getImage(getCodeBase(), "images/not.gif");
crossImage = getImage(getCodeBase(), "images/cross.gif");
addMouseListener(this);
public void destroy() {
removeMouseListener(this);
* Paint it.
public void paint(Graphics g) {
Dimension d = getSize();
g.setColor(Color.black);
int xoff = d.width / 3;
int yoff = d.height / 3;
g.drawLine(xoff, 0, xoff, d.height);
g.drawLine(2*xoff, 0, 2*xoff, d.height);
g.drawLine(0, yoff, d.width, yoff);
g.drawLine(0, 2*yoff, d.width, 2*yoff);
int i = 0;
for (int r = 0 ; r < 3 ; r++) {
for (int c = 0 ; c < 3 ; c++, i++) {
if ((white & (1 << i)) != 0) {
g.drawImage(notImage, c*xoff + 1, r*yoff + 1, this);
} else if ((black & (1 << i)) != 0) {
g.drawImage(crossImage, c*xoff + 1, r*yoff + 1, this);
* The user has clicked in the applet. Figure out where
* and see if a legal move is possible. If it is a legal
* move, respond with a legal move (if possible).
public void mouseReleased(MouseEvent e) {
int x = e.getX();
int y = e.getY();
switch (status()) {
case WIN:
case LOSE:
case STALEMATE:
play(getCodeBase(), "audio/return.au");
white = black = 0;
if (first) {
white |= 1 << (int)(Math.random() * 9);
first = !first;
repaint();
return;
// Figure out the row/column
Dimension d = getSize();
int c = (x * 3) / d.width;
int r = (y * 3) / d.height;
if (yourMove(c + r * 3)) {
repaint();
switch (status()) {
case WIN:
play(getCodeBase(), "audio/yahoo1.au");
break;
case LOSE:
play(getCodeBase(), "audio/yahoo2.au");
break;
case STALEMATE:
break;
default:
if (myMove()) {
repaint();
switch (status()) {
case WIN:
play(getCodeBase(), "audio/yahoo1.au");
break;
case LOSE:
play(getCodeBase(), "audio/yahoo2.au");
break;
case STALEMATE:
break;
default:
play(getCodeBase(), "audio/ding.au");
} else {
play(getCodeBase(), "audio/beep.au");
} else {
play(getCodeBase(), "audio/beep.au");
public void mousePressed(MouseEvent e) {
public void mouseClicked(MouseEvent e) {
public void mouseEntered(MouseEvent e) {
public void mouseExited(MouseEvent e) {
public String getAppletInfo() {
return "TicTacToe by Arthur van Hoff"; -
hey all,
i am having problems creating a tic tac toe program. the program should create a board with NxN spaces, where N is obtained through user input.
I created a fully working program that does a 3x3 board, checks for diagonal, vertical, horizontal wins and also allows 1 vs computer or 2 players play, but i am struggling with the NxN board.
here is the code of what i have, can anyone point me in the right direction? all help is appreciated! please keep it simple as possible as i am just learning java!!
import java.util.Scanner;
import java.util.Random;
public class NoughtsCrosses
static final String PLAYER1 = "X";
static final String PLAYER2 = "O";
static final String EMPTY = "�";
static String[][] board = new String[][];
static int turn = 0;
static public void makeBoard(int boardSize)
for (int x = 0; x < boardSize; x++)
for (int y = 0; y < boardSize; y++)
board[x][y] = new String(EMPTY);
static public void playComputer()
Scanner scan = new Scanner(System.in);
Random generator = new Random();
int move;
printBoard();
System.out.println();
do {
if(turn%2 == 0)
System.out.println("Player 1, place your X");
System.out.print("Make a Move: ");
move = scan.nextInt();
else
System.out.print("Computer, place your O: ");
move = generator.nextInt(10);
System.out.println(move);
getMove(move);
System.out.println();
printBoard();
System.out.println();
} while(winner().equals(EMPTY) && turn < 9);
if (winner().equals(EMPTY))
System.out.println("The Game s a DRAW!");
else
System.out.println("PLAYER " + ((turn - 1) % 2 + 1) + " WINS!!");
static public void playHuman()
Scanner scan = new Scanner(System.in);
printBoard();
System.out.println();
do {
if(turn%2 == 0)
System.out.println("Player 1, place your X");
else
System.out.println("Player 2, place your O");
System.out.print("Make a Move: ");
int move = scan.nextInt();
getMove(move);
System.out.println();
printBoard();
System.out.println();
} while(winner().equals(EMPTY) && turn < 9);
if (winner().equals(EMPTY))
System.out.println("The Game s a DRAW!");
else
System.out.println("PLAYER " + ((turn - 1) % 2 + 1) + " WINS!!");
static public void getMove(int move)
int row = move/3;
int col = move%3;
if (board[row][col].equals(EMPTY))
board[row][col] = (turn % 2 == 0 ? PLAYER1 : PLAYER2);
turn++;
else
System.out.println("OCCUPIED FIELD! TRY AGAIN!");
static public void printBoard()
for (int x = 0; x < 3; x++)
for (int y = 0; y < 3; y++)
if(y == 0)
System.out.print(" ");
System.out.print(board[x][y]);
if(y < 2)
System.out.print(" | ");
System.out.println();
if(x < 2)
System.out.println(" ---|---|---");
static public String winner()
for (int i = 0; i < board.length; i++)
/** check horizontally */
if (board[0].equals(board[i][1]) && board[i][0].equals(board[i][2]))
if (!board[i][0].equals(EMPTY))
return board[i][0];
/** check vertically */
if (board[0][i].equals(board[1][i]) && board[0][i].equals(board[2][i]))
if (!board[0][i].equals(EMPTY))
return board[0][i];
/** check diagonally */
if (board[0][0].equals(board[1][1]) && board[0][0].equals(board[2][2]))
if (!board[0][0].equals(EMPTY))
return board[0][0];
if (board[0][2].equals(board[1][1]) && board[0][2].equals(board[2][0]))
if (!board[0][2].equals(EMPTY))
return board[0][2];
return EMPTY;
static public void main(String[] args)
Scanner scan = new Scanner(System.in);
int boardSize;
System.out.println();
System.out.println("Welcome to Tic Tac Toe!");
System.out.println("�����������������������");
System.out.println("How big should the board be?");
boardSize = scan.nextInt();
makeBoard(boardSize);
int players = 0;
do{
System.out.println("How many players?");
System.out.println("1 (vs. Computer) or 2 (vs. another player)?");
players = scan.nextInt();
System.out.println();
}while(players < 1 || players > 2);
if (players == 1)
playComputer();
else
playHuman();well, i figured out how to do it all, thanks to the TREMENDOUS amount of help here...lol...
i just have one more (minor problem)...
i can't get an algorithm working to see if the two diagonals are occupied by x's or o's (see if someone won diagonally)
to check horizontally & vertically on an NxN board, i use following code:
int count = 0;
/** check horizontally */
for (int i = 0; i < myBoard.length; i++)
for (int j = 0; j < myBoard.length-1; j++)
if (myBoard[0].equals(myBoard[i][j+1]) && !myBoard[i][0].equals(EMPTY))
count++;
if (count >= myBoard.length-1)
return myBoard[i][0];
count = 0;
count = 0;
/** check vertically */
for (int i = 0; i < myBoard.length; i++)
for (int j = 0; j < myBoard.length-1; j++)
if (myBoard[j][0].equals(myBoard[j+1][i]) && !myBoard[0][i].equals(EMPTY))
count++;
if (count >= myBoard.length-1)
return myBoard[0][i];
count = 0;
now i was messing around ALOT and couldn't figure out how to get the diagonals showing! this is what i came up with:
count =0;
for (int j = 1; j < myBoard.length; j++)
if (myBoard[0][0].equals(myBoard[j][j]) && !myBoard[0][0].equals(EMPTY))
count++;
System.out.println(count);
if (count >= myBoard.length)
return myBoard[0][0];
count = 0;
for (int j = myBoard.length-1; j >= 0; j--)
if (myBoard[0][myBoard.length-1].equals(myBoard[j][j]) && !myBoard[0][myBoard.length-1].equals(EMPTY))
count++;
System.out.println(count);
if (count >= myBoard.length)
return myBoard[0][myBoard.length-1];
count = 0; -
Gui tris (tic tac toe)
Hi,
i am trying to create the tris game in java (maybe you know this game as tic tac toe). I created windows and the alghoritm to play. But now i have the problem to create the board. My idea is to create a board with nine clickable cells, the player clicks on the cell he wants (if it's free), then the computer plays and so on...but i don't have the knowledges of making complex graphic things in java. How can I do?ok, and how can i manage the player's click?MouseListener on the JLabel.
remember
also that when the player clicks, the program must
draw a symbol (x or o depending from the choice of
player). how can i do all this things? For a noob
like me this is very difficultRead the tutorials. I'm not going to explain to you how to create your app if you can read it up yourself. -
Powershell tic tac toe programming
Hey guys, I've got a little question, I'm working on a little game since some time now, and I have a little problem. I need to get the color of a button. Let me explain:
Instead of crosses and circles, I'm using colors for my tic tac toe (or Noughts and crosses dunno how you call it) and I need to get the color of the buttons so I can program the computer to have his plays based on mine, have you got any idea?Try this. It works just fine:
[System.Windows.Forms.Application]::EnableVisualStyles()
$form1 = New-Object 'System.Windows.Forms.Form'
$button1 = New-Object 'System.Windows.Forms.Button'
$buttonOK = New-Object 'System.Windows.Forms.Button'
$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'
#endregion Generated Form Objects
$button1_Click={
if($button1.BackColor -eq 'red'){$button1.BackColor='blue'}else{$button1.BackColor='red'}
$Form_StateCorrection_Load=
#Correct the initial state of the form to prevent the .Net maximized form issue
$form1.WindowState = $InitialFormWindowState
$Form_Cleanup_FormClosed=
#Remove all event handlers from the controls
try
$button1.remove_Click($button1_Click)
$form1.remove_Load($FormEvent_Load)
$form1.remove_Load($Form_StateCorrection_Load)
$form1.remove_FormClosed($Form_Cleanup_FormClosed)
catch [Exception]
$form1.SuspendLayout()
$form1.Controls.Add($button1)
$form1.Controls.Add($buttonOK)
$form1.AcceptButton = $buttonOK
$form1.ClientSize = '438, 262'
$form1.FormBorderStyle = 'FixedDialog'
$form1.MaximizeBox = $False
$form1.MinimizeBox = $False
$form1.Name = "form1"
$form1.StartPosition = 'CenterScreen'
$form1.Text = "Form"
# button1
$button1.BackColor = 'Red'
$button1.Location = '197, 55'
$button1.Name = "button1"
$button1.Size = '75, 23'
$button1.TabIndex = 1
$button1.Text = "button1"
$button1.UseVisualStyleBackColor = $False
$button1.add_Click($button1_Click)
# buttonOK
$buttonOK.Anchor = 'Bottom, Right'
$buttonOK.DialogResult = 'OK'
$buttonOK.Location = '351, 227'
$buttonOK.Name = "buttonOK"
$buttonOK.Size = '75, 23'
$buttonOK.TabIndex = 0
$buttonOK.Text = "&OK"
$buttonOK.UseVisualStyleBackColor = $True
$form1.ResumeLayout()
#endregion Generated Form Code
$InitialFormWindowState = $form1.WindowState
$form1.add_Load($Form_StateCorrection_Load)
#Clean up the control events
$form1.add_FormClosed($Form_Cleanup_FormClosed)
$form1.ShowDialog()
¯\_(ツ)_/¯ -
Need help/advice with tic tac toe game
Hello all. I am working on a tic tac toe game. I was able to program the first 4 moves fine, but ame having trouble with moves 5 and 6 for reasons that are unknown to me. Everything complies fine, its just that the move is displayed int the wrong space (B1) instead of in B2 or B3. Also the move that is supposed to be in A1 disapppears when B2 or B3 is clicked. Also, I need advice as to how to keep the prior moves from being over written.
At this point I ahve gone over the code on-screen, printed it out, and stared at my drawings... and I'm not having any luck. I'm sure its a small, stupid thing that I'm missing, that anyone else would easily catch. Once again, thx for all your help.
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
public class game3 extends Applet implements MouseListener{
String move = "";
boolean player1 = true;
String gameBoard[][] = new String [3][3];
public void spaceA1(Graphics g){ // MOVE IS A1
if(gameBoard[0][0] == "X")
g.drawString("X",65,65);
if(gameBoard[0][0] == "O")
g.drawString("O",65,65);
public void spaceA2(Graphics g){ // MOVE IS A2
if(gameBoard[0][1] == "X")
g.drawString("X",95,65);
if(gameBoard[0][1] == "O")
g.drawString("O",95,65);
public void spaceA3(Graphics g){ // MOVE IS A3
if(gameBoard[0][2] == "X")
g.drawString("X",125,65);
if(gameBoard[0][2] == "O")
g.drawString("O",125,65);
public void spaceB1(Graphics g){ // MOVE IS B1
if(gameBoard[1][0] == "X")
g.drawString("X",65,95);
if(gameBoard[1][0] == "O")
g.drawString("O",65,95);
public void spaceB2(Graphics g){ // MOVE IS B2
if(gameBoard[1][1] == "X")
g.drawString("X",95,95);
if(gameBoard[1][1] == "O")
g.drawString("O",95,95);
public void spaceB3(Graphics g){ // MOVE IS B3
if(gameBoard[1][2] == "X")
g.drawString("X",125,95);
if(gameBoard[1][2] == "O")
g.drawString("O",125,95);
public void spaceC1(Graphics g){ // MOVE IS C1
if(gameBoard[2][0] == "X")
g.drawString("X",65,125);
if(gameBoard[2][0] == "O")
g.drawString("O",65,125);
public void spaceC2(Graphics g){ // MOVE IS C2
if(gameBoard[2][1] == "X")
g.drawString("X",95,125);
if(gameBoard[2][1] == "O")
g.drawString("O",95,125);
public void spaceC3(Graphics g){ // MOVE IS C3
if(gameBoard[2][2] == "X")
g.drawString("X",125,125);
if(gameBoard[2][2] == "O")
g.drawString("O",125,125);
public void init(){
addMouseListener(this);
public void paint(Graphics g){
g.drawString(" 1 2 3", 50,45);
g.drawString("A",40,70);
g.drawString("B",40,100);
g.drawString("C",40,130);
// first row of boxes
g.drawRect(50,50,30,30);
g.drawRect(80,50,30,30);
g.drawRect(110,50,30,30);
// second row of boxes
g.drawRect(50,80,30,30);
g.drawRect(80,80,30,30);
g.drawRect(110,80,30,30);
// third row of boxes
g.drawRect(50,110,30,30);
g.drawRect(80,110,30,30);
g.drawRect(110,110,30,30);
if(move == "A1"){
spaceA2(g);
spaceA3(g);
spaceB1(g);
spaceB2(g);
spaceB3(g);
spaceC1(g);
spaceC2(g);
spaceC3(g);
if(player1){
gameBoard[0][0] = "X";
g.drawString("X",65,65);
player1 = false;
return;
else
if(!player1){
gameBoard[0][0] = "O";
g.drawString("O",65,65);
player1 = true;
return;
} // end of A1
else
if(move == "A2"){
spaceA1(g);
spaceA3(g);
spaceB1(g);
spaceB2(g);
spaceB3(g);
spaceC1(g);
spaceC2(g);
spaceC3(g);
if(player1){
gameBoard[0][1] = "X";
g.drawString("X",95,65);
player1 = false;
return;
else
if(!player1){
gameBoard[0][1] = "O";
g.drawString("O",95,65);
player1 = true;
return;
} // end of A2
else
if(move == "A3"){
spaceA1(g);
spaceA2(g);
spaceB1(g);
spaceB2(g);
spaceB3(g);
spaceC1(g);
spaceC2(g);
spaceC3(g);
if(player1){
gameBoard[0][2] = "X";
g.drawString("X",125,65);
player1 = false;
return;
else
if(!player1){
gameBoard[0][2] = "O";
g.drawString("O",125,65);
player1 = true;
return;
} // end of A3
else
if(move == "B1")
spaceA1(g);
spaceA2(g);
spaceA3(g);
spaceB2(g);
spaceB3(g);
spaceC1(g);
spaceC2(g);
spaceC3(g);
if(player1){
gameBoard[1][0] = "X";
g.drawString("X",65,95);
player1 = false;
return;
else
if(!player1){
gameBoard[1][0] = "O";
g.drawString("O",65,95);
player1 = true;
return;
} // end of B1
else
if(move == "B2"){
spaceA1(g);
spaceA2(g);
spaceA3(g);
spaceB1(g);
spaceB3(g);
spaceC1(g);
spaceC2(g);
spaceC3(g);
if(player1){
gameBoard[1][1] = "X";
g.drawString("X",95,95);
player1 = false;
return;
else
if(!player1){
gameBoard[1][1] = "O";
g.drawString("O",95,95);
player1 = true;
return;
} // end of B2
else
if(move == "B3"){
spaceA1(g);
spaceA2(g);
spaceA3(g);
spaceB1(g);
spaceB2(g);
spaceC1(g);
spaceC2(g);
spaceC3(g);
if(player1){
gameBoard[1][2] = "X";
g.drawString("X",125,95);
player1 = false;
return;
else
if(!player1){
gameBoard[1][2] = "O";
g.drawString("O",125,95);
player1 = true;
return;
}// end of B3
}// end of graphics
public void mouseReleased(MouseEvent me){}
public void mousePressed(MouseEvent me){}
public void mouseDragged(MouseEvent me){}
public void mouseEntered(MouseEvent me){}
public void mouseExited(MouseEvent me){}
public void mouseClicked(MouseEvent me){
int x = me.getX();
int y = me.getY();
if((x >=51) && (x<= 79) && (y >= 51) && (y <= 79)) //MOVE IS A1
move = "A1";
else
if((x >=81) && (x<=109) && (y >=51) && (y <= 79)) //MOVE IS A2
move = "A2";
else
if((x >=111) && (x<=139) && (y >=51) && (y <= 79)) //MOVE IS A3
move = "A3";
else
if((x >=51) && (x<= 79) && (y >= 81) && (y <= 109)) //MOVE IS B1
move = "B1";
else
if((x >=81) && (x<=109) && (y >=81) && (y <= 109)) //MOVE IS B2
move = "B2";
else
if((x >=111) && (x<=139) && (y >=81) && (y <= 109)) //MOVE IS B3
move = "B3";
repaint();
//<applet code = "game3.class" height =300 width=300> </applet>writing a tic-tac-toe is harder than it sounds.. i wrote one last year in my computer science class.. i have it on my website, if you want to look at code. i wrote it in c++, but the logic is all that matters :)
btw-last year, i wasnt too good of an OOP programmer, so the program is procedurely written. heres the url:
http://www.angelfire.com/blues/smb
also, to tell if a box is already taken, you can just add an if statement: if ( gameBoard[selX][selY] == null ) //not taken, fill box:many people resort to a boolean matrix of the same idea, but with booleans that store which boxes are taken. i prefer the way above, saves code, memory, and makes it more understandable.
hope it helps. -
Tic - Tac - Toe Game - Please Help!
Hi everyone, I am attempting to create a tic - tac - toe game (O's & X's).
I would like there to be two playing modes to the game, the first mode will be one player where the user plays against the computer. The second mode is a two - player game, where two users play, one being X's and the other being O's.
Can anyone help me get started with this game, I know there is source code on the internet but I would rather not use this as I would like to learn as I create the game.
Thanks Everyoneits amazing how much code a simple game like tic-tac-toe can require.. well, only if you program the AI of the computer.. i wrote one in c++ last year, for my computer science class, and the whole class had trouble with it, mainly the AI.. a suggestion to you: write it in an object-oriented manner. i ended up writing it procedurally and in the end, it looked very bad, but it worked!
i would prob. setup some objects like: Board (the 3x3 grid), Mark (a user mark, such as an "x" or an "o")..
i dunno.. hope that helps some, if you need help with the AI at all.. i do have the tic-tac-toe program i wrote on my website (http://www.angelfire.com/blues/smb/ ) in the C++ section.. i used a graphics package, but the logic is all there and the code is well commented.
anyway, ill talk to ya later, good luck,
Steven Berardi -
Well I'm getting ready for my second semester of Java programing and I figured I would try and get back in the swing (no pun intended) of things by creating a simple tic tac toe game. I was able to make a two player game with in a matter of hours so I figured I would try and make a one player game with AI and thats where im having some issues. Here is my code for two person tic tac toe
package mytictactoe;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TicTacToeV2 implements ActionListener {
/*Instance Variables*/
private int[][] winCombinations = new int[][] {
{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, //horizontal wins
{1, 4, 7}, {2, 5, 8}, {3, 6, 9}, //virticle wins
{1, 5, 9}, {3, 5, 7} //diagonal wins
private JFrame window = new JFrame("Tic-Tac-Toe");
private JButton buttons[] = new JButton[10];
private int count = 0;
private String letter = "";
private boolean win = false;
public TicTacToeV2(){
/*Create Window*/
window.setSize(300,300);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new GridLayout(3,3));
/*Add Buttons To The Window*/
for(int i=1; i<=9; i++){
buttons[i] = new JButton();
window.add(buttons);
buttons[i].addActionListener(this);
/*Make The Window Visible*/
window.setVisible(true);
public void actionPerformed(ActionEvent a) {
count++;
/*Calculate whose turn it is*/
if(count % 2 == 0){
letter = "O";
} else {
letter = "X";
/*Write the letter to the button and deactivate it*/
for(int i=1; i<=9; i++){
if(a.getSource() == buttons[i]){
buttons[i].setText(letter);
buttons[i].setEnabled(false);
/*Determine who won*/
for(int i=0; i<=7; i++){
if( buttons[winCombinations[i][0]].getText() == buttons[winCombinations[i][1]].getText() &&
buttons[winCombinations[i][1]].getText() == buttons[winCombinations[i][2]].getText() &&
buttons[winCombinations[i][0]].getText() != ""){
win = true;
/*Show a dialog when game is over*/
if(win == true){
JOptionPane.showMessageDialog(null, letter + " wins the game!");
System.exit(0);
} else if(count == 9 && win == false){
JOptionPane.showMessageDialog(null, "The game was tie!");
System.exit(0);
public static void main(String[] args){
TicTacToeV2 starter = new TicTacToeV2();
Now for my program with AI I'm essentially using the same code and just for clarity I removed all the code that determines who won (as it isnt needed to get the AI to work) This is what I have so far
package mytictactoe;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class TicTacToeV3 implements ActionListener {
/*Instance Variables*/
private JFrame window = new JFrame("Tic-Tac-Toe");
private JButton buttons[] = new JButton[10];
private int count = 0;
public TicTacToeV3(){
/*Create Window*/
window.setSize(300,300);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new GridLayout(3,3));
/*Add Buttons To The Window*/
for(int i = 1; i<=9; i++){
buttons[i] = new JButton();
window.add(buttons);
buttons[i].addActionListener(this);
/*Make The Window Visible*/
window.setVisible(true);
public void actionPerformed(ActionEvent a) {
count++;
/*Write the letter to the button and deactivate it*/
for(int i = 1; i<= 9; i++){
if(a.getSource() == buttons[i]){
buttons[i].setText("X");
buttons[i].setEnabled(false);
AI();
public void AI(){
Random x = new Random();
int y = 1 + x.nextInt(9);
if(buttons[y].getText() == "X" || buttons[y].getText() == "O" ){
AI();
} else {
buttons[y].setText("O");
buttons[y].setEnabled(false);
public static void main(String[] args){
new TicTacToeV3();
It kind of works because each time i choose a box the "computer" also chooses one, but since it is so random the chances the computer wins is very limited. I then tried to do something like this in the AI() method and it seems to be on the right track but once one of the if's are satisfied the all the AI logic stops
public void AI(){
//horizontal AI defencive code
if(buttons[1].getText().equals(buttons[2].getText()) && buttons[1].getText() != ""){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if(buttons[2].getText().equals(buttons[3].getText()) && buttons[2].getText() != ""){
buttons[1].setText("O");
buttons[1].setEnabled(false);
} else if(buttons[4].getText().equals(buttons[5].getText()) && buttons[4].getText() != ""){
buttons[6].setText("O");
buttons[6].setEnabled(false);
} else if(buttons[5].getText().equals(buttons[6].getText()) && buttons[5].getText() != ""){
buttons[4].setText("O");
buttons[4].setEnabled(false);
} else if(buttons[7].getText().equals(buttons[8].getText()) && buttons[7].getText() != ""){
buttons[9].setText("O");
buttons[9].setEnabled(false);
} else if(buttons[8].getText().equals(buttons[9].getText()) && buttons[8].getText() != ""){
buttons[7].setText("O");
buttons[7].setEnabled(false);
} else {
Random x = new Random();
int y = 1 + x.nextInt(9);
if(buttons[y].getText() == "X" || buttons[y].getText() == "O" ){
AI();
} else {
buttons[y].setText("O");
buttons[y].setEnabled(false);
}And basically what that does is it checks if I have two X's in a row horizontally, If I do it will place an O in the box preventing me from getting three in a row (only in horizontal rows). Of course I would iterate this over and over for all possible combinations of offensive moves and defensive moves and probably do it using a for loop but this is just some scratch code I threw together to show you my thoughts. And again my problem is once one of the conditions are satisfied it never checks the conditions again and I'm not sure why that is...
So I'm looking for some ideas and/or some pseudo code to help me out a little.
ThanksWell I did this and its a step closer to working but there is another bug and all this logic is hurting my head. Again lets say my grid is numbered like this
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
If I go 1, the computer will randomly pick a square thats not set. Lets say the computer picks 4. Now I pick 5 and the computer picks 9 because I would earn 3 in a row diagonally. Then I pick 2 and I can now win three in a row 2-5-8 or 1-2-3. The computer picks 3 because that logic is earlier in the code. BUT when I press 8 to to take the win, but the computer cheats and labels my button thats supposed to be an X as an O, so it should look like this:
X | X | O
O | X | 6
7 | X | O
but it does this
X | X | O
O | X | 6
7 | O | O
Here is the AI logic part (its mostly repetitive)
public void AI(){
/*Defencive Moves*/
//horizontal defencive possabilities
if((buttons[1].getText() == "X")&&
(buttons[2].getText() == "X")&&
(buttons[3].getText() != "O")){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if((buttons[2].getText() == "X")&&
(buttons[3].getText() == "X")&&
(buttons[1].getText() != "O")){
buttons[1].setText("O");
buttons[1].setEnabled(false);
} else if((buttons[4].getText() == "X")&&
(buttons[5].getText() == "X")&&
(buttons[6].getText() != "O")){
buttons[6].setText("O");
buttons[6].setEnabled(false);
} else if((buttons[5].getText() == "X")&&
(buttons[6].getText() == "X")&&
(buttons[4].getText() != "O")){
buttons[4].setText("O");
buttons[4].setEnabled(false);
} else if((buttons[7].getText() == "X")&&
(buttons[8].getText() == "X")&&
(buttons[9].getText() != "O")){
buttons[9].setText("O");
buttons[9].setEnabled(false);
} else if((buttons[8].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[7].getText() != "O")){
buttons[7].setText("O");
buttons[7].setEnabled(false);
} else if((buttons[1].getText() == "X")&&
(buttons[3].getText() == "X")&&
(buttons[2].getText() != "O")){
buttons[2].setText("O");
buttons[2].setEnabled(false);
} else if((buttons[4].getText() == "X")&&
(buttons[6].getText() == "X")&&
(buttons[5].getText() != "O")){
buttons[5].setText("O");
buttons[5].setEnabled(false);
} else if((buttons[7].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[8].getText() != "O")){
buttons[8].setText("O");
buttons[8].setEnabled(false);
//horizontal virticle possabilities
else if((buttons[1].getText() == "X")&&
(buttons[4].getText() == "X")&&
(buttons[7].getText() != "O")){
buttons[7].setText("O");
buttons[7].setEnabled(false);
} else if((buttons[7].getText() == "X")&&
(buttons[4].getText() == "X")&&
(buttons[1].getText() != "O")){
buttons[1].setText("O");
buttons[1].setEnabled(false);
} else if((buttons[1].getText() == "X")&&
(buttons[7].getText() == "X")&&
(buttons[4].getText() != "O")){
buttons[4].setText("O");
buttons[4].setEnabled(false);
} else if((buttons[2].getText() == "X")&&
(buttons[5].getText() == "X")&&
(buttons[8].getText() != "O")){
buttons[8].setText("O");
buttons[8].setEnabled(false);
} else if((buttons[5].getText() == "X")&&
(buttons[8].getText() == "X")&&
(buttons[2].getText() != "O")){
buttons[2].setText("O");
buttons[2].setEnabled(false);
} else if((buttons[2].getText() == "X")&&
(buttons[8].getText() == "X")&&
(buttons[5].getText() != "O")){
buttons[5].setText("O");
buttons[5].setEnabled(false);
} else if((buttons[3].getText() == "X")&&
(buttons[6].getText() == "X")&&
(buttons[9].getText() != "O")){
buttons[9].setText("O");
buttons[9].setEnabled(false);
} else if((buttons[6].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[3].getText() != "O")){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if((buttons[3].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[6].getText() != "O")){
buttons[6].setText("O");
buttons[6].setEnabled(false);
//diagonal
else if((buttons[1].getText() == "X")&&
(buttons[5].getText() == "X")&&
(buttons[9].getText() != "O")){
buttons[9].setText("O");
buttons[9].setEnabled(false);
} else if((buttons[5].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[9].getText() != "O")){
buttons[1].setText("O");
buttons[1].setEnabled(false);
} else if((buttons[1].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[5].getText() != "O")){
buttons[5].setText("O");
buttons[5].setEnabled(false);
} else if((buttons[3].getText() == "X")&&
(buttons[5].getText() == "X")&&
(buttons[7].getText() != "O")){
buttons[7].setText("O");
buttons[7].setEnabled(false);
} else if((buttons[5].getText() == "X")&&
(buttons[7].getText() == "X")&&
(buttons[3].getText() != "O")){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if((buttons[3].getText() == "X")&&
(buttons[7].getText() == "X")&&
(buttons[5].getText() != "O")){
buttons[5].setText("O");
buttons[5].setEnabled(false);
//random move
else {
RandomMove();
public void RandomMove(){
Random x = new Random();
int y = 1 + x.nextInt(9);
if(buttons[y].getText() == "X" || buttons[y].getText() == "O" ){
AI();
went = true;
} else {
buttons[y].setText("O");
buttons[y].setEnabled(false);
went = true;
}Here is the entire code if you want to try it and compile it to see what im talking about in real time:
package mytictactoe;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class TicTacToeV4 implements ActionListener {
/*Instance Variables*/
private JFrame window = new JFrame("Tic-Tac-Toe");
private JButton buttons[] = new JButton[10];
private int count = 0;
private boolean went = false;
public TicTacToeV4(){
/*Create Window*/
window.setSize(300,300);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new GridLayout(3,3));
/*Add Buttons To The Window*/
for(int i = 1; i<=9; i++){
buttons[i] = new JButton();
window.add(buttons);
buttons[i].addActionListener(this);
/*Make The Window Visible*/
window.setVisible(true);
public void actionPerformed(ActionEvent a) {
count++;
/*Write the letter to the button and deactivate it*/
for(int i = 1; i<= 9; i++){
if(a.getSource() == buttons[i]){
buttons[i].setText("X");
buttons[i].setEnabled(false);
AI();
public void AI(){
/*Defencive Moves*/
//horizontal defencive possabilities
if((buttons[1].getText() == "X")&&
(buttons[2].getText() == "X")&&
(buttons[3].getText() != "O")){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if((buttons[2].getText() == "X")&&
(buttons[3].getText() == "X")&&
(buttons[1].getText() != "O")){
buttons[1].setText("O");
buttons[1].setEnabled(false);
} else if((buttons[4].getText() == "X")&&
(buttons[5].getText() == "X")&&
(buttons[6].getText() != "O")){
buttons[6].setText("O");
buttons[6].setEnabled(false);
} else if((buttons[5].getText() == "X")&&
(buttons[6].getText() == "X")&&
(buttons[4].getText() != "O")){
buttons[4].setText("O");
buttons[4].setEnabled(false);
} else if((buttons[7].getText() == "X")&&
(buttons[8].getText() == "X")&&
(buttons[9].getText() != "O")){
buttons[9].setText("O");
buttons[9].setEnabled(false);
} else if((buttons[8].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[7].getText() != "O")){
buttons[7].setText("O");
buttons[7].setEnabled(false);
} else if((buttons[1].getText() == "X")&&
(buttons[3].getText() == "X")&&
(buttons[2].getText() != "O")){
buttons[2].setText("O");
buttons[2].setEnabled(false);
} else if((buttons[4].getText() == "X")&&
(buttons[6].getText() == "X")&&
(buttons[5].getText() != "O")){
buttons[5].setText("O");
buttons[5].setEnabled(false);
} else if((buttons[7].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[8].getText() != "O")){
buttons[8].setText("O");
buttons[8].setEnabled(false);
//horizontal virticle possabilities
else if((buttons[1].getText() == "X")&&
(buttons[4].getText() == "X")&&
(buttons[7].getText() != "O")){
buttons[7].setText("O");
buttons[7].setEnabled(false);
} else if((buttons[7].getText() == "X")&&
(buttons[4].getText() == "X")&&
(buttons[1].getText() != "O")){
buttons[1].setText("O");
buttons[1].setEnabled(false);
} else if((buttons[1].getText() == "X")&&
(buttons[7].getText() == "X")&&
(buttons[4].getText() != "O")){
buttons[4].setText("O");
buttons[4].setEnabled(false);
} else if((buttons[2].getText() == "X")&&
(buttons[5].getText() == "X")&&
(buttons[8].getText() != "O")){
buttons[8].setText("O");
buttons[8].setEnabled(false);
} else if((buttons[5].getText() == "X")&&
(buttons[8].getText() == "X")&&
(buttons[2].getText() != "O")){
buttons[2].setText("O");
buttons[2].setEnabled(false);
} else if((buttons[2].getText() == "X")&&
(buttons[8].getText() == "X")&&
(buttons[5].getText() != "O")){
buttons[5].setText("O");
buttons[5].setEnabled(false);
} else if((buttons[3].getText() == "X")&&
(buttons[6].getText() == "X")&&
(buttons[9].getText() != "O")){
buttons[9].setText("O");
buttons[9].setEnabled(false);
} else if((buttons[6].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[3].getText() != "O")){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if((buttons[3].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[6].getText() != "O")){
buttons[6].setText("O");
buttons[6].setEnabled(false);
//diagonal
else if((buttons[1].getText() == "X")&&
(buttons[5].getText() == "X")&&
(buttons[9].getText() != "O")){
buttons[9].setText("O");
buttons[9].setEnabled(false);
} else if((buttons[5].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[9].getText() != "O")){
buttons[1].setText("O");
buttons[1].setEnabled(false);
} else if((buttons[1].getText() == "X")&&
(buttons[9].getText() == "X")&&
(buttons[5].getText() != "O")){
buttons[5].setText("O");
buttons[5].setEnabled(false);
} else if((buttons[3].getText() == "X")&&
(buttons[5].getText() == "X")&&
(buttons[7].getText() != "O")){
buttons[7].setText("O");
buttons[7].setEnabled(false);
} else if((buttons[5].getText() == "X")&&
(buttons[7].getText() == "X")&&
(buttons[3].getText() != "O")){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if((buttons[3].getText() == "X")&&
(buttons[7].getText() == "X")&&
(buttons[5].getText() != "O")){
buttons[5].setText("O");
buttons[5].setEnabled(false);
//random move
else {
RandomMove();
public void RandomMove(){
Random x = new Random();
int y = 1 + x.nextInt(9);
if(buttons[y].getText() == "X" || buttons[y].getText() == "O" ){
AI();
went = true;
} else {
buttons[y].setText("O");
buttons[y].setEnabled(false);
went = true;
public static void main(String[] args){
new TicTacToeV4();
What am I doing wrong? -
Tic Tac Toe....HELP ME!!
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.Random;
public class TicTacToe extends JFrame {
private Board board;
static final char BLANK=' ', O='O', X='X';
private char position[]={ // Board position (BLANK, O, or X)
BLANK, BLANK, BLANK,
BLANK, BLANK, BLANK,
BLANK, BLANK, BLANK};
private int wins=0, losses=0, draws=0; // game count by user
// Start the game
public static void main(String args[]) {
new TicTacToe();
// Constructor of TicTacToe: Initialize settings
public TicTacToe() {
super("Tic Tac Toe");
add(board=new Board(), BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 500);
setVisible(true);
// Board is what actually plays and displays the game
private class Board extends JPanel implements MouseListener {
// Constructor of Board
public Board() {
addMouseListener(this);
// Redraw the board
public void paintComponent(Graphics g) {
super.paintComponent(g);
int w=getWidth();
int h=getHeight();
Graphics2D g2d = (Graphics2D) g;
// Draw the grid
g2d.setPaint(Color.WHITE);
g2d.fill(new Rectangle2D.Double(0, 0, w, h));
g2d.setPaint(Color.BLACK);
g2d.setStroke(new BasicStroke(4));
g2d.draw(new Line2D.Double(0, h/3, w, h/3));
g2d.draw(new Line2D.Double(0, h*2/3, w, h*2/3));
g2d.draw(new Line2D.Double(w/3, 0, w/3, h));
g2d.draw(new Line2D.Double(w*2/3, 0, w*2/3, h));
// Draw the Os and Xs
for (int i=0; i<9; ++i) {
double xpos=(i%3+0.5)*w/3.0;
double ypos=(i/3+0.5)*h/3.0;
double xr=w/8.0;
double yr=h/8.0;
if (position==O) {
g2d.setPaint(Color.BLUE);
g2d.draw(new Ellipse2D.Double(xpos-xr, ypos-yr, xr*2, yr*2));
else if (position[i]==X) {
g2d.setPaint(Color.RED);
g2d.draw(new Line2D.Double(xpos-xr, ypos-yr, xpos+xr, ypos+yr));
g2d.draw(new Line2D.Double(xpos-xr, ypos+yr, xpos+xr, ypos-yr));
// Draw an O where the mouse is clicked
public void mouseClicked(MouseEvent e) {
int xpos=e.getX()*3/getWidth();
int ypos=e.getY()*3/getHeight();
int pos=xpos+3*ypos;
if (pos>=0 && pos<9 && position[pos]==BLANK) {
position[pos]=O;
repaint();
putX(); // computer plays
repaint();
// Ignore other mouse events
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
// Computer plays X
public void putX() {
// Check if game is over
if (won(O))
newGame(O);
else if (isDraw())
newGame(BLANK);
// Play X, possibly ending the game
else {
nextMove();
if (won(X))
newGame(X);
else if (isDraw())
newGame(BLANK);
// Play X in one of the empty spot
public void nextMove() {
int r;
do {
Random random=new Random();
r=random.nextInt(9); // move randomly
} while (position[r]!=BLANK);
position[r]=X;
// Return true if player has won
public boolean won(char player) {
bold// ********** put your code here **********
// ......if else
return false;
// Are all 9 spots filled? Return true if yes
public boolean isDraw() {
bold// ********** put your code here **********
// ......if else
return false;
// Start a new game
public void newGame(char winner) {
repaint();
// Announce result of last game. Ask user to play again.
String result;
if (winner==O) {
++wins;
result = "You Win!";
else if (winner==X) {
++losses;
result = "I Win!";
else {
result = "Tie";
++draws;
if (JOptionPane.showConfirmDialog(null,
"You have "+wins+ " wins, "+losses+" losses, "+draws+" draws\n"
+"Play again?", result, JOptionPane.YES_NO_OPTION)
!=JOptionPane.YES_OPTION) {
System.exit(0);
// Clear the board to start a new game
for (int j=0; j<9; ++j)
position[j]=BLANK;
// Computer starts first every other game
if ((wins+losses+draws)%2 == 1)
nextMove();
} // end inner class Board
} // end class TicTacToe
CAN YOU ALL PLEASE HELP ME TO FILL IN THE CODE AT THE MIDDLE??(put your code here)
THANK YOU SO MUCH><Multipost:
http://forum.java.sun.com/thread.jspa?threadID=5247071
Would you please shut the fsck up? -
Help in swing app. tic tac toe
Trying to make this tic tac toe game. Need a little help. I want the newGameBUT to start the game over, and I would like turnTF to display if a tie occurs. (I tried using *if button.enabled(false) {* but it didn't work. If anyone could help me out, that'd be great. Oh, also, the new game button currently add's 1 to whoever won so far, which is really weird =x. Thanks beforehand.
import java.awt.*; //import
import javax.swing.*; //import
import java.awt.event.*; //import
import java.awt.Rectangle; //import
import java.awt.Font; //import
import javax.swing.BorderFactory; //import
import javax.swing.border.TitledBorder; //import
import java.awt.Color; //import
public class TicTacToeFrame extends JFrame implements ActionListener {
public TicTacToeFrame() {
try { //try the following
jbInit();
} catch (Exception ex) { // exit on [X]
ex.printStackTrace(); //exit and print errors
int xWon = 0; //counting how many times O has won
int oWon = 0; //counting how many times X has one
double i = 0; // loop variable to determine turn
public void actionPerformed(ActionEvent e) {
String turn = "null"; //current turn
String notTurn = "null"; //not current turn
newGameBUT.setEnabled(false); //disable new game button
if (i % 2 == 0) { // for determining who's turn it is
turn = "X"; // X's turn when counter is even
notTurn = "O"; //notTurn used to show who's turn it is in turnTF
if (i % 2 != 0) { // for determining who's turn it is
turn = "O"; // O's turn when counter is odd
notTurn = "X"; //notTurn used to show who's turn it is in turnTF
turnTF.setText("Currently " + notTurn + "'s turn"); // displays turn
if (e.getSource() == sqOneBUT) { //disable and print X or O to button
sqOneBUT.setText(turn); //printing players symbol
sqOneBUT.setEnabled(false); //disabling button
if (e.getSource() == sqTwoBUT) { //disable and print X or O to button
sqTwoBUT.setText(turn); //printing players symbol
sqTwoBUT.setEnabled(false); //disabling button
if (e.getSource() == sqThreeBUT) { //disable and print X or O to button
sqThreeBUT.setText(turn); //printing players symbol
sqThreeBUT.setEnabled(false); //disabling button
if (e.getSource() == sqFourBUT) { //disable and print X or O to button
sqFourBUT.setText(turn); //printing players symbol
sqFourBUT.setEnabled(false); //disabling button
if (e.getSource() == sqFiveBUT) { //disable and print X or O to button
sqFiveBUT.setText(turn); //printing players symbol
sqFiveBUT.setEnabled(false); //disabling button
if (e.getSource() == sqSixBUT) { //disable and print X or O to button
sqSixBUT.setText(turn); //printing players symbol
sqSixBUT.setEnabled(false); //disabling button
if (e.getSource() == sqSevenBUT) { //disable and print X or O to button
sqSevenBUT.setText(turn); //printing players symbol
sqSevenBUT.setEnabled(false); //disabling button
if (e.getSource() == sqEightBUT) { //disable and print X or O to button
sqEightBUT.setText(turn); //printing players symbol
sqEightBUT.setEnabled(false); //disabling button
if (e.getSource() == sqNineBUT) { //disable and print X or O to button
sqNineBUT.setText(turn); //printing players symbol
sqNineBUT.setEnabled(false); //disabling button
String sqOne = sqOneBUT.getText(); // Strings to read to find winner
String sqTwo = sqTwoBUT.getText(); // Strings to read to find winner
String sqThree = sqThreeBUT.getText(); // Strings to read to find winner
String sqFour = sqFourBUT.getText(); // Strings to read to find winner
String sqFive = sqFiveBUT.getText(); // Strings to read to find winner
String sqSix = sqSixBUT.getText(); // Strings to read to find winner
String sqSeven = sqSevenBUT.getText(); // Strings to read to find winner
String sqEight = sqEightBUT.getText(); // Strings to read to find winner
String sqNine = sqNineBUT.getText(); // Strings to read to find winner
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~O WINS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
//horizontal, top, o wins
if (sqOne == "O") { //checking too see if player O has won
if (sqFour == "O") {
if (sqSeven == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
//vertical, left, o wins
if (sqOne == "O") { //checking too see if player O has won
if (sqTwo == "O") {
if (sqThree == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// diagonal, top left to bottom right, o wins
if (sqOne == "O") {
if (sqFive == "O") { //checking too see if player O has won
if (sqNine == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// horizontal, mid, o wins
if (sqTwo == "O") { //checking too see if player O has won
if (sqFive == "O") {
if (sqEight == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// horizontal, bottom, o wins
if (sqThree == "O") { //checking too see if player O has won
if (sqSix == "O") {
if (sqNine == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// diagonal, top right to bottom left, o wins
if (sqThree == "O") { //checking too see if player O has won
if (sqFive == "O") {
if (sqSeven == "O") {
turnTF.setText("O wins!"); //O wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~X WINS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
//horizontal, top, x wins
if (sqOne == "X") { //checking too see if player X has won
if (sqFour == "X") {
if (sqSeven == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
//vertical, left, x wins
if (sqOne == "X") { //checking too see if player X has won
if (sqTwo == "X") {
if (sqThree == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// diagonal, top left to bottom right, x wins
if (sqOne == "X") { //checking too see if player X has won
if (sqFive == "X") {
if (sqNine == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// horizontal, mid, x wins
if (sqTwo == "X") { //checking too see if player X has won
if (sqFive == "X") {
if (sqEight == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// horizontal, bottom, x wins
if (sqThree == "X") { //checking too see if player X has won
if (sqSix == "X") {
if (sqNine == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
// diagonal, top right to bottom left, x wins
if (sqThree == "X") { //checking too see if player X has won
if (sqFive == "X") {
if (sqSeven == "X") {
turnTF.setText("X wins!"); //X wins text
sqOneBUT.setEnabled(false); //disable all buttons
sqTwoBUT.setEnabled(false); //disable all buttons
sqThreeBUT.setEnabled(false); //disable all buttons
sqFourBUT.setEnabled(false); //disable all buttons
sqFiveBUT.setEnabled(false); //disable all buttons
sqSixBUT.setEnabled(false); //disable all buttons
sqSevenBUT.setEnabled(false); //disable all buttons
sqEightBUT.setEnabled(false); //disable all buttons
sqNineBUT.setEnabled(false); //disable all buttons
String wins = turnTF.getText(); //Reading who won to print win winTF
if (wins.equals("X wins!")) { //if X wins
xWon++; //adding 1 to X's amount of wins
String xWonString = Integer.toString(xWon); //converting to String
xWinsTF.setText(xWonString); //displaying # of wins
newGameBUT.setEnabled(true); //enable new game button
if (wins.equals("O wins!")) { //if O wins
oWon++; //adding 1 to O's amount of wins
String oWonString = Integer.toString(oWon); //converting to String
oWinsTF.setText(oWonString); //displaying # of wins
newGameBUT.setEnabled(true); //enable new game button
if (e.getSource() == newGameBUT) {
i++; // turn switch
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
private void jbInit() throws Exception {
this.getContentPane().setLayout(null);
this.getContentPane().setBackground(Color.darkGray);
sqTwoBUT.setBounds(new Rectangle(2, 116, 115, 115));
sqTwoBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqFourBUT.setBounds(new Rectangle(118, 1, 115, 115));
sqFourBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqFiveBUT.setBounds(new Rectangle(118, 116, 115, 115));
sqFiveBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqSixBUT.setBounds(new Rectangle(118, 232, 115, 115));
sqSixBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqOneBUT.setBounds(new Rectangle(2, 1, 115, 115));
sqOneBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqEightBUT.setBounds(new Rectangle(233, 116, 115, 115));
sqEightBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqNineBUT.setBounds(new Rectangle(233, 232, 115, 115));
sqNineBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqSevenBUT.setBounds(new Rectangle(233, 1, 115, 115));
sqSevenBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
sqOneBUT.addActionListener(this);
sqTwoBUT.addActionListener(this);
sqThreeBUT.addActionListener(this);
sqFourBUT.addActionListener(this);
sqFiveBUT.addActionListener(this);
sqSixBUT.addActionListener(this);
sqSevenBUT.addActionListener(this);
sqEightBUT.addActionListener(this);
sqNineBUT.addActionListener(this);
newGameBUT.addActionListener(this);
sqThreeBUT.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
turnTF.setFont(new java.awt.Font(
"Tw Cen MT Condensed Extra Bold",
Font.BOLD, 20));
turnTF.setEditable(false);
turnTF.setText("X goes first");
turnTF.setHorizontalAlignment(SwingConstants.CENTER);
turnTF.setBounds(new Rectangle(2, 346, 346, 35));
oWinsTF.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.BOLD, 18));
oWinsTF.setEditable(false);
oWinsTF.setHorizontalAlignment(SwingConstants.CENTER);
oWinsTF.setBounds(new Rectangle(256, 419, 79, 59));
xWinsTF.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.BOLD, 18));
xWinsTF.setEditable(false);
xWinsTF.setHorizontalAlignment(SwingConstants.CENTER);
xWinsTF.setBounds(new Rectangle(12, 419, 79, 59));
oWinsLBL.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.PLAIN, 16));
oWinsLBL.setForeground(Color.white);
oWinsLBL.setHorizontalAlignment(SwingConstants.CENTER);
oWinsLBL.setText("O wins:");
oWinsLBL.setBounds(new Rectangle(256, 399, 78, 21));
xWinsLBL.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.PLAIN, 16));
xWinsLBL.setForeground(Color.white);
xWinsLBL.setDisplayedMnemonic('0');
xWinsLBL.setHorizontalAlignment(SwingConstants.CENTER);
xWinsLBL.setText("X wins:");
xWinsLBL.setBounds(new Rectangle(12, 393, 78, 21));
newGameBUT.setBounds(new Rectangle(101, 455, 146, 23));
newGameBUT.setFont(new java.awt.Font("Tw Cen MT Condensed Extra Bold",
Font.BOLD, 14));
newGameBUT.setText("New Game");
this.getContentPane().add(sqFourBUT);
this.getContentPane().add(sqThreeBUT);
this.getContentPane().add(sqTwoBUT);
this.getContentPane().add(sqOneBUT);
this.getContentPane().add(sqFiveBUT);
this.getContentPane().add(sqSixBUT);
this.getContentPane().add(sqNineBUT);
this.getContentPane().add(sqEightBUT);
this.getContentPane().add(sqSevenBUT);
this.getContentPane().add(turnTF);
this.getContentPane().add(xWinsLBL);
this.getContentPane().add(xWinsTF);
this.getContentPane().add(oWinsLBL);
this.getContentPane().add(oWinsTF);
this.getContentPane().add(newGameBUT);
sqThreeBUT.setBounds(new Rectangle(2, 232, 115, 115));
JButton sqTwoBUT = new JButton();
JButton sqThreeBUT = new JButton();
JButton sqFourBUT = new JButton();
JButton sqFiveBUT = new JButton();
JButton sqSixBUT = new JButton();
JButton sqOneBUT = new JButton();
JButton sqEightBUT = new JButton();
JButton sqNineBUT = new JButton();
JButton sqSevenBUT = new JButton();
JTextField turnTF = new JTextField();
JTextField oWinsTF = new JTextField();
JTextField xWinsTF = new JTextField();
JLabel oWinsLBL = new JLabel();
JLabel xWinsLBL = new JLabel();
JButton newGameBUT = new JButton();
}This code should be the poster-child for every time we tell someone that repeated code can usually be replaced with collections or method calls.
if (e.getSource() == sqOneBUT) { //disable and print X or O to button
sqOneBUT.setText(turn); //printing players symbol
sqOneBUT.setEnabled(false); //disabling button
if (e.getSource() == sqTwoBUT) { //disable and print X or O to button
sqTwoBUT.setText(turn); //printing players symbol
sqTwoBUT.setEnabled(false); //disabling button
if (e.getSource() == sqThreeBUT) { //disable and print X or O to button
sqThreeBUT.setText(turn); //printing players symbol
sqThreeBUT.setEnabled(false); //disabling button
if (e.getSource() == sqFourBUT) { //disable and print X or O to button
sqFourBUT.setText(turn); //printing players symbol
sqFourBUT.setEnabled(false); //disabling button
if (e.getSource() == sqFiveBUT) { //disable and print X or O to button
sqFiveBUT.setText(turn); //printing players symbol
sqFiveBUT.setEnabled(false); //disabling button
if (e.getSource() == sqSixBUT) { //disable and print X or O to button
sqSixBUT.setText(turn); //printing players symbol
sqSixBUT.setEnabled(false); //disabling button
if (e.getSource() == sqSevenBUT) { //disable and print X or O to button
sqSevenBUT.setText(turn); //printing players symbol
sqSevenBUT.setEnabled(false); //disabling button
if (e.getSource() == sqEightBUT) { //disable and print X or O to button
sqEightBUT.setText(turn); //printing players symbol
sqEightBUT.setEnabled(false); //disabling button
if (e.getSource() == sqNineBUT) { //disable and print X or O to button
sqNineBUT.setText(turn); //printing players symbol
sqNineBUT.setEnabled(false); //disabling button
String sqOne = sqOneBUT.getText(); // Strings to read to find winner
String sqTwo = sqTwoBUT.getText(); // Strings to read to find winner
String sqThree = sqThreeBUT.getText(); // Strings to read to find winner
String sqFour = sqFourBUT.getText(); // Strings to read to find winner
String sqFive = sqFiveBUT.getText(); // Strings to read to find winner
String sqSix = sqSixBUT.getText(); // Strings to read to find winner
String sqSeven = sqSevenBUT.getText(); // Strings to read to find winner
String sqEight = sqEightBUT.getText(); // Strings to read to find winner
String sqNine = sqNineBUT.getText(); // Strings to read to find winner -
A Tic Tac Toe board is represented as an array of 9 chars. Write a program that will allow two users to play tic tac toe. The player should ask for moves alternately from players X and O. The program is too dumb to check whether anyone has won or lost and just stops after 9 turns. The program should display the game position as follows after each move.
The output should be somewhat as follows:
Choose a spot (1 to 9) for X: 1
X || ||
|| ||
|| ||
Basically i have to do this. I was wondering if anyone could lead me in the right direction please?class TicTacToe {
// instance variables
// constructor(s)
// method(s)
public static void main(String[] args) {
new TicTacToe();
}There you go. I got you started. Now all you need to do is finish.
Maybe you are looking for
-
DBG1005 : The connection information provided does not specify a valid OWB
Hi, Need a small help. actually am inserting data from view as source to table as target in the same schema. designed mapping and compile and run successfully,but getting the following error OWB. DBG1005 : The connection information provided does not
-
Hello, I have a service, that reads and returns the contents of a database table specified as input parameter. In the case of a specific table, the service, when returning, produces the following message: 111303.boss!srv.21028: LIBTUX_CAT:1285: WARN:
-
High CPU Usage when playing videos
I have exactly the same problem. I search all around and a lot, i mean a LOT of people is having the same problem, what is going on with Adobe Flash Player? Every video, specially in Youtube, i just can't watch 720p videos, because the CPU reach the
-
Were do suspicous add-ons Download Keeper come from?
Today, I noticed an advertisement on a page I visited. This advertisement was labelled "Download Keeper" and showed a few pictures with products and prices in dollars. I didn't expect such advertisements on the site in question and so I looked more c
-
64 bit HP drivers don't work reliably over a network
Running Win 7 64 bit clients, and server 2008. HP's own drivers are very unreliable. Printers work ok for a while, and then for no reason start outputting garbage. Changing print driver to universal sometimes resolves the issue for a time, but garbag