# 리얼 격투 게임 attacker, defender 변수 선언 없이 바로 if(Math.random() > 0.5) { a.punch(b); } else { b.punch(a); 이렇게 해도 되나요? 안된다면 어떤 문제가 있을까요? #### CODE <a class='btn btn-default' href='/codes/55028'>Link</a> ``` public class HeroTest { public static void main(String[] args) { // 두 싸움꾼 객체 생성 Hero arthas = new Hero("아서스"); Hero leona = new Hero("레오나"); // 격투 시작 Hero.battle(arthas, leona); } } class Hero { // 필드 String name; int hp; // 생성자 public Hero(String str) { name = str; hp = 30; } // 메소드(인스턴스 메소드) public void punch(Hero enemy) { /* 1. 해당 메소드를 완성하세요. */ System.out.printf("[%s]의 펀치\n", name); enemy.hp -= 10; System.out.printf("\t%s: %d/30\n", enemy.name, enemy.hp); } // 메소드(클래스 메소드) public static void battle(Hero a, Hero b) { /* 2. 해당 메소드를 완성하시오. */ while(a.hp > 0 && b.hp>0) { if(Math.random() > 0.5) { a.punch(b); } else { b.punch(a); } } } } ``` #### INPUT ``` ``` #### OUPUT ``` [레오나]의 펀치 아서스: 20/30 [아서스]의 펀치 레오나: 20/30 [아서스]의 펀치 레오나: 10/30 [레오나]의 펀치 아서스: 10/30 [아서스]의 펀치 레오나: 0/30 ```
제시한 코드의 파라미터(입력변수)를 보면 Hero a, Hero b 가 있습니다. 이를 바로 활용하여도 무방합니다. ``` public static void battle(Hero a, Hero b) { /* 2. 해당 메소드를 완성하시오. */ while(a.hp > 0 && b.hp>0) { if(Math.random() > 0.5) { a.punch(b); } else { b.punch(a); } } ```