피카추와 꼬부기를 키우는 다마고치 게임입니다
밥 먹이기, 잠재우기, 놀아주기, 운동 기능이 포함되어 있으며 레벨 4가 되면 진화합니다
인터페이스 생성
Character 클래스에 먹기, 자기, 놀기, 운동하기, 레벨업, 게임 끝내기, 정보창 메서드를 구현합니다
package com.human.character;
public interface Character {
public void eat();
public void sleep();
public void play();
public void train();
public void levelUp();
public boolean endGame();
public void printInfo();
}
|
cs |
캐릭터 생성 Class
피카추와 꼬부기 캐릭터를 생성하는 클래스입니다
아래의 양식으로 이름만 바꿔 피카추, 꼬부기라는 두 개의 클래스를 생성했습니다
예시는 꼬부기 클래스를 첨부합니다
경험치(experience), 에너지(energy), 레벨(level) 변수를 선언한 뒤 Character 클래스의 인터페이스 메소드를 바탕으로 각 캐릭터의 행동에 따른 값의 변화를 재정의 합니다
eat()은 먹는 행위로 에너지가 25 증가,
eat()은 먹는 행위로 에너지가 25 증가,
sleep()은 자는 행위로 에너지가 10 증가,
play()는 노는 행위로 에너지가 30 감소, 경험치가 30 증가,
train()은 운동 행위로 에너지가 20 감소, 경험치가 20 증가합니다
레벨업은 경험치(experience)가 60을 초과하면 쌓인 값에서 40을 뺀 뒤 1 업 됩니다
endGame()은 두 가지 조건이 있으며 레벨 4를 넘거나 에너지가 0이 되면 굶어 죽는 경우입니다
package com.human.character;
public class GGgoBooGi implements Character {
private int experience=40;
private int energy=50;
private int level=1;
@Override
public void eat() {
energy+=25;
System.out.println("냠냠~energy Up!");
System.out.println("");
}
@Override
public void sleep() {
energy+=10;
System.out.println("쿨쿨~energy Up!");
System.out.println("");
}
@Override
public void play() {
energy-=30;
experience+=30;
System.out.println("힘듦.....energy Down");
System.out.println("아이좋아~experience Up!");
System.out.println("");
}
@Override
public void train() {
energy-=20;
experience+=20;
System.out.println("힘듦.....energy Down");
System.out.println("아이좋아~experience Up!");
System.out.println("");
}
@Override
public void levelUp() {
if(experience>60) {
experience-=40;
level++;
System.out.println("레벨업!! "+ level);
System.out.println("");
}
}
@Override
public boolean endGame() {
boolean returnValue=true;
if(level>4) {
System.out.println("꼬부기가 어니부기로 진화했습니다!");
returnValue=false;
}else if(energy<0) {
System.out.println("꼬부기가 굶어 죽었습니다....");
returnValue=false;
}
return returnValue;
}
@Override
public void printInfo() {
System.out.println("==================");
System.out.println(" 꼬부기 정보창 ");
System.out.println(" experience: "+experience);
System.out.println(" energy: "+energy);
System.out.println(" level: "+level);
System.out.println("===================");
}
}
|
cs |
게임 화면 Class
Character 인터페이스를 character로 클래스 선언한 뒤 Character c로 변수처리 했습니다
기존에 자바에 Character와 유사한 래퍼 클래스(Character클래스)가 존재하기 때문에 Character라는 이름보다는 다른 이름으로 클래스를 만드시는 것을 추천합니다
boolean flag가 true일 경우 플레이가 무한으로 가능합니다
5번 종료의 flag값을 false;로 설정하였기 때문에 종료키를 입력하면 게임이 종료됩니다
package com.human.play;
import java.util.Scanner;
import com.human.character.Character;
import com.human.character.Pikachu;
import com.human.character.GGgoBooGi;
public class PlayGame {
private static Character character;
private boolean flag = true;
public void play(Character c) {
character=c;
Scanner sc = new Scanner(System.in);
while (flag) {
character.printInfo();
System.out.println("1.밥먹이기 2.잠재우기 3.놀아주기 4.운동 5.종료");
System.out.println("입력>>");
String select = sc.nextLine();
switch (select) {
case "1":
character.eat();
break;
case "2":
character.sleep();
break;
case "3":
character.play();
break;
case "4":
character.train();
break;
case "5":
flag = false;
break;
default:
break;
}
character.levelUp();
if (flag = true) {
flag = character.endGame();
}
}
}
}
|
cs |
키울 캐릭터를 선택하는 Class
예시에 생성된 피카추와 꼬부기 캐릭터 외에도 더 다양한 캐릭터를 추가할 수 있습니다
Character returnValue를 변수 선언한 뒤 사용자가 메뉴에서 캐릭터 선택 시 해당 캐릭터 Class를 returnValue에 넣어 불러오는 기능을 합니다
package com.human.play;
import java.util.Scanner;
import com.human.character.GGgoBooGi;
import com.human.character.Pikachu;
import com.human.character.Character;
public class MakeCharacter {
public Character selectCharacter() {
Scanner sc = new Scanner(System.in);
Character returnValue = null;
System.out.println("캐릭터를 선택하세요");
System.out.println("1.피카추");
System.out.println("2.꼬부기");
String ch = sc.nextLine();
switch (ch) {
case "1":
returnValue = new Pikachu();
break;
case "2":
returnValue = new GGgoBooGi();
break;
}
return returnValue;
}
}
|
cs |
게임 실행
클래스 구현이 끝났으니 메인 메서드에서 실행하는 일만 남았습니다
실행을 위한 StartGame 클래스를 생성하여 PlayGame와 MakeCharacter 클래스를 각각 pg, mc 변수로 선언한 뒤
Character 클래스의 selectCharacter 함수를 mc.selectCharacter()로 대입시켜 pg.play()에서 실행합니다
package com.human.ex;
import com.human.character.Pikachu;
import com.human.play.MakeCharacter;
import com.human.play.PlayGame;
import com.human.character.Character;
public class StartGame {
public static void main(String[] args) {
PlayGame pg = new PlayGame();
MakeCharacter mc = new MakeCharacter();
Character selectCharacter=mc.selectCharacter();
pg.play(selectCharacter);
}
}
|
cs |
<실행결과>
'개발자였던 것 > JAVA 프로그래밍' 카테고리의 다른 글
[java] 스택 소스 (0) | 2020.08.18 |
---|---|
[java] 은행 회원관리 프로그램(메소드 구현) (0) | 2020.05.08 |
사용자로부터 국어, 영어, 수학 점수를 입력 받아, 각 과목별 점수가 평균 이상인지 이하인지 구현하는 조건문 (0) | 2020.03.28 |
사각형의 넓이와 둘레를 구하는 메소드 구현 (0) | 2020.03.26 |
블랙잭 게임 메소드 구현 (0) | 2020.03.23 |