平铺游戏动作侦听器循环出错

时间:2014-10-06 12:57:27

标签: java arrays

这是我的ActionListen类,它根据网格上的数字向网格上的按钮添加actionlisteners。如果我单击空白点旁边的按钮(TileGame.tile [x] [y] == 0),则两个按钮应交换,但是,当我单击按钮时,没有任何反应。

这是我的代码:

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 个答案:

答案 0 :(得分:0)

代码目前并不关心空瓷砖的放置位置。所以你只需要用附近的固定瓷砖点击瓷砖。这可能是空白的。但是你应该搜索空白区块(或将空白区块坐标存储在可访问的位置),然后交换这些坐标,而不仅仅是一些随机坐标。

也许应该检查一下空白的瓷砖是否在附近是否是uberhaupt,又可以换掉吗?

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