간단한 게임플레이어를 기준으로하여 플레이어의 레벨에 따른 행동프로그램을 구현하는 실습입니다.
각 레벨에서 수행할 공통 기능은 PlayerLevel 추상클래스에서 선언합니다.
각 레벨마다 run(), jump(), turn(), showLevelMessage() 메소드는 조금씩 다르게 구현되기 때문에 추상 메소드로 선언합니다. go() 메소드는 시나리오대로 수행되어야하므로 코드내용을 완전히 구현했습니다.
Player는 한 번에 하나의 레벨 상태이므로 level 변수에 레벨에 해당하는 인스턴스를 대입합니다.
레벨을 변경할 수 있는 upgradeLevel()메소드를 만들어줍니다.
초심자 레벨에서는 천천히 달릴 수만 있습니다. 점프나 턴은 할 수 없도록 합니다.
중급자 레벨에서는 빠르게 달릴 수 있고 높이 점프할 수 있습니다.
고급자 레벨에서는 다할 수 있습니다.
Player 클래스의 디폴트 생성자는 초보자 레벨로 시작하도록 구현되어 있습니다. Player 클래스를 생성하고 인스턴스를 Player 참조 변수에 대입합니다. play() 메소드의 매개변수에 1을 입력하면 초보자 레벨이기 떄문에 천천히 달린 후 점프할 줄 모른다는 문구와 턴할 줄 모른다는 문구를 출력합니다. 8행에서 중급자 레벨 클래스를 새로 생성하고 aLevel 참조 변수를 upgradeLevel() 메소드에 대입해서 레벨을 업그레이드합니다. 이제 Player는 중급자 레벨입니다. 그 다음은 같은 수순입니다..
'이해를 위한 메모 공간' 카테고리의 다른 글
14.final 예약어 (0) | 2020.03.31 |
---|---|
13-1.템플릿 메소드 (0) | 2020.03.31 |
13.추상 클래스 (0) | 2020.03.31 |
12.다형성 활용 및 다운 캐스팅 (0) | 2020.03.31 |
11.상속 (0) | 2020.03.30 |