자바의 내용인 상속과 인터페이스, 추상 클래스, 자바 컬렉션의 ArrayList, 싱글톤 패턴, GUI를 하나의 프로그램에 담아 다시 한번 개념을 정리하고 적용하기 위해 포켓몬 게임을 구현하였다.
공격 방식: 자신의 포켓볼에 있는 포켓몬들 중 대전에 나갈 포켓몬을 선택한 후 각 포켓몬이 소유한 무기 중 1개와 플레이어가 소유한 아이템 중 1개를 선택해 상대 포켓몬을 공격한다. 이때 기본 공격량 = 포켓몬의 power + 무기의 power + 아이템의 power이고, 최종 공격량 = 기본 공격량 + 1~5 중 랜덤 값이다.
게임 종료 조건: 플레이어의 포켓볼에 포켓몬이 없을 때까지 or 게임 종료 메뉴 선택 시 or 선택한 장소의 포켓몬을 모두 잡았을 때
1) 플레이어의 이름을 설정한다.
2) 플레이어는 자신의 첫번째 포켓몬을 선택하고 해당 포켓몬을 자신의 포켓볼에 저장한다.
3) 2)에서 선택한 포켓몬이 소유할 무기를 1개 선택하여 해당 포켓몬의 무기에 저장한다.
4) 대전을 펼칠 장소를 선택한다.
5) 4)에서 선택한 장소에 2마리의 포켓몬이 생성된다.
6) 1)~5)까지의 준비과정을 모두 마치면 진행 메뉴얼이 나온다. ➔ 1. 대결하기 2. 내 포켓몬 보기 3. 내 아이템 보기 4. 게임 종료
7) 1. 대결하기 선택 시
5)에서 생성된 포켓몬들 중 1마리와 대결을 하게 된다. 이때 플레이어의 포켓볼에 있는 포켓몬들 중 대결에 나갈 포켓몬을 선택하고, 해당 포켓몬이 소유한 무기가 있다면 그 중 1개를 선택하고, 플레이어가 소유한 아이템이 있다면 그 중 1개를 선택한다.
8) 게임을 진행할 수 있는 윈도우 창이 뜨며 플레이어가 공격 버튼을 눌러 상대 포켓몬을 공격할 수 있다. (이때 공격방식은 위의 기본설정에서 정의한 공격방식이 적용됨) 플레이어의 포켓몬이나 상대 포켓몬 중 hp가 0이하가 먼저 되는 쪽이 게임에서 지게 된다.
8-1) 대결에서 이겼을 때
대결 장소에 있던 해당 포켓몬이 대결 장소에서 삭제된다. 상대 포켓몬을 플레이어의 포켓볼에 저장한다. 플레이어는 랜덤하게 선택된 아이템 1개를 얻는다.
8-2) 대결에서 졌을 때
대결에 나갔던 포켓몬을 플레이어의 포켓볼에서 삭제한다. 대결을 펼친 장소에 플레이어가 잃은 포켓몬이 추가된다.
9) 한번의 대결이 끝나면 플레이어의 포켓볼에 포켓몬이 존재하는 지와 대결 장소에 포켓몬이 남아있는지 확인한다.
9-1) 플레이어의 포켓볼에 더이상 포켓몬이 존재하지 않는 경우
대결에 나갈 포켓몬이 없으므로 게임이 종료된다.
9-2) 대결 장소에 포켓몬이 더이상 존재하지 않는 경우
잡을 포켓몬을 없으므로 ‘축하합니다’라는 멘트가 뜨며 게임이 종료된다.
위의 2가지 경우에 모두 해당되지 않는다면 6)의 메뉴얼이 재 등장한다.
10) 2. 내 포켓몬 보기 선택 시
플레이어의 포켓볼에 존재하는 포켓몬들의 이름이 출력된다.
11) 3. 내 아이템 보기 선택 시
플레이어가 소유한 아이템의 이름이 출력된다.
12) 4. 게임 종료 선택 시
전체 게임이 종료되며 실행이 멈춘다.
[상황 설명 – 대결 시에 사용할 자신의 포켓몬, 무기, 아이템 선택]
현재 플레이어는 ‘파이리다’ 포켓몬만 소유하고 있으므로 해당 포켓몬만 선택이 가능하고, ‘파이리다’ 포켓몬이 소유한 무기인 ‘쌍검’을 선택할 수 있다. 플레이어는 아직 아이템을 소유하지 않았기 때문에 ‘사용할 아이템이 없다’라는 문구가 출력되었다.
[상황 설명 – 내 포켓몬 공격 세기]
위에서 출력된 내 포켓몬 공격 세기는 현재 ‘파이리다’의 power + ‘쌍검’의 power를 합친 것이다. (아이템은 없기 때문에 더해지지 않음)
[상황 설명 – 플레이어가 대결에서 이겼을 때]
플레이어가 대결에서 승리하였기 때문에 상대 포켓몬인 ‘이상해씨 빌런’과 아이템인 ‘반짝가루’를 획득하였다. 이는 ‘2. 내 포켓몬 보기’ 선택 시 플레이어의 포켓볼 속에 ‘이상해씨 빌런’이 추가된 것을 확인할 수 있고, ‘3. 내 아이템 보기’ 선택 시 플레이어의 아이템 리스트에 ‘반짝가루’가 추가된 것을 확인할 수 있다.
[상황 설명 – 대결을 위한 포켓몬, 무기, 아이템 선택]
현재 플레이어의 포켓볼에는 2마리의 포켓몬이 있기 때문에 둘 중 1개를 선택할 수 있고, 위의 상황에서는 ‘이상해씨 빌런’은 아직 소유한 무기가 없기 때문에 ‘사용할 무기가 없다’는 문구가 출력되었고, 플레이어가 소유한 아이템이 있기 때문에 아이템은 선택이 가능하다.
[상황 설명 – 플레이어가 대결에서 졌을 때]
위의 상황에서 플레이어가 대결에서 졌기 때문에 대결에 나간 플레이어의 포켓몬을 잃게 된다. ‘2. 내 포켓몬 보기’ 선택 시 해당 리스트에서 대결에 나간 플레이어의 ‘이상해씨 빌런’이 삭제된 것을 확인할 수 있다. 해당 포켓몬은 대결 장소에 추가 되었기 때문에 대결 장소에서 포켓몬을 모두 잡기 위해서는 2번의 대결에서 승리하여야 한다.
[상황 설명 – 플레이어가 특정 장소의 포켓몬들을 모두 잡았을 때]
플레이어가 2번의 대결에서 연속으로 승리하였기 때문에 ‘깊은 바다 속’ 장소에 더이상 포켓몬들이 존재하지 않으므로 ‘축하합니다!’는 문구가 출력되며 게임이 종료되었다.