안녕하세요. 자바입문 강의 제공해 주신 덕분에 재미있게 잘 배우고있습니다. 아직 배우는 입장이라 Hero 게임 연습하다가 많이 헷갈려서 질문 올립니다!
1/2 로 공격자를 선정한다는데 boolean을 사용하는 게 맞나요? 그리고 random을 사용할때는 숫자만 가능한가요? 열심히 영어로 구글에 검색해봤는데 확실치 않아서요 ㅠ
제 코드가 많이 이상하지만.. 창피함을 불구하고 조언을 구하자 올립니다! correction 혹은 comment 부탁드릴게요 감사해요!
```
import java.util.Random;
public class StreetFighter {
private String name;
private int hp = 100;
public StreetFighter(String name){
this.name = name;
}
public void punch(StreetFighter enemy) {
enemy.hp -= 10;
System.out.printf("[%s]'s punch \n", this.name);
System.out.printf("\t%s: %d/100\n", enemy.name, enemy.hp);
System.out.println(name + " is now winning!");
}
public static void main(String[] args) throws InterruptedException {
StreetFighter arther = new StreetFighter("arther");
StreetFighter leona = new StreetFighter("leona");
while (arther.hp > 0 && leona.hp > 0) {
boolean winner = arther || leona;
return winner;
winner.punch(enemy);
Thread.sleep(1000);
}
}
}
```
sehongpark님의 답변
# 답변
안녕하세요. 제강의가 도움이 되었다니 기쁘네요^^ 답변드릴게요!
## 확률적으로 공격자 선택하기
공격자의 타입은 `StreeFighter`로 사용하고, 공격자를 선택하는 과정에서 `boolean` 을 사용해주세요.
## Random 클래스의 사용
Random 클래스는 int, double, boolean 등 다양하게 사용 가능해요.
## Correction
```
public static void main(String[] args) throws InterruptedException {
StreetFighter arther = new StreetFighter("arther");
StreetFighter leona = new StreetFighter("leona");
Random rand = new Random();
StreetFighter attacker = null;
StreetFighter defender = null;
while (arther.hp > 0 && leona.hp > 0) {
// 1/2확률 공격자, 수비자 선정
boolean flag = rand.nextBoolean();
if (flag == true) {
attacker = arther;
defender = leona;
} else {
attacker = leona;
defender = arther;
}
// 공격
attacker.punch(defender);
// sleep
Thread.sleep(1000);
}
}
```
## 생각거리
위 코드를 수행하면 결국 한명이 살아남게 되는데 누가살아남았는지 출력해보면 좋을 것 같아요.