【问题标题】:tic tac toe game project image icon?井字游戏项目图像图标?
【发布时间】:2013-04-06 02:46:06
【问题描述】:

我正在制作一个井字游戏项目,我正在使用 9 个按钮和图像(Circle.jpg、Cross.jpg)。首先,我想向你们澄清一件事,所以首先我用字母(“X”),(“O”)制作了这个游戏,现在我在这个游戏中使用了图像,它也是电脑对玩家的游戏 运行后,当我点击按钮时,它显示我在那个按钮上交叉,没错,电脑会自动把圆圈放在另一个按钮上!

问题是当我单击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有关。相应地更改问题的标题。
  • 具体的问题是什么?错误的编程逻辑?还是某种技术问题?请澄清您的确切问题和/或问题。
  • 查看 this 帖子以获取有关井字游戏算法的信息。
  • 我的编程逻辑是正确的,我很确定..但是当我用图像画圆和交叉时,就出现了这个问题,
  • 有什么办法可以让我给你看图片...要么给我两票,我就可以放图片了。

标签: java swing jbutton imageicon


【解决方案1】:

这对我来说看起来不对

 buttons[1].getText().equals(Image)

您正在将文本与图像进行比较,我怀疑这可能是真的。

应该是这样

 buttons[1].getIcon() == Image

只有当你加载一次图像并在任何地方使用它时才会起作用 正在比较对象引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2015-06-12
    • 2015-01-08
    • 2022-12-10
    相关资源
    最近更新 更多