JAVA 자료실

대전 게임 만들기 2

작성자 정보

  • 작성자 최고관리자
  • 작성일

컨텐츠 정보

본문

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

MainTest.java


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);
        }
    }
}


Hero.java


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: %dn", enermy.name, enermy.hp);
    }

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


Knight.java


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: %dn", enermy.name, enermy.hp);
    }

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


Wizard.java


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: %dn", enermy.name, enermy.hp);
    }

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

관련자료

댓글 0
등록된 댓글이 없습니다.
알림 0