Override을 가지고 간단한 게임(?)만들기
이번에는 java의 상속이라는 특성을 사용해 아주아주아주 간단한 게임을 만들어 보겠습니다.
게임의 내용은 옛날의 다마고치를 생각하면 될거 같은데 캐릭터 키우기 입니다.
일단은 부모클래스부터 작성 하겠습니다.
public class Poket {
public String race; // 종족
public String name; // 캐릭터 이름
public int age; // 나이
public int power; // 파워
public int energy; // 에너지
int cnt;
public Poket() // 생성자
{
System.out.println("시작");
}
public void eat() // 밥먹기
{
energy += 15; // 에너지 15씩 증가
cnt++; // cnt는 1씩 증가
aging(); // aging()매소드를 호출
}
public void sleep() // 자기
{
energy += 5;
cnt++;
aging();
}
public void exercise() // 운동
{
energy -= 10;
power += 10;
}
public void aging() // 나이 먹기
{
if(cnt > 3) // cnt가 3보다 커지면
{
age++; // 나이를 먹는다
cnt = 0;
}
}
public void attack() // 공격하기
{
energy -= 15;
power += 20;
}
public void print() // 현재 상태출력 하기
{
System.out.println("나이 : " +age);
System.out.println("파워 : " +power);
System.out.println("에너지 : " +energy);
}
}
이번에는 여러가지 캐릭터들의 vo를 설정 하겠습니다. (중복 구문은 제거)
public class Lee extends Poket { // Poket 클래스로 부터 상속한다.
public int cnt;
public Lee(String name)
{
// Poket에서 가져왔기 때문에 따로 형태를 지정해주지 않아도된다.
this.name = name; // 이름으로 초기화
race = "Leesanghae"; // 종족은 이상해로 초기화
age = 0; // 나이는 0으로 초기화
power = 150; // 파워는 150으로 초기화
energy = 200; // 에너지는 200으로 초기화
cnt = 0; // cnt는 0
System.out.println("이상해씨가 만들어졌습니다.");
}
public void eat() // 밥먹기
{
energy += 15; // 에너지 15씩 증가
cnt++; // cnt는 1씩 증가
aging(); // aging()매소드를 호출
}
public void sleep() // 자기
{
energy += 5;
cnt++;
aging();
}
public void exercise() // 운동
{
energy -= 10;
power += 10;
}
public void aging() // 나이먹기
{
if(cnt > 3)
{
age++;
cnt = 0;
}
}
public void attack() // 공격
{
energy -= 15;
power += 20;
}
public void print() // 마찬가지로 상태출력
{
System.out.println("나이 : " +age);
System.out.println("파워 : " +power);
System.out.println("에너지 : " +energy);
}
}
public class Gobook extends Poket {
public int cnt;
public Gobook (String name)
{
this.name = name;
race = "Gobook";
age = 0;
power = 50;
energy = 150;
cnt = 0;
System.out.println("꼬북이가 만들어졌습니다.");
}
}
public class Picachu extends Poket {
public int cnt;
public Picachu(String name)
{
this.name = name;
race = "Picachu";
age = 0;
power = 100;
energy = 300;
cnt = 0;
System.out.println("피카츄가 만들어졌습니다.");
}
}
public class ExcMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 너무나도 익숙한 Scanner
Poket p = null; // Poket 객체 선언 및 null값으로 초기화
System.out.println("포켓몬을 선택하시오.");
System.out.println("1. 피카츄\n2. 이상해씨\n3. 꼬부기");
int x = sc.nextInt(); // 종족값을 입력받음
System.out.println("이름을 입력하시오.");
String name = sc.next(); // 이름을 입력받음
if(x==1)
p = new Picachu(name);
else if(x==2)
p = new Lee(name);
else if(x==3)
p = new Gobook(name);
boolean flag = true;
while(flag)
{
System.out.println("메뉴");
System.out.println("1. 밥\n2. 잠\n3. 운동\n4. 공격\n5. 끝");
x = sc.nextInt();
switch(x)
{
case 1:
o.eat();
o.print();
break;
case 2:
o.sleep();
o.print();
break;
case 3:
o.exercise();
o.print();
if(o.energy <= 0)
{
System.out.println("게임 종료");
flag = false;
}
break;
case 4:
o.attack();
o.print();
if(o.energy <= 0)
{
System.out.println("게임 종료");
flag = false;
}
break;
case 5:
flag = false;
}
}
}
}
맨위에 작성된 Poket을 부모클래스로 가지고, 나머지 캐릭터들이 오버라이딩 해서 사용할 수 있다는 것을 가지고 만들었습니다.
'JAVA > java' 카테고리의 다른 글
Override 오버라이드 (0) | 2017.09.07 |
---|---|
객체지향(2) (0) | 2017.09.06 |
객체지향(1) (0) | 2017.09.06 |
Method (0) | 2017.09.05 |
Array(2) array & for & for-each (0) | 2017.09.05 |