2014-06-19 6 views
0

Finite State Machine 상태의 return 문이 어떤 용도로 사용되는지 알 수 있습니까? 누군가가 실행() 메소드의 문을 처음 두에서 어떤 목적으로하여 반환 키워드를 제공하는 경우를 설명 할 수 있다면유한 상태 기계의 반환 문

public class ChaseBall extends State<FieldPlayer> { 

    private static ChaseBall instance = new ChaseBall(); 

    private ChaseBall() { 
    } 

    //this is a singleton 
    public static ChaseBall Instance() { 
     return instance; 
    } 

    @Override 
    public void Enter(FieldPlayer player) { 
     player.Steering().SeekOn(); 
     } 
    } 

    @Override 
    public void Execute(FieldPlayer player) { 
     //if the ball is within kicking range the player changes state to KickBall. 
     if (player.BallWithinKickingRange() && player.isReadyForNextKick()) { 
      player.GetFSM().ChangeState(KickBall.Instance()); 
      return; 
     } 

     //if the player is the closest player to the ball then he should keep 
     //chasing it 
     if (player.isClosestTeamMemberToBall()) { 
      player.Steering().SetTarget(player.Ball().Pos()); 

      return; 
     } 

     //if the player is not closest to the ball anymore, he should return back 
     //to his home region and wait for another opportunity 
     player.GetFSM().ChangeState(ReturnToHomeRegion.Instance()); 
    } 

    @Override 
    public void Exit(FieldPlayer player) { 
     player.Steering().SeekOff(); 
    } 
} 

궁금 예를 들어 나는 축구 선수의 상태에 대해이 코드가? 감사합니다.

+0

과 같습니다. 당신이 상태와 그 변화를 안다면, 다른 상태/전환을 확인할 필요가 없습니다. – Ben

답변

1

이 경우는 일련의 else if 절 대신에 주로 형식 지정을 사용합니다. 이것은 논리적으로는

if (<condition>) { 
    <code> 
} else if (<condition>) { 
    <code> 
} else { 
    <code> 
} 
+0

아, 고마워요! – SAF