package craft;
import java.util.Random;
public class Main {
public static void main(String[] args) {
// 객체생성으로 3개의 객체를 만듬
Unit marine = new Unit("Marine", 20, 5, 6, 1, "Terran Unit");
Unit zealot = new Unit("Zealot", 30, 10, 8, 1, "Protoss Unit");
Unit zergling = new Unit("Zergling", 15, 10, 5, 1, "Zerg Unit");
// 질럿의 피가 0이 될 때까지 공격
while (zealot.getHp() > 0) {
marine.attack(zealot); //target은 zealot
}
// 각 객체의 정보를 출력
marine.printInfo();
System.out.println();
zealot.printInfo();
System.out.println();
zergling.printInfo();
// 0부터 20까지의 랜덤수가 생성되고 그 숫자에 맞게 객체들이 움직임
Random random = new Random();
int randomInt = random.nextInt(20) + 1;
System.out.println(randomInt); // 랜덤수 출력
System.out.println();
for (int i = 0; i < randomInt; i++) {
String direction = random.nextBoolean() ? "left" : "right";// >>true,false
marine.move(direction);
zealot.move(direction);
zergling.move(direction);
}
}
}
package craft;
public class Unit {
private String name; // 유닛명
private int hp; // 유닛 체력
private int speed; // 유닛 속도
private int damage; // 유닛 공격력
private int position; // 유닛 위치
private String description; // 유닛 정보
// 생성자
public Unit(String name, int hp, int speed, int damage, int position, String description) {
this.name = name;
this.hp = hp;
this.speed = speed;
this.damage = damage;
this.position = position;
this.description = description;
}
public String getName() {
return this.name;
}
public int getHp() {
return this.hp;
}
public int getDamage() {
return this.damage;
}
public void setHp(int hp) {
this.hp = hp;
}
// move 메서드 생성
public void move(String direction) {
// 방향은 어떤걸로 받을 지는 정의를 내려야함
if (direction.equals("left")) {
this.position -= 1;
} else if (direction.equals("right")) {
this.position += 1;
System.out.println(this.getName() + "유닛이 " + direction + "방향으로 이동합니다.");
System.out.println();
}
System.out.println(this.name + "의 현재 위치는 " + this.position + "입니다.");
System.out.println();
}
// 여기서의 target은 따로 지정한것이 아닌 말 그대로 Unit객체를 뜻함
// 따라서 공격하는 unit.attack(공격받는 unit)으로 작성하면됨
public void attack(Unit target) {
if (target.getHp() <= 0) {
System.out.println(target.getName() + "은 죽어 있습니다.");
return;
}
System.out.println(this.getName() + "이 " + target.getName() + "유닛을 공격합니다.");
// 타겟의 피를 감소하는 코드 > 타겟을 hp를 가져오는 getter, 유닛 공격력을 가져오는 getter ,hp를 감소시키는 setter
target.setHp(target.getHp() - this.getDamage());
if (target.getHp() == 0){
System.out.println(target.getName() + "이 사망했습니다.");
} else if (target.getHp() >= 0 ) {
System.out.println(target.getName() + "이 " + this.damage + "의 데미지를 입었습니다");
System.out.println(target.getHp() - this.getDamage());
}
//if문으로 분기처리
//if문으로 타켓 피가 0이면 사망했다고 문구나오고 안때림
}
public void printInfo() {
System.out.println("유닛명 : " + this.name + " \n체력 : " + this.hp + " \n속도 : " + this.speed + " \n공격력 : " + this.damage + " \n위치 : " + this.position + " \n특징 : " + this.description);
}
}
기초를 다시 익히는 과정에서 클래스의 구조에 대해 조금이마나 더 이해가 된것 같고 내일부터 다시 키오스크 과제를 집중적으로 다뤄보고
필수과정을 끝내고서 unit 4단계를 진행해보자
'내일배움캠프 > TIL' 카테고리의 다른 글
[JAVA] 키오스크 트레블 슈팅 Lv3~Lv4 (0) | 2025.01.20 |
---|---|
[JAVA] 키오스크 트레블 슈팅 Lv1~Lv2 (0) | 2025.01.16 |
[Java]_제네릭(Generic)이란?... (0) | 2025.01.10 |
[Java]_예외 인식과 처리 (0) | 2025.01.09 |
[Java] 클래스를 사용하여 기본연산 계산기 만들기 트러블슈팅 (0) | 2025.01.08 |