2023-1 ANU JAVA 학기말 사이드프로젝트
2023.05.09 ~ 2023.06.13 (약 한 달간)
- JAVA
- Eclipse
- RPG 게임이란 플레이어가 게임 내에서 가상의 캐릭터를 조종하고, 그 캐릭터가 세계관에서 경험하고 성장함으로써 자신의 캐릭터를 전략적으로 발전시키는 게임을 말합니다.
- 본 목표는 제가 과거에 열중했던 메이플스토리라는 RPG 게임을 Jframe을 기반으로 한 텍스트 기반의 1대1 턴제 방식으로 새롭게 재창작 하는 것입니다.
- 게임은 텍스트 기반 인터페이스를 사용하여 플레이어의 명령을 입력 받고, 게임의 진행 상태를 문자로 출력하는 방식입니다.
- Jframe 라이브러리를 기반으로 한 JTextPane 텍스트창을 메인 게임 화면으로 구성하였습니다.
(JTextPane은 JTextArea와 다르게 HTML 속성 적용을 지원하여서 이를 채택하였습니다.) - 사용자는 직업, 체력, 마력, 공격력, 레벨, 경험치 등의 필드값들을 가진 한 개의 캐릭터를 조종합니다.
- 각 직업별로 플레이어 성장 시 증가하는 필드값의 차이, 보유 스킬등을 다르게 구성합니다. 이는 직업 간 차별화를 두기 위함입니다.
(전사 클래스는 직업 클래스를 상속받습니다.) - 적 개체(몬스터) 또한 체력, 공격력, 레벨 등의 필드를 보유하고 있습니다.
현재 15개의 몬스터 클래스를 구현하였습니다.
(주황버섯 클래스는 몬스터 클래스를 상속받습니다.) - 플레이어와 몬스터 간의 전투 시스템은 캐릭터와 몬스터의 필드값들을 기반으로 한 여러가지 이벤트를 발생 후, 둘 중 한 객체의 HP가 0이 될 때 승패가 결정됩니다. (데미지 계산 공식을 세우고 적용 (명중률과 크리티컬), 전투 중 각종 소비아이템 사용, 직업 별 스킬 적용 등)
플레이어가 전투에서 승리할 경우, 플레이어의 인스턴스 필드값 증가를 통해 플레이어는 성장하며 더욱 강력해집니다.
더 강력해진 플레이어는 그에 맞는 상위 적 객체(몬스터)와의 전투를 수행할 수 있습니다. - 인벤토리 시스템을 통해 플레이어는 필요한 아이템을 획득, 사용, 버리거나 관리할 수 있습니다.
(현재 본 프로젝트는 소비 아이템 관리 기능만 구현하였습니다.)
(HP를 50 회복해주는 빨간 포션은 - 소비 아이템 – 아이템 클래스를 다중 상속받습니다.) - 세계 지도 & 이동 시스템을 통해 플레이어는 게임 세계를 탐험하고 다른 위치로 이동할 수 있습니다.
각 위치는 일정 확률로 다양한 종류의 몬스터와의 조우(= 전투 발생) 및 여러 가지 발생 가능 이벤트들을 포함하고 있습니다.
현재 17개의 맵을 구현하였습니다.
- Main (게임 실행 및 GUI 구성)
- Game (텍스트 1대1 턴제 기반 주요 로직 수행)
- Battle (전투 중)
- Player (플레이어)
- Monster (각종 몬스터)
- Location (각종 맵)
- Inventory (플레이어의 아이템 가방)
- Item (각종 아이템)
- ConsumableItem (Item 클래스를 상속받은, 소비 아이템)
- LootTable (아이템 가방 관리)
- Job (직업)
- Skill (스킬)
- MapManager (맵 객체 연결 및 관리)
- Jframe
- Jpanel
- Jlabel
- JProgressBar
- JTextPane
- JScrollPane
- JTextField
- Jbutton
- ImageIcon