我正在製作一個tic tac toe項目,我正在使用9個按鈕和圖像(Circle.jpg,Cross.jpg)。首先,我想澄清一件事給你們,所以我首先使用字母(「X」),(「O」)製作了這個遊戲,現在我正在使用這個遊戲的圖像,並且它也是電腦vs玩家遊戲 運行後,當我點擊按鈕時,它顯示了我在該按鈕上交叉,沒錯,並且計算機自動將圓圈放入另一個按鈕中!tic tac toe遊戲項目圖像圖標?
問題是,當我點擊Next
按鈕時,它顯示出一個十字,這是正確的。但電腦不會把圓圈擋住我的行。
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class TicTacToe implements ActionListener {
/*Instance Variables*/
static int[][] winCombinations = new int[][] {
{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, //horizontal wins
{1, 4, 7}, {2, 5, 8}, {3, 6, 9}, //vertical wins
{1, 5, 9}, {3, 5, 7} //diagonal wins
};
static JFrame window = new JFrame("Tic-Tac-Toe");
static JButton buttons[] = new JButton[10];
static int count = 0;
static Icon letter;
static boolean win = false;
static Icon myImage = new ImageIcon("Cross.jpg"); //
static Icon Image = new ImageIcon("Circle.jpg");
static String AA;
public TicTacToe(){
/*Create Window*/
window.setPreferredSize(new Dimension(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[i]);
buttons[i].setPreferredSize(new Dimension(myImage.getIconWidth(), myImage.getIconHeight()));
buttons[i].addActionListener(this);
}
/*Make The Window Visible*/
window.setVisible(true);
window.pack();
}
public void actionPerformed(ActionEvent a)
{
/*Write the letter to the button and deactivate it*/
for(int i = 1; i<= 9; i++){
if(a.getSource() == buttons[i]){
buttons[i].setIcon(myImage);
buttons[i].setEnabled(false);
}
}
count++;
AI();
}
public void AI(){
count++;
if(buttons[1].getText().equals(Image) && buttons[2].getText().equals(Image) && buttons[3].getText().equals("")){
buttons[3].setIcon(Image);
buttons[3].setEnabled(false);
} else if(buttons[4].getText().equals(Image) && buttons[5].getText().equals(Image) && buttons[6].getText().equals("")){
buttons[6].setIcon(Image);
buttons[6].setEnabled(false);
} else if(buttons[7].getText().equals(Image) && buttons[8].getText().equals(Image) && buttons[9].getText().equals("")){
buttons[9].setIcon(Image);
buttons[9].setEnabled(false);
}
else if(buttons[2].getText().equals(Image) && buttons[3].getText().equals(Image) && buttons[1].getText().equals("")){
buttons[1].setIcon(Image);
buttons[1].setEnabled(false);
} else if(buttons[5].getText().equals(Image) && buttons[6].getText().equals(Image) && buttons[4].getText().equals("")){
buttons[4].setIcon(Image);
buttons[4].setEnabled(false);
} else if(buttons[8].getText().equals(Image) && buttons[9].getText().equals(Image) && buttons[7].getText().equals("")){
buttons[7].setIcon(Image);
buttons[7].setEnabled(false);
}
else if(buttons[1].getText().equals(Image) && buttons[3].getText().equals(Image) && buttons[2].getText().equals("")){
buttons[2].setIcon(Image);
buttons[2].setEnabled(false);
} else if(buttons[4].getText().equals(Image) && buttons[6].getText().equals(Image) && buttons[5].getText().equals("")){
buttons[5].setIcon(Image);
buttons[5].setEnabled(false);
} else if(buttons[7].getText().equals(Image) && buttons[9].getText().equals(Image) && buttons[8].getText().equals("")){
buttons[8].setIcon(Image);
buttons[8].setEnabled(false);
}
else if(buttons[1].getText().equals(Image) && buttons[4].getText().equals(Image) && buttons[7].getText().equals("")){
buttons[7].setIcon(Image);
buttons[7].setEnabled(false);
} else if(buttons[2].getText().equals(Image) && buttons[5].getText().equals(Image) && buttons[8].getText().equals("")){
buttons[4].setIcon(Image);
buttons[4].setEnabled(false);
} else if(buttons[3].getText().equals(Image) && buttons[6].getText().equals(Image) && buttons[9].getText().equals("")){
buttons[9].setIcon(Image);
buttons[9].setEnabled(false);
}
else if(buttons[4].getText().equals(Image) && buttons[7].getText().equals(Image) && buttons[1].getText().equals("")){
buttons[1].setIcon(Image);
buttons[1].setEnabled(false);
} else if(buttons[5].getText().equals(Image) && buttons[8].getText().equals(Image) && buttons[2].getText().equals("")){
buttons[2].setIcon(Image);
buttons[2].setEnabled(false);
} else if(buttons[6].getText().equals(Image) && buttons[9].getText().equals(Image) && buttons[3].getText().equals("")){
buttons[3].setIcon(Image);
buttons[3].setEnabled(false);
}
else if(buttons[1].getText().equals(Image) && buttons[7].getText().equals(Image) && buttons[4].getText().equals("")){
buttons[4].setIcon(Image);
buttons[4].setEnabled(false);
} else if(buttons[2].getText().equals(Image) && buttons[8].getText().equals(Image) && buttons[5].getText().equals("")){
buttons[5].setIcon(Image);
buttons[5].setEnabled(false);
} else if(buttons[3].getText().equals(Image) && buttons[9].getText().equals(Image) && buttons[6].getText().equals("")){
buttons[6].setIcon(Image);
buttons[6].setEnabled(false);
}
else if(buttons[1].getText().equals(Image)&& buttons[5].getText().equals(Image)&& buttons[9].getText().equals("")){
buttons[9].setIcon(Image);
buttons[9].setEnabled(false);
} else if(buttons[5].getText().equals(Image)&& buttons[9].getText().equals(Image)&& buttons[1].getText().equals("")){
buttons[1].setIcon(Image);
buttons[1].setEnabled(false);
} else if(buttons[1].getText().equals(Image)&& buttons[9].getText().equals(Image)&& buttons[5].getText().equals("")){
buttons[5].setIcon(Image);
buttons[5].setEnabled(false);
}
else if(buttons[3].getText().equals(Image)&& buttons[5].getText().equals(Image)&& buttons[7].getText().equals("")){
buttons[7].setIcon(Image);
buttons[7].setEnabled(false);
} else if(buttons[7].getText().equals(Image)&& buttons[5].getText().equals(Image)&& buttons[3].getText().equals("")){
buttons[3].setIcon(Image);
buttons[3].setEnabled(false);
} else if(buttons[7].getText().equals(Image)&& buttons[3].getText().equals(Image)&& buttons[5].getText().equals("")){
buttons[5].setIcon(Image);
buttons[5].setEnabled(false);
}
else if(buttons[1].getText().equals(myImage) && buttons[2].getText().equals(myImage) && buttons[3].getText().equals("")){
buttons[3].setIcon(Image);
buttons[3].setEnabled(false);
} else if(buttons[4].getText().equals(myImage) && buttons[5].getText().equals(myImage) && buttons[6].getText().equals("")){
buttons[6].setIcon(Image);
buttons[6].setEnabled(false);
} else if(buttons[7].getText().equals(myImage) && buttons[8].getText().equals(myImage) && buttons[9].getText().equals("")){
buttons[9].setIcon(Image);
buttons[9].setEnabled(false);
}
else if(buttons[2].getText().equals(myImage) && buttons[3].getText().equals(myImage) && buttons[1].getText().equals("")){
buttons[1].setIcon(Image);
buttons[1].setEnabled(false);
} else if(buttons[5].getText().equals(myImage) && buttons[6].getText().equals(myImage) && buttons[4].getText().equals("")){
buttons[4].setIcon(Image);
buttons[4].setEnabled(false);
} else if(buttons[8].getText().equals(myImage) && buttons[9].getText().equals(myImage) && buttons[7].getText().equals("")){
buttons[7].setIcon(Image);
buttons[7].setEnabled(false);
}
else if(buttons[1].getText().equals(myImage) && buttons[3].getText().equals(myImage) && buttons[2].getText().equals("")){
buttons[2].setIcon(Image);
buttons[2].setEnabled(false);
} else if(buttons[4].getText().equals(myImage) && buttons[6].getText().equals(myImage) && buttons[5].getText().equals("")){
buttons[5].setIcon(Image);
buttons[5].setEnabled(false);
} else if(buttons[7].getText().equals(myImage) && buttons[9].getText().equals(myImage) && buttons[8].getText().equals("")){
buttons[8].setIcon(Image);
buttons[8].setEnabled(false);
}
else if(buttons[1].getText().equals(myImage) && buttons[4].getText().equals(myImage) && buttons[7].getText().equals("")){
buttons[7].setIcon(Image);
buttons[7].setEnabled(false);
} else if(buttons[2].getText().equals(myImage) && buttons[5].getText().equals(myImage) && buttons[8].getText().equals("")){
buttons[8].setIcon(Image);
buttons[8].setEnabled(false);
} else if(buttons[3].getText().equals(myImage) && buttons[6].getText().equals(myImage) && buttons[9].getText().equals("")){
buttons[9].setIcon(Image);
buttons[9].setEnabled(false);
}
else if(buttons[4].getText().equals(myImage) && buttons[7].getText().equals(myImage) && buttons[1].getText().equals("")){
buttons[1].setIcon(Image);
buttons[1].setEnabled(false);
} else if(buttons[5].getText().equals(myImage) && buttons[8].getText().equals(myImage) && buttons[2].getText().equals("")){
buttons[2].setIcon(Image);
buttons[2].setEnabled(false);
} else if(buttons[6].getText().equals(myImage) && buttons[9].getText().equals(myImage) && buttons[3].getText().equals("")){
buttons[3].setIcon(Image);
buttons[3].setEnabled(false);
}
else if(buttons[1].getText().equals(myImage) && buttons[7].getText().equals(myImage) && buttons[4].getText().equals("")){
buttons[4].setIcon(Image);
buttons[4].setEnabled(false);
} else if(buttons[2].getText().equals(myImage) && buttons[8].getText().equals(myImage) && buttons[5].getText().equals("")){
buttons[5].setIcon(Image);
buttons[5].setEnabled(false);
} else if(buttons[3].getText().equals(myImage) && buttons[9].getText().equals(myImage) && buttons[6].getText().equals("")){
buttons[6].setIcon(Image);
buttons[6].setEnabled(false);
}
else if(buttons[1].getText().equals(myImage) && buttons[5].getText().equals(myImage) && buttons[9].getText().equals("")){
buttons[9].setIcon(Image);
buttons[9].setEnabled(false);
} else if(buttons[5].getText().equals(myImage) && buttons[9].getText().equals(myImage) && buttons[1].getText().equals("")){
buttons[1].setIcon(Image);
buttons[1].setEnabled(false);
} else if(buttons[1].getText().equals(myImage) && buttons[9].getText().equals(myImage) && buttons[5].getText().equals("")){
buttons[5].setIcon(Image);
buttons[5].setEnabled(false);
}
else if(buttons[3].getText().equals(myImage) && buttons[5].getText().equals(myImage) && buttons[7].getText().equals("")){
buttons[7].setIcon(Image);
buttons[7].setEnabled(false);
} else if(buttons[7].getText().equals(myImage) && buttons[5].getText().equals(myImage) && buttons[3].getText().equals("")){
buttons[3].setIcon(Image);
buttons[3].setEnabled(false);
} else if(buttons[7].getText().equals(myImage) && buttons[3].getText().equals(myImage) && buttons[5].getText().equals("")){
buttons[5].setIcon(Image);
buttons[5].setEnabled(false);
}
else if(buttons[1].getText().equals(myImage) && buttons[5].getText().equals(Image) && buttons[9].getText().equals(myImage)) {
buttons[6].setIcon(Image);
buttons[6].setEnabled(false);
}
else if(buttons[3].getText().equals(myImage) && buttons[5].getText().equals(Image) && buttons[7].getText().equals(myImage)) {
buttons[4].setIcon(Image);
buttons[4].setEnabled(false);
}
else if(buttons[5].getText().equals("")){
buttons[5].setIcon(Image);
buttons[5].setEnabled(false);
}
else if(buttons[1].getText().equals("")){
buttons[1].setIcon(Image);
buttons[1].setEnabled(false);
}
else {
if(count >= 9)
checkWin();
else
RandomMove();
}
checkWin();
}
public void RandomMove(){
Random x = new Random();
int y = 1 + x.nextInt(9);
if(buttons[y].getText().equals(Image) || buttons[y].getText().equals(myImage)){
RandomMove();
} else {
buttons[y].setIcon(Image);
buttons[y].setEnabled(false);
}
}
public void checkWin(){
/*Determine who won*/
for(int i=0; i<=7; i++){
if(buttons[winCombinations[i][0]].getText().equals(buttons[winCombinations[i][5]].getText()) &&
buttons[winCombinations[i][6]].getText().equals(buttons[winCombinations[i][7]].getText()) &&
!buttons[winCombinations[i][0]].getText().equals("")) {
win = true;
}
}
if(count % 2 == 0)
letter = Image;
else
letter = myImage;
/*Show a dialog when game is over*/
if(win == true){
JOptionPane.showMessageDialog(null, letter + " wins!");
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)
{
new TicTacToe();
}
}
問題與遊戲邏輯有關,而不是GUI。相應地更改問題的標題。 – 2013-04-06 02:51:01
確切的問題是什麼?錯誤的編程邏輯?或者某種技術問題?請澄清您的確切問題和/或問題。 – 2013-04-06 02:53:05
檢查*** [this](http://stackoverflow.com/questions/125557/what-algorithm-for-a-tic-tac-toe-game-can-i-use-to-determine-the-best移動爲***)發佈tic-tac-toe算法的信息。 – 2013-04-06 02:55:41