# 리얼 격투 게임
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
```
haesamq님의 답변
제시한 코드의 파라미터(입력변수)를 보면
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);
}
}
```