반응형
// Human.java
package study;
// public이 있어도 되고, 없어도 불러지기는 한다.
public class Human {
String name;
int hp = 100;
public Human(String n) {
name = n;
}
public void attack(Slime s) {
System.out.println("인간은 " + s.name +"를 공격했습니다.");
s.hp = s.hp - 10;
// 당연히 슬라임이 죽는 코드를 짜는 것이기 때문에
// 위의 데이미를 입히는 것 다음에 아래 코드가 나와야 한다.
// 하지만 이렇게만 끝나면, 사망한 슬라임이 죽은 뒤에도
// 주인공을 공격하는 버그가 생긴다.
// 여전히 메인함수의 s.attack(h); 가 실행되기 때문이다.
if (s.hp < 1) {
System.out.println(s.name + "는 " + "사망했다.\n");
}
// 아직 죽지 않았을 경우 사망할 때까지 else로 체력을 표시한다.
else {
System.out.println("현재 " + s.name + "의 체력은 " + s.hp + "이다.\n");
}
System.out.println("현재 " + s.name + "의 체력은 " + s.hp + "이다\n");
}
}
// Study01.java
package study;
import javax.swing.JOptionPane;
public class Study01 {
public static void main(String[] args) {
// 빈 슬라임 변수를 만드는 것으로
// 슬라임 변수를 후에 묶어주는 역할을 할 수 있다.
Slime s = null;
// 슬라임과 인간 객체 생성
Slime s1 = new Slime("스라이무");
Slime s2 = new Slime("스시무");
Human h = new Human("손오공");
System.out.println(s1.name + "와 " + s2.name + "이 나타났다! 당신의 이름은 " + h.name + "이다.\n" );
/*
Byte.parseByte();
Short.parseShort();
Integer.parseInt();
Long.parseLong();
Float.parseFloat();
Double.parseDouble();
*/
// parseint는 스트링타입의 숫자를 int타입으로 변환해주는 것이다.
while(true) {
// 인풋박스 : 입력메시지 창을 열고, sTarget이라고 명명한
// 스트링 타입 변수로 저장한다.
String sTarget = JOptionPane.showInputDialog("어느 슬라임을 공격하시겠습니까? 1은 " + s1.name + " 2는 " + s2.name);
// 빈값이나 null값이 입력되면 종료한다.
// 이렇게 사용자가 값을 넣지 않거나, 종료를 하더라도 프로그램은 오류메시지를 반환하지 않는다.
if (sTarget == null || sTarget.equals("")) {
System.exit(0);
}
int target = Integer.parseInt(sTarget);
if (target == 1) {
// 만약 사용자가 1을 선택하면 전체 슬라임을 대표하던 s = s1이 되도록 설정한 것으로
// 반복되는 구문을 리팩토링하는 방법이다.
s = s1;
}
else if (target == 2) {
s = s2;
}
else {
JOptionPane.showMessageDialog(null, "올바른 숫자를 입력하세요.");
}
// 그러면 반복되던 아래 구분이 s라는 변수 하나로 통합된다.
h.attack(s);
s.attack(h);
} // while 끝
}
}
반응형
'Projects > 자바 슬라임 게임 만들기' 카테고리의 다른 글
죽은 슬라임이 또 공격하는 버그 잡기 및 죽은 슬라임을 확인사살하는 버그 발견! (0) | 2022.01.27 |
---|---|
빈값을 넣거나, 데이터를 입력하지 않고 종료했을 때 생기는 에러를 방지하자. (0) | 2022.01.27 |
인풋박스에 데이터를 넣지 않고 종료했을 때 오류가 나는 이유 : null값과 빈값 (0) | 2022.01.27 |
객체인수를 활용한 메인함수 리팩토링 (0) | 2022.01.27 |
while문 사용해서 계속 hp 깎이게 하고 게임종료까지 하는 법 (0) | 2022.01.27 |