2014-10-06 85 views
0

这是我的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(); 
          } 
         }); 

       } 
+0

你为什么要在构造函数中做所有事情? – gldraphael 2014-10-06 13:01:01

+0

你为什么不把侦听器添加到坐标为(2,2)的图块?为什么你要为每个动作执行一个新的DrawGame? – Juru 2014-10-06 13:05:47

回答

0

的代码目前不关心,其中空平铺放置。因此,您只需将邻居中的固定瓷砖与单击的瓷砖交换即可。这可能是空白的。但是您应该搜索空白瓷砖(或将空白瓷砖的坐标存储在某处),然后交换这些坐标,而不仅仅是一些随机的坐标。

此外,也许应该有一个检查,如果空白瓷砖是在邻里uberhaupt,又名可以交换?

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