GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the Java

Math.random() 메소드 이용한 디아블로 전투

Backcoder 2022. 6. 9. 15:51

Math.radom()  -  게임쪽 개발에서는 거의 핵심이라 할 정도로 중요한 메소드가 아닐까 생각이 든다.

데미지 수치,  아이템 획득 확률 수치도 이 random 메소드를 활용해서 if 문으로

if( 0.000002 > Math.random()) { 아이템을 주도록 하지 } 

이런식으로 확률 수치도 어느정도 만들 수 있을 것 같다. 

 

< Random클래스 >   ( Math.random 과 유사한 기능 ) 

java.util.Random 클래스 
Random r1 = new Random( ); 
r1.nextInt( ); => 정수(무제한) 
r1.nextInt( 100 );   => 정수 (0<= ? < 100) 난수  
r1.nextDouble( ); => 실수(무제한) 

 

 

고전게임들, 환세취호전, 포켓몬스터 같은 게임들이 약간은 이런 형태를 써서 만들어 졌겠구나 생각이 든다. 

if 문 연습도 할겸 hp를 아슬아슬하게 맞춰두면, 그때그때 바뀌는 결과를 보는것도 재밌었다.  

class dia{

    String name;
    int hp;

    public dia(String name, int hp) {
        this.name = name;
        this.hp = hp;
    }


     void attack(dia enemy){
         int damage = (int)(random() * 10 + 11);
         enemy.hp -= damage;

         System.out.println( this.name+"의 공격으로 "+enemy.name + "의 피가 -"+ damage +"달았습니다. ");
         if (enemy.hp>=1){
         System.out.println("현재 "+enemy.name+"의 남은 hp : "+ enemy.hp);}
         else {
             System.out.println("전투 중 " +this.name+"의 공격으로 "+enemy.name +"이(가) 사망하였습니다.");
         }

    }

}

 

dia user1 = new dia("아마존", 35);
dia enemy1 = new dia("디아블로", 100);


user1.attack(enemy1);
enemy1.attack(user1);
user1.attack(enemy1);
user1.attack(enemy1);

enemy1.attack(user1);
if (user1.hp<1){
    System.out.println("아마존이 디아블로의 공격으로 사망했습니다.\n악의 사도의 힘이 더욱 강해집니다.");}
else if (user1.hp>=1) {
user1.attack(enemy1);
user1.attack(enemy1);
user1.attack(enemy1);}
if (enemy1.hp>=1){
user1.attack(enemy1);}
if (enemy1.hp<1){
    System.out.println("디아블로를 죽여 악의 사도의 힘이 약해졌습니다.");
}
else if (enemy1.hp>=1 && user1.hp>=1)          {
    enemy1.attack(user1);
    System.out.println("아마존이 디아블로의 공격으로 사망했습니다.\n악의 사도의 힘이 더욱 강해집니다.");
}

 

다음엔, 반복문으로 돌리는 것도 만들어 봐야겠습니다.