有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

tile游戏动作侦听器循环中的java错误

这是我的ActionListen类,它根据按钮上的数字向网格上的按钮添加ActionListener。如果我单击一个空白点旁边的按钮(TraseMay.Tale[x] [y]=0),那么这两个按钮应该互换,但是,当我单击一个按钮时,什么也不会发生。p>

这是我的密码:

public class ActionListen
{
int x;
int y;
public ActionListen()
{
    for( x = 0 ; x <= 2 ; x++)
    {
        for( y = 0 ; y <= 2 ; y++)
        {
            if( x <2 && y <2)
            {
                if(TileGame.tile[x][y] !=0 && TileGame.tile[x+1][y] == 0)
                {
                    TileGame.tilebutton[x][y].addActionListener(new ActionListener()
                        {
                            public void actionPerformed(ActionEvent e)
                            { 
                                TileGame.tile[x+1][y] = TileGame.tile[x][y];
                                TileGame.tile[x][y] = 0;
                                new DrawGame();
                            }
                        });
                }
                else if(TileGame.tile[x][y] !=0 && TileGame.tile[x][y+1] ==0)
                {
                    TileGame.tilebutton[x][y].addActionListener(new ActionListener()
                        {
                            public void actionPerformed(ActionEvent e)
                            {
                                TileGame.tile[x][y+1] = TileGame.tile[x][y];
                                TileGame.tile[x][y] = 0;
                                new DrawGame();
                            }
                        });

                }

共 (1) 个答案

  1. # 1 楼答案

    代码当前不关心空磁贴的放置位置。因此,您只需将单击的互动程序与附近的固定互动程序进行交换。这可能是空白的。但是你应该搜索空白的瓦片(或者存储空白的瓦片坐标),交换那些坐标,而不是随机的坐标。p> 如果空白的瓷砖是在附近的UBHOUPT,AKA可以交换吗?p>

    TileGame.tile[x][y] = TileGame.tile[getXCoordinateBlankTile()][getYCoordinateBlankTile()];
    TileGame.tile[getXCoordinateBlankTile()][getYCoordinateBlankTile()] = 0;
    setXCoordinateBlankTile(x);
    setYCoordinateBlankTile(y);