JAVA 자료실

대전 게임 만들기 2

페이지 정보

작성자 최고관리자 작성일 70-01-01 09:00 조회 331 댓글 0

본문

영웅은 직업을 선택할 수 있다.
기사
법사
기사는 체력이 추가되며, 배쉬를 사용 할 수 있다.
체력: +100
배쉬: 데미지 30
법사는 체력이 추가되며, 파이어볼을 사용 할 수 있다.
체력: +80
파이어볼: 데미지 35
게임은 두 영웅의 생성과 동시에 시작되며 둘중 하나가 죽을 때까지 서로 공격 한다.
영웅이 공격 기회를 얻을 확률은 동일하다.
모든 기술은 동일한 발동 확률을 지닌다.

MainTest.java

[code=php]
import java.util.Random;

public class MainTest {
    // 테스트 코드
    public static void main(String[] args) throws InterruptedException {

        Hero arthas = new Knight("아서스");
        Hero leona = new Wizard("레오나");

        Random random = new Random();

        while (arthas.hp > 0 && leona.hp > 0) {
            Boolean isArthasTurn = random.nextBoolean();
            Hero attacker = isArthasTurn ? arthas : leona;
            Hero defender = isArthasTurn ? leona : arthas;

            attacker.attack(defender);
            Thread.sleep(1000);
        }
    }
}
[/code]

Hero.java

[code=php]
public class Hero {

    protected String name;
    protected int hp = 100;

    // 생성자
    public Hero(String name) {
        this.name = name;
    }

    // 펀치
    public void punch(Hero enermy) {
        enermy.hp -= 10;
        System.out.printf("[%s]의 ☞ 펀치 ☞\n", this.name);
        System.out.printf("\t%s: %d\n", enermy.name, enermy.hp);
    }

    // 공격
    public void attack(Hero enermy) {
        punch(enermy);
    }
}
[/code]

Knight.java

[code=php]
import java.util.Random;

public class Knight extends Hero {
    // 생성자
    public Knight(String name) {
        super(name);
        super.hp += 100; // 체력 +100
    }

    // 배쉬
    public void bash(Hero enermy) {
        enermy.hp -= 30;
        System.out.printf("[%s]의 ⤷︎ 배쉬 ⤵\n", this.name);
        System.out.printf("\t%s: %d\n", enermy.name, enermy.hp);
    }

    // 공격
    @Override
    public void attack(Hero enermy) {
        if (new Random().nextBoolean())
            this.bash(enermy);
        else
            super.attack(enermy);
    }
}
[/code]

Wizard.java

[code=php]
import java.util.Random;

public class Wizard extends Hero {
    // 생성자
    public Wizard(String name) {
        super(name);
        super.hp += 80;
    }

    // 파이어볼
    public void fireball(Hero enermy) {
        enermy.hp -= 35;
        System.out.printf("[%s]의 ✡ 파이어볼 ✡\n", this.name);
        System.out.printf("\t%s: %d\n", enermy.name, enermy.hp);
    }

    // 공격
    @Override
    public void attack(Hero enermy) {
        if (new Random().nextBoolean())
            this.fireball(enermy);
        else
            super.attack(enermy);
    }
}
[/code]

댓글목록 0

등록된 댓글이 없습니다.

알림 0