안녕하세요. 자바입문 강의 제공해 주신 덕분에 재미있게 잘 배우고있습니다. 아직 배우는 입장이라 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); } } } ```
# 답변 안녕하세요. 제강의가 도움이 되었다니 기쁘네요^^ 답변드릴게요! ## 확률적으로 공격자 선택하기 공격자의 타입은 `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); } } ``` ## 생각거리 위 코드를 수행하면 결국 한명이 살아남게 되는데 누가살아남았는지 출력해보면 좋을 것 같아요.