2014-04-01 4 views
0

버그 클래스 앞에있는 두 공백이 아무 것도없는 명확한 지점인지 확인하고 경계를 넘지 않는지 어떻게 확인합니까? 지금 당장 가지고있는 것입니다.그리드 월드에서 위치 확인

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

    } 
} 

버그가 없으므로 작동하지 않는 것 같습니다.

답변

0

아마도 if(nextLocation != null)을 의미했을 것입니다. 버그가 게시판에서 뛰어 내리는 것을 원하지 않습니다 (null 공간으로). 이것은 내가 기억할 수있는 정도에서 나온 것입니다. GridWorld; 나는 프로그램을 가지고 있지 않다.

+0

,하지만 난 그것이 경계 그리드를 유지하기 위해 어떻게받을 수 있나요? – Hulu

0

가지고있는 것에는 두 가지 문제점이 있습니다. 다음 위치는

  • 당신이 볼 수있는 위치로 이동하지 않았나요 알고 그리드에있는 경우
    1. 확인하지 않습니다. 이동()은 그리드에 있는지 여부에 관계없이 현재 방향으로 이동합니다. 그래서 두 번 전화하면 앞으로 두 번 앞으로 움직 였지만, 당신이 찾은 위치를 그리드에 사용하지 않았습니다.

  • 은 당신의 코드를 changeing보십시오 :

    이 버그는 이제 이동
     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 
    
          } 
         }