Quiz06_game
* GameUnit 클래스
public abstract class GameUnit {
private String name;
private int energy;
private int power;
private boolean inAlive;
public GameUnit(String name, int energy, int power){
this.name = name;
this.energy = energy > 0 ? energy : 0;
this.power = power;
this.isAlive = energt > 0;
}
public void info() {
System.out.println(name + "에너지" + energy + "공격력" + power);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getEnergy() {
return energy;
}
public void setEnergy(int energy) {
this.energy = energy;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
public boolean isAlive() {
return isAlive;
}
public void setAlive(boolean isAlive) {
this.isAlive = isAlive;
}
public abstract void attack(GameUnit unit);
}
* Tank 클래스
public class Tank extends GameUnit{
public Tank(String name){
super(name, 100, 10);
}
@override
public void attack(GameUnit unit) {
if(Math.random() < 0.1) {
unit.setEnergy(0);
unit.setAlive(false);
System.out.println(unit.getName() + "을 한 방에 죽였다.");
} else {
int unitEnergy = unit.getEnergy() - getPower() < 0 ? 0 : unit.getEnergy() - getPower();
unit.setEnergy(unitEnergy);
unit.setAlive(unitEnergy > 0);
System.out.println(unit.getName() + "의 남은 에너지" + unit.getEnergy());
}
}
}
* Marine 클래스
public class Marine extends GameUnit{
public Marine(String name) {
super(name, 50, 5);
}
@Override
public void attack(GameUnit unit) {
if(Math.random() < 0.4) {
unit.setEnergy(0);
unit.setAlive(false);
System.out.println(unit.getName() + "를 한 방에 죽였다.");
} else {
int unitEnergy = unit.getEnergy() - getPower() < 0 ? 0 : unit.getEnergy() - getPower();
unit.setEnergy(unitEnergy);
unit.setAlive(unitEnergy > 0);
System.out.println(unit.getName() + "의 남은 에너지" + unit.getEnergy());
}
}
}
* Main클래스
public class Main {
public static void main(String[] args) {
GameUnit unit1 = new Tank("탱크");
GameUnit unit2 = new Marine("마린");
unit1.info();
unit2.info();
System.out.println("===전투시작===");
boolean myTurn = Math.random() < 0.5;
while(unit1.isAlive() && unit2.isAlive()) {
if(myTurn) {
System.out.println(unit1.getName() + "의 공격!");
unit1.attack(unit2);
}else {
System.out.println(unit2.getName() + "의 공격!");
unit2.attack(unit1);
}
myTurn = !myTurn;
}
System.out.println("===전투 종료===");
if(unit1.isAlive()) {
System.out.println(unit1.getName() + "의 승리! 남은 에너지 " + unit1.getEnergy());
} else {
System.out.println(unit2.getName() + "의 승리! 남은 에너지 " + unit2.getEnergy());
}
}
}