ver 0.0.1 Starcraft - 11
💡 학습 목표
여기 까지 배웠던 부분의 핵심 개념들을 활용해 보자.
zealot
package starcraft.ver01;
public class Zealot {
private String name;
private int power;
private int hp;
public Zealot(String name) {
this.name = name;
power = 5;
hp = 80;
}
// 질럿이 저글링을 공격합니다.
public void attackZergling(Zergling z) {
System.out.println("[" + this.name + "]이 [" + z.getName() + "]을 공격합니다.");
z.beAttacked(this.power);
}
// 질럿이 마린을 공격합니다.
public void attackMarin(Marine m) {
System.out.println("[" + this.name + "]이 [" + m.getName() + "]을 공격합니다.");
m.beAttacked(this.power);
}
// 자신이 공격을 당합니다.
public void beAttacked(int power) {
// 방어적 코드 작성
// 80 -- 75 == 5
// 5 - 75 ==
if (hp <= 0) {
System.out.println("[" + this.name + "] 이미 사망하였습니다.");
return;
}
hp -= power;
if (hp < 0) hp = 0;
}
public void showInfo() {
System.out.println("==== 상태창 ====");
System.out.println("이름 : " + this.name);
System.out.println("공격력 : " + this.power);
System.out.println("생명력 : " + this.hp);
}
// getter
public String getName() {
return name;
}
public int getPower() {
return power;
}
public int getHp() {
return hp;
}
public void setName(String name) {
this.name = name;
}
public void setPower(int power) {
this.power = power;
}
public void setHp(int hp) {
this.hp = hp;
}
}
zergling
package starcraft.ver01;
public class Zergling {
private String name;
private int power;
private int hp;
public Zergling(String name) {
this.name = name;
power = 3;
hp = 50;
}
// 저글링이 질럿을 공격합니다.
public void attackZealot(Zealot z) {
System.out.println("[" + this.name + "]이 [" + z.getName() + "]을 공격합니다.");
z.beAttacked(this.power);
}
// 저글링이 마린을 공격합니다.
public void attackMarin(Marine m) {
System.out.println("[" + this.name + "]이 [" + m.getName() + "]을 공격합니다.");
m.beAttacked(this.power);
}
public void showInfo() {
System.out.println("==== 상태창 ====");
System.out.println("이름 : " + this.name);
System.out.println("공격력 : " + this.power);
System.out.println("생명력 : " + this.hp);
}
// 자신이 공격을 당합니다.
public void beAttacked(int power) {
// 방어적 코드 작성
if (hp <= 0) {
System.out.println("[" + this.name + "] 이미 사망하였습니다.");
return;
}
hp -= power;
if (hp < 0)
hp = 0;
}
// get, set - 단축키 alt + shift + s
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
}
Marine
package starcraft.ver01;
public class Marine {
private String name;
private int power;
private int hp;
public Marine(String name) {
this.name = name;
power = 4;
hp = 70;
}
// 마린이 질럿을 공격합니다.
public void attackZealot(Zealot z) {
System.out.println("[" + this.name + "]이 [" + z.getName() + "]을 공격합니다.");
z.beAttacked(this.power);
}
// 마린이 저글링을 공격합니다.
public void attackZergling(Zergling z) {
System.out.println("[" + this.name + "]이 [" + z.getName() + "]을 공격합니다.");
}
// 자신이 공격을 당합니다.
public void beAttacked(int power) {
// 방어적 코드 작성
if (hp <= 0) {
System.out.println("[" + this.name + "] 이미 사망하였습니다.");
return;
}
hp -= power;
if (hp < 0)
hp = 0;
}
public void showInfo() {
System.out.println("==== 상태창 ====");
System.out.println("이름 : " + this.name);
System.out.println("공격력 : " + this.power);
System.out.println("생명력 : " + this.hp);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
}
test1 ( 생성해보고 공격 메소드 사용)
package starcraft.ver01;
public class StarCraftTest1 {
public static void main(String[] args) {
// 질럿 2
Zealot zealot1 = new Zealot("질럿1");
Zealot zealot2 = new Zealot("질럿2");
// 마린 2
Marine marine1 = new Marine("마린1");
Marine marine2 = new Marine("마린2");
// 저글링 2
Zergling zergling1 = new Zergling("저글링1");
Zergling zergling2 = new Zergling("저글링2");
for (int i = 0; i < 15; i++) {
zealot1.attackMarin(marine2);
}
marine2.showInfo();
}
}
게이트웨이, 해처리, 배럭
package starcraft.ver01;
public class GateWay {
private int gateWayNumber;
private int count;
public GateWay(int gateWayNumber) {
this.gateWayNumber = gateWayNumber;
}
public int getCount() {
return count;
}
public int getGateWayNumber() {
return gateWayNumber;
}
// 기능 - 질럿 생산하는 기능을 만들어 보세요
public Zealot createZealot(String name) {
count++;
return new Zealot(name);
}
}
package starcraft.ver01;
public class Hatchery {
private int hatcheryNumber;
private int count;
public Hatchery(int hatcheryNumber) {
this.hatcheryNumber = hatcheryNumber;
}
public int getHatcheryNumber() {
return hatcheryNumber;
}
public int getCount() {
return count;
}
public Zergling createZergling(String name) {
count++;
return new Zergling(name);
}
}
package starcraft.ver01;
public class Barracks {
private int barracksNumber;
private int count;
public Barracks(int number) {
this.barracksNumber = number;
}
public int getBarracksNumber() {
return barracksNumber;
}
public int getCount() {
return count;
}
public Marine createMarine(String name) {
count++;
return new Marine(name);
}
}
test2 (각각의 생산기지에서 생산해보기)
package starcraft.ver01;
import java.util.Scanner;
public class StarCraftTest2 {
public static void main(String[] args) {
final int ZEALOT = 1;
final int MARINE = 2;
final int ZERGLING = 3;
final int GAME_END = 0;
GateWay gateWay1 = new GateWay(1);
GateWay gateWay2 = new GateWay(2);
Hatchery hatchery1 = new Hatchery(1);
Hatchery hatchery2 = new Hatchery(2);
Barracks barracks1 = new Barracks(1);
Barracks barracks2 = new Barracks(2);
Zealot zealot1 = gateWay1.createZealot("질럿1");
Zealot zealot2 = gateWay1.createZealot("질럿2");
System.out.println(gateWay1.getGateWayNumber() + " : " + gateWay1.getCount());
System.out.println(gateWay2.getGateWayNumber() + " : " + gateWay2.getCount());
System.out.println("-----------------------------------------");
Zergling zergling1 = hatchery1.createZergling("저글링1");
Zergling zergling2 = hatchery2.createZergling("저글링2");
System.out.println(hatchery1.getHatcheryNumber() + " : " + hatchery1.getCount());
System.out.println(hatchery2.getHatcheryNumber() + " : " + hatchery2.getCount());
System.out.println("-----------------------------------------");
Marine marine1 = barracks2.createMarine("마린1");
Marine marine2 = barracks2.createMarine("마린2");
System.out.println(barracks1.getBarracksNumber() + " : " + barracks1.getCount());
System.out.println(barracks2.getBarracksNumber() + " : " + barracks2.getCount());
System.out.println("-----------------------------------------");
Scanner sc = new Scanner(System.in);
int unitChoice = -1;
do {
System.out.println("유닉을 선택하세요");
System.out.println("1.질럿\t 2.마린\t 3.저글링\t 0.게임종료");
unitChoice = sc.nextInt();
if (unitChoice == ZEALOT) {
} else if (unitChoice == MARINE) {
} else if (unitChoice == ZERGLING) {
} else {
System.out.println("프로그램을 종료 합니다.");
unitChoice = GAME_END;
}
System.out.println("값 확인 : " + unitChoice);
} while(unitChoice != GAME_END);
sc.close();
} // end of main
} // end of class
'Java > Java 객체 지향 핵심' 카테고리의 다른 글
팀 프로젝트 연습 fantasy (0) | 2024.04.18 |
---|---|
static 변수 - 12 (0) | 2024.04.18 |
this 3가지 사용 방법 - 10 (0) | 2024.04.18 |
접근 제어 지시자 - 9 (0) | 2024.04.17 |
클래스 설계 자유 실습 (0) | 2024.04.17 |