나는 java 언어를 배우면서 자료형, 클래스, 상속 등을 공부했다. (참고로 스레드는 프로젝트를 진행하고 다 만들어진 시점에서 공부해서 적용 시키려고 배우진 않았다. 이러한 지식을 토대로 간단한 콘솔 미니 게임 프로젝트를 진행해보고자 한다.
많은 고심끝에 프로젝트 주제를 RPG_GAME 으로 선정을 하였다.
주제를 선정하였으므로 어떻게 구성을 할 것이고 무슨 기능이 있는 RPG_GAME 인 지를 정하는 것이 중요하였다.
그래서 기획을 하게 되었는데 처음 프로젝트를 진행하다 보니 기획 단계가 매우 어려웠다.
어찌어찌 기획을 짜면서 든 생각은 프로젝트에서 가장 어려운 부분은 기획 부분 이란 것을 깨닫게 되었다....
많은 고심 끝에 아래 사진과 같이 나의 RPG_GAME을 만들기로 했다.
기획을 하고 났으니 기획 의도대로 만들고 더 편하게 작업을 하기 위해 상속 관계를 나눠 주었다. 상속을 나눈 기준은 공통되어 지는것들이 있으면 부모 클래스를 만들고 거기서 상속 관계를 만들고 자식 클래스 들에서 상속외에 필요한 것이 있으면 직접 변수를 주었다.
아래 사진은 전반적인 코드들을 어떤식으로 짜면 좋을까 해서 손으로 클래스들과 그 속의 메소드 들 그리고 상속 관계를 직접 짜보았다.
어느정도 토대가 있다 보니까 프로젝트를 수월 하게 진행 할 수 있게 되었다.
[게임 설명]
자르반 2세의 도플갱어 죽여 게임 엔딩보기
- 자르반 2세는 엄청나게 쌘 나의 도플갱어를 죽이기 위해 사냥을 하여 렙업을 하여 능력치를 올리거나, 사냥 후 얻는 전리품을 통해 돈을 모아 상점에서 무기와 방어구를 구입하고 스킬을 찍어 힘을 키워야 합니다.
- 10분 안에 자르반 2세_나이트메어 를 죽여야 게임이 클리어 됩니다.
[기능]
1. 내정보보기 : 현재 내 정보를 확인 할 수 있습니다.
- 헌재 나의 스탯( HP,MP,Level,Power,Armor, 배운 스킬, 스킬포인트, 돈, 경험치 )에 대해 알 수 있습니다.
2. 스킬 : 레벨과 스킬포인트를 통해 스킬을 찍어 사냥할 때 사용할 수 있습니다.
- 스킬을 배울 수 있는 제한 레벨과 스킬포인트를 이용하여 스킬을 배울 수 있습니다. 만약 제한 레벨과 스킬포인트가 부족하다면 스킬을 배울 수 없습니다.
3. 상점 : 무기와 방어구 포션을 구매,판매 할 수 있습니다.
- 상점에서 돈을 이용하여 무기, 방어구, 포션을 구매할 수 있습니다.
- 돈은 사냥을 해서 몬스터를 잡게 되면 필수적으로 얻을 수 있습니다. ( 몬스터에서 확률적으로 drop 하는 아이템을 상점에 팔아서 돈을 모을 수도 있습니다. )
- 무기와 방어구는 착용 시 구매자의 능력치가 상승하고 포션은 몬스터를 사냥할 시 먹을 수 있습니다.
- 만약 돈이 없다면 무기와 방어구 및 포션은 구매를 할 수 없다.
4. 인벤토리 : 내가 가진 무기와 방어구와 전리품 포션을 볼 수 있으며, 착용모드/착용해제모드 가 있습니다.
- 무기 및 방어구를 착용을 하게 되면 능력치가 상승됩니다.
- 반대로 착용 해지를 하게 되면 아이템의 능력치가 떨어지게 됩니다.
5. 사냥하기 : 레벨에 맞는 몬스터들과 싸워 경험치를 얻어 레벨업을 하고, 전리품을 얻어 상점에 팔아 돈을 얻을 수 있습니다.
- 나의 능력치와 레벨에 따라 몬스터를 선택하여 싸울 수 있습니다.
- 자르반 2세는 기본공격/스킬공격/포션먹기/도망치기 선택 할 수 있고, 적절한 선택을 통해 몬스터를 처치해야합니다. ( 몬스터의 공격은 스레드를 통해 자동적으로 공격을 하게끔 구현하였습니다. )
- 단, 몬스터의 공격은 몬스터의 등급에 따라 스킬 유무가 있으며 스킬이 있는 몬스터의 경우에는 주어진 마나에 따라 기본공격과/스킬공격은 랜덤입니다.
- 자르반 2세 도플갱어 몬스터를 죽이면 게임의 엔딩을 볼 수 있습니다.
6. 휴식의 방 : 사냥을 하여 피가 없을때 휴식의 방에 들어가서 돈을 내고 체력과 마나를 풀로 채울 수 있습니다.
- 휴식에 방에 가면 현재 hp를 레벨 비례의 돈을 지불하게 되면 Maxhp로 채워지게 됩니다.
스레드가 없는 RPG_GAME 까지 완성을 했고, 스레드를 추가해주고 싶어서 어디를 넣으면 좋을 지 생각을 해보았다.
[Thread]
1. 텍스트 Thread
- 프롤로그, 엔딩을 더 게임답게 하기 위해 한 글자씩 출력
2. 몬스터 공격 Thread
- 몬스터의 공격을 몇 초 간격마다 자동으로 공격합니다( 단, 스킬을 가진 몬스터는 마나가 있는 한 기본공격/스킬공격을 랜덤으로 받아 공격합니다. )
3. 음악 Thread
- 각 상황마다 배경음악, 효과음을 재생합니다.
- 배경음악 : 로비메뉴BGM, 사냥터BGM, 휴식의방BGM, 상점BGM, 인벤토리BGM
- 효과음 : 물약 사용 효과음, 몬스터 처치 효과음, 캐릭터 죽음 효과음, 엔딩 효과음, 몬스터 공격 효과음
4. 게임 제한시간 Thread
-자르반2세_나이트메어를 10분안에 잡지 못하면 실패입니다.
[GUI]
1. 시간 알림 GUI
-0초부터 10분까지의 시간을 보여줍니다.
위의 스레드들을 계획으로 잡고 만들어진 RPG_GAME에 스레드들을 추가하여 더욱 RPG_GAME같은 느낌을 주었다.
프로젝트를 진행하면서 내가 직접 기획을 하고 그 기획한 것을 토대로 내가 배운 지식들을 활용을 하여 기획한 의도대로 만드는 것이 가능할 것인가 라는 의문이 많았다. 하지만 직접 이렇게 프로젝트를 진행해보니까 내가 배운 지식들로만은 내가 의도한 대로 기능을 만드는 것은 한계가 있었고, 인터넷의 다양한 정보와 내가 배운 지식을 잘 융화를 시켜야 된다는것을 깨달았다.
확실히 프로젝트를 통해 많은것을 얻었기에 다음에는 안드로이드 앱 공부를 할 것인데 필수적인 기초만 배우고 바로 프로젝트를 진행하여
내 실력을 쌓을 예정이다~~