检查网格世界中的位置

时间:2014-04-01 00:47:19

标签: java gridworld

我如何检查bug类前面的两个空格是否是一个没有任何内容的清晰点并且也没有越过边界?现在这就是我所拥有的

public void act()
{
  if(canMove())
  {
     Location loc = getLocation();
     Location nextLocation = loc.getAdjacentLocation(getDirection());
     nextLocation = nextLocation.getAdjacentLocation(getDirection());
     if (nextLocation == null)
     {
       move();
       move();
     }

  }
}

这似乎不起作用,因为bug什么都不做。

2 个答案:

答案 0 :(得分:0)

你可能意味着if(nextLocation != null)。我们不希望错误从板上跳到(null空间)。这是我记得的GridWorld;我手边没有这个程序。

答案 1 :(得分:0)

你所遇到的问题有两个。

  1. 不检查下一个位置是否在您知道的网格中
  2. 没有移动到您找到的位置。 Move()只是在当前方向上移动,无论它是否在网格中。因此,调用它两次向前移动两次,但没有使用您在网格中找到的位置。
  3. 尝试将代码更改为:

            public void act()
            {
               if(canMove())
               {
                   Location loc = getLocation();
                   Location nextLocation = loc.getAdjacentLocation(getDirection());
                   nextLocation = nextLocation.getAdjacentLocation(getDirection());
                   Grid<Actor> gr = getGrid(); 
    
                   if (gr.isValid(nextLocation))
                   {
                       moveTo(nextLocation);
                   }
                   else
                       move(); //This could be move() so you only move forward one 
                              //space or turn() to turn 
    
               }
            }