부모 클래스 Monster를 생성한 후 상속, 자식 클래스인 Slime, Mushroom 생성
package monster_battle;
import javax.swing.JOptionPane;
class Monster {
String name;
int hp = 80;
public Monster(String n) {
name = n;
}
public void attack(Human h) {
attack(h, 10);
}
public void attack(Human h, int damage) {
if(hp > 0) {
h.hp = h.hp - damage;
if (h.hp < 1) {
JOptionPane.showMessageDialog(null, "Game Over");
System.exit(0);
}
if(damage < 30) {
MonsterBattle.lbl2.setText(name + "의 공격. " + h.name + "의 체력은 " + h.hp + "이다\n");
}else {
MonsterBattle.lbl2.setText(name + "의 강한 공격. " + h.name + "의 체력은 " + h.hp + "이다\n");
}
}
}
}
class Slime extends Monster{
//생성자
Slime(String n){
super(n);
}
//약한 공격
@Override
public void attack(Human h) {
attack(h, 8);
}
//치료
void heal(Monster s) {
if(hp > 0 && s.hp > 0) {
s.hp += 10;
if(s.hp > 80) {
s.hp = 80;
}
MonsterBattle.lbl2.setText(name + "은 " + s.name + "을 치료. 남은 체력은" + s.hp + "." );
}
}
}
class Mushroom extends Monster{
Mushroom(String n){
super(n);
}
//강한 공격
@Override
public void attack(Human h) {
attack(h, 15);
}
public void power_attack(Human h) {
attack(h, 30);
}
}
유저용 객체인 Human Class 생성
package monster_battle;
import javax.swing.ImageIcon;
import java.util.Timer;
import java.util.TimerTask;
class Human {
String name;
int hp = 100;
public void attack(Monster mon) {
mon.hp = mon.hp - 30;
if (mon.hp < 1) {
//사망시 이미지
ImageIcon sImg_dead = new ImageIcon(MonsterBattle.class.getResource("/monster_battle/img/slime_dead.png"));
ImageIcon mImg_dead = new ImageIcon(MonsterBattle.class.getResource("/monster_battle/img/mushroom_dead.png"));
if(mon == MonsterBattle.s1) {
MonsterBattle.btn1.setEnabled(false);
MonsterBattle.imgLbl.setIcon(sImg_dead);
} else {
MonsterBattle.btn2.setEnabled(false);
MonsterBattle.imgLbl2.setIcon(mImg_dead);
}
MonsterBattle.lbl.setText(mon.name + "은 사망했다\n");
MonsterBattle.lbl2.setText("");
}else {
//피격시 이미지
ImageIcon sImg_attacked = new ImageIcon(MonsterBattle.class.getResource("/monster_battle/img/slime_attacked.png"));
ImageIcon mImg_attacked = new ImageIcon(MonsterBattle.class.getResource("/monster_battle/img/mushroom_attacked.png"));
Timer timer1 = new Timer();
TimerTask task1;
if (mon == MonsterBattle.s1) {
MonsterBattle.imgLbl.setIcon(sImg_attacked);
task1 = new TimerTask() {
@Override
public void run() {
//일정시간 후에 수행
MonsterBattle.imgLbl.setIcon(MonsterBattle.bsImg);
timer1.cancel();
}
};
}else{
MonsterBattle.imgLbl2.setIcon(mImg_attacked);
task1 = new TimerTask() {
@Override
public void run() {
//일정시간 후에 수행
MonsterBattle.imgLbl2.setIcon(MonsterBattle.rsImg);
timer1.cancel();
}
};
}
timer1.schedule(task1, 500);
MonsterBattle.lbl.setText("현재 " + mon.name + "의 체력은 " + mon.hp + "이다\n");
}
}
}