-
- 해당 코드를 참조만 하시고, 복사 붙여넣기를 통한 과제를 진행하시면 도움이 정말 하나도 안됩니다. 부디 직접해보시고, 다른 사람의 솔루션이 어떤 지 참조하시는 정도로만 사용해주세요.
Player가 있고, 이 Player가 게임을 합니다.
초보자 레벨 : 달릴 수(run) 있습니다.
중급자 레벨 : 달리고(run) 점프할(jump) 수 있습니다.
고급자 레벨 : 달리고(run) 점프하고(jump) 턴(turn)할 수 있습니다.
모든 레벨에서 go(int count) 메소드를 제공합니다.
go()는 한번 run하고, 매개변수로 전달된 count만큼 jump 하고, 한 번 turn 합니다.
해당 레벨에서 불가능한 기능을 요청하면 할 수 없다는 메시지를 출력합니다.
Player.java
package java0804; public class Player { private PlayerLevel level; public Player(){ level= new BeginnerLevel(); level.showLevelMessage(); } public PlayerLevel getLevel() { return level; } public void upgradeLevel(PlayerLevel level) { this.level = level; level.showLevelMessage(); } public void play(int count){ level.go(count); } }
PlayerLevel.java
package java0804; public abstract class PlayerLevel { public abstract void run(); public abstract void jump(int count); public abstract void turn(); public abstract void showLevelMessage(); int count; final public void go(int count) { run(); jump(count); turn(); } }
MainBoard.java
package java0804; public class MainBoard { public static void main(String[] args) { // TODO Auto-generated method stub Player player = new Player(); player.play(1); AdvancedLevel aLevel = new AdvancedLevel(); player.upgradeLevel(aLevel); player.play(6); SuperLevel sLevel = new SuperLevel(); player.upgradeLevel(sLevel); player.play(3); } }
AdvancedLevel.java
package java0804; public class AdvancedLevel extends PlayerLevel { public void run() { System.out.println("천천히 달립니다."); } public void jump(int count) { for(int i = 0; i < count; i++) System.out.println("Jump!"); } public void turn() { System.out.println("Turn 할 줄 모르지롱."); } public void showLevelMessage() { System.out.println("***** 어드밴스드 레벨 입니다. *****"); } }
BeginnerLevel.java
package java0804; public class BeginnerLevel extends PlayerLevel { public void run() { System.out.println("천천히 달립니다."); } public void jump(int count) { System.out.println("Jump 할 줄 모르지롱."); } public void turn() { System.out.println("Turn 할 줄 모르지롱."); } public void showLevelMessage() { System.out.println("***** 초보자 레벨 입니다. *****"); } }
SuperLevel.java
package java0804; public class SuperLevel extends PlayerLevel { public void run() { System.out.println("천천히 달립니다."); } public void jump(int count) { for(int i = 0; i < count; i++) System.out.println("Jump!"); } public void turn() { System.out.println("Super Turn!"); } public void showLevelMessage() { System.out.println("***** 슈퍼 레벨 입니다. *****"); } }
결과 화면
'실습코드 > 실습 코드' 카테고리의 다른 글
JAVA_객체지향프로그래밍, 인터페이스 예제 (정렬 예제) (0) 2021.08.05 JAVA_객체지향 프로그래밍, 인터페이스 사용 예제 전화 상담 시스템 (0) 2021.08.05 JAVA_ 추상클래스를 통해 연결된 클래스 생성 (추상클래스, abstract) (0) 2021.08.04 JAVA_고객 정보 맞춤 서비스 프로그램 (JAVA 상속, super(), 구현부 추가) (0) 2021.08.03 JAVA_고객 정보 맞춤 서비스 프로그램 (JAVA 상속, super()) (0) 2021.08.03 댓글 (비로그인 댓글 허용하지 않습니다.)