inblog logo
|
An's Blog
    JAVA

    [JAVA] 42. 오버라이드로 게임 만들기

    윤설안's avatar
    윤설안
    Feb 17, 2025
    [JAVA] 42. 오버라이드로 게임 만들기
    Contents
    내가 찾아서 한 것들
    ❗
    DarkTempler (hp=100, power=70)
    Arkan (hp=100, power=70)
     
    5가지 유닛이 서로 다 공격할 수 있게 attack() 구현하기
     
    생성
    → 질럿2
    → 드라군2
    → 다크템플러2
    → 리버2
    → 아칸2 공격 → 질럿이 드라군 공격 hp 확인
    → 질럿이 다크템플러 공격 hp 확인
    → 리버가 아칸 공격 hp 확인
    → 아칸 리버 공격 hp 확인
    → 드라군이 다크템플러 공격 hp 확인
    → 리버가 리버 공격 hp 확인
    ❗
    Protoss 만들어서 추상적인 것에 의존하기 (attack 함수 결국 한개에요)
    package ex05.ch04; class protoss { public int getHp() { // HP 상태확인 return 1; } public void setHp(int hp) { // HP 상태변경 } public int getPower() { // Power 상태확인 return 1; } } class Zealot extends protoss { int hp = 100; int power = 20; public int getHp() { return hp; } public void setHp(int hp) { this.hp = hp; } public int getPower() { // 상태확인 return power; } } class Dragoon extends protoss { int hp = 100; int power = 10; public int getHp() { return hp; } public void setHp(int hp) { this.hp = hp; } public int getPower() { // 상태확인 return power; } } class River extends protoss { int hp = 100; int power = 50; public int getHp() { return hp; } public void setHp(int hp) { this.hp = hp; } public int getPower() { // 상태확인 return power; } } class Arakn extends protoss { int hp = 100; int power = 70; public int getHp() { return hp; } public void setHp(int hp) { this.hp = hp; } public int getPower() { // 상태확인 return power; } } class DarkTempler extends protoss { int hp = 100; int power = 90; public int getHp() { return hp; } public void setHp(int hp) { this.hp = hp; } public int getPower() { // 상태확인 return power; } } public class StarGame { static void attack(protoss aUnit, protoss hUnit) { hUnit.setHp(hUnit.getHp() - aUnit.getPower()); } public static void main(String[] args) { protoss z1 = new Zealot(); // [ Zealot, protoss] protoss z2 = new Zealot(); // [ Zealot, protoss] protoss d1 = new Dragoon(); protoss d2 = new Dragoon(); protoss r1 = new River(); protoss r2 = new River(); protoss dt1 = new DarkTempler(); protoss dt2 = new DarkTempler(); protoss a1 = new Arakn(); protoss a2 = new Arakn(); attack(z1, d1); System.out.println("질럿 공격(20) -> 드라군 d1의 hp : " + d1.getHp()); attack(z1, dt2); System.out.println("질럿 공격(20) -> 다크템플러 dt2의 hp : " + dt2.getHp()); attack(r1, a1); System.out.println("리버 공격(50) -> 아칸 a1의 hp : " + a1.getHp()); attack(a2, r1); System.out.println("아칸 공격(70) -> 리버 r1의 hp : " + r1.getHp()); attack(d1, dt1); System.out.println("드라군 공격(10) -> 다크템플러 dt1의 hp : " + dt1.getHp()); attack(r1, r2); System.out.println("리버 공격(50) -> 리버 r2의 hp : " + r2.getHp()); attack(dt1, z1); System.out.println("다크템플러 공격(90) -> 리버 r1의 hp : " + z1.getHp()); attack(dt2, dt1); System.out.println("다크템플러 공격(90) -> 다크템플러 dt1의 hp : " + dt1.getHp()); } }
    notion image

    내가 찾아서 한 것들

    • 공격을 하기 위해서는 때리는 클래스와 맞는 클래스가 있다는 것을 파악.
    • 때리는 클래스가 있다면 power를 알아야 하기 때문에 getPower()를 이용하여 각 클래스의 power를 파악.
    강사님 정답
    Share article
    Contents
    내가 찾아서 한 것들

    An's Blog

    RSS·Powered by Inblog