当前位置: 首页 > 知识库问答 >
问题:

tic tac toe游戏项目图片图标?

高建本
2023-03-14

我正在做一个井字游戏项目,我正在使用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();
}

}

共有1个答案

公冶弘壮
2023-03-14

我觉得这不对

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

你把文字和图像进行比较,我怀疑这是真的。

应该是的

 buttons[1].getIcon() == Image

只有当你在比较对象引用时加载一次图像并在任何地方使用它,这才有效。

 类似资料:
  • 我需要创建一个方法来检查tictactoe游戏是否在玩、DRAW、XWIN或owin。然而,我很难编写代码来检查X或O是否获胜,因为游戏板的大小和获胜所需的大小(sizeWin)会根据用户的输入而改变。我被迫使用一维阵列的游戏板。我根本不知道从这里到哪里去。我最近的想法是使用嵌套的for循环来检查是否按行、列或对角线获得胜利,但我不确定如何实现它。如果有人对如何处理这个问题有任何提示,或者有任何其

  • Scrapy提供了一个 item pipeline ,来下载属于某个特定项目的图片,比如,当你抓取产品时,也想把它们的图片下载到本地。 这条管道,被称作图片管道,在 ImagesPipeline 类中实现,提供了一个方便并具有额外特性的方法,来下载并本地存储图片: 将所有下载的图片转换成通用的格式(JPG)和模式(RGB) 避免重新下载最近已经下载过的图片 缩略图生成 检测图像的宽/高,确保它们满

  • 问题内容: 下学期,我们有一个团队中的Java应用程序模块。该模块的要求是制作游戏。在圣诞节假期里,我一直在做一些练习,但是我想不出绘制图形的最佳方法。 我正在使用Java Graphics2D对象在屏幕上绘制形状,并每秒调用30次,但这非常闪烁。有没有更好的方法来绘制Java中的高性能2D图形? 问题答案: 您想要做的是创建一个带有BufferStrategy的canvas组件并对其进行渲染,下

  • 我用C语言用SFML库创建了一个游戏,在实现过程中出现了贴图冲突(我从txt文件中加载贴图- 1代表平台,0代表自由空间)。https://imgur.com/a/tQZc6 我在同时处理所有四种类型的碰撞时遇到了一个问题(从下、上、左和右)。我的意思是:当没有碰撞时,玩家可以正常移动,但是如果我们撞到墙上,碰撞只出现在FIRST中写的if()语句中(在我们的示例中只发生右碰撞,其余部分被省略)。

  • 本文向大家介绍Java游戏开发拼图游戏经典版,包括了Java游戏开发拼图游戏经典版的使用技巧和注意事项,需要的朋友参考一下 游戏介绍: 拼图游戏是一款经典的益智游戏,游戏难度分为 简单、正常、困难 三种难度,分别对应3*3,4*4,5*5布局,游戏开始前图片被随机打乱,空块位于最右下角,玩家通过点击空块周围图片或者按键方式对图片和空块进行相互交换,直到所有图片都回到原位即为游戏胜利。 本次制作的拼

  • 本文向大家介绍JavaFx实现拼图游戏,包括了JavaFx实现拼图游戏的使用技巧和注意事项,需要的朋友参考一下 最近学习JavaFx,发现网上大概只有官方文档可以查阅,学习资料较少,写个拼图游戏供记录。。 大概说一下思路: 1.面板的构建:面板采用GridPane,方便3*3的图片布局。 2.每个小格子中的图片当然不是一张张手工切好的,利用imageview.setViewPort(Rectang