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악의 사도의 힘이 더욱 강해집니다.");
}
다음엔, 반복문으로 돌리는 것도 만들어 봐야겠습니다.
'Back to the Java' 카테고리의 다른 글
OOP 객체를 지향하는 프로그래밍을 지향하자 (0) | 2022.06.12 |
---|---|
BMI 비만 측정기, String.format() (0) | 2022.06.11 |
Back to the Java - Static (0) | 2022.05.27 |
Back to the java - 로그인 Id pw 조건문 (0) | 2022.05.26 |
Back to the Java - Hellow! (0) | 2022.05.26 |