본문 바로가기
JAVA/객체지향 프로그래밍 (OOP) 기초

간단한 RPG 캐릭터 설계

by DEVLIB 2025. 4. 13.
728x90

목표

  • Character라는 부모 클래스 만들기
  • Warrior, Wizard 등 자식 클래스에서 상속
  • 공격, 이동, 특수 스킬 등의 메서드를 구현

1. 부모 클래스 Character

public class Character {
    String name;
    int hp;

    public Character(String name, int hp) {
        this.name = name;
        this.hp = hp;
    }

    public void move() {
        System.out.println(name + "이(가) 이동합니다.");
    }

    public void attack() {
        System.out.println(name + "이(가) 기본 공격을 합니다!");
    }

    public void status() {
        System.out.println("[캐릭터] 이름: " + name + ", HP: " + hp);
    }
}

2. 전사 클래스 Warrior

public class Warrior extends Character {

    public Warrior(String name) {
        super(name, 150); // 전사는 HP가 높음
    }

    @Override
    public void attack() {
        System.out.println(name + "이(가) 검으로 내려칩니다! (강력한 공격)");
    }

    public void bash() {
        System.out.println(name + "이(가) 방패로 적을 기절시킵니다!");
    }
}

3. 마법사 클래스 Wizard

public class Wizard extends Character {
    int mp;

    public Wizard(String name) {
        super(name, 80); // 마법사는 HP가 낮음
        this.mp = 100;
    }

    @Override
    public void attack() {
        System.out.println(name + "이(가) 마법 화살을 발사합니다!");
    }

    public void castSpell() {
        System.out.println(name + "이(가) 파이어볼을 시전합니다!");
        mp -= 10;
    }

    @Override
    public void status() {
        super.status();
        System.out.println("MP: " + mp);
    }
}

4. Main 클래스 – 게임 실행

public class Main {
    public static void main(String[] args) {
        Warrior w = new Warrior("아서");
        Wizard m = new Wizard("메르린");

        w.status();
        w.move();
        w.attack();
        w.bash();

        System.out.println();

        m.status();
        m.move();
        m.attack();
        m.castSpell();
    }
}

 

출력 예시:

[캐릭터] 이름: 아서, HP: 150
아서이(가) 이동합니다.
아서이(가) 검으로 내려칩니다! (강력한 공격)
아서이(가) 방패로 적을 기절시킵니다!

[캐릭터] 이름: 메르린, HP: 80
MP: 100
메르린이(가) 이동합니다.
메르린이(가) 마법 화살을 발사합니다! 
메르린이(가) 파이어볼을 시전합니다!

확장 아이디어

  • Healer, Archer 클래스 추가
  • attack(Character target) → 상대 HP 깎기
  • ArrayList<Character>로 팀 구성
  • 턴 기반 전투 시스템 만들기

핵심 개념 요약


개념 사용 예시
상속 class Warrior extends Character
오버라이딩 @Override attack()
생성자 super(name, hp)
다형성 Character[] party = { new Warrior(...), new Wizard(...) };
LIST