2020 1학기에 수강한 객체 지향 프로그래밍 수업에서 TTS를 활용하여 만든 간단한 배틀 게임 프로젝트이다.
직접 시나리오를 짜고, 그것을 기반으로 코드를 설계 및 구현해보았다.
1. 시연 영상
2. 시나리오
1) Player
: 총 5 명의 플레이어가 존재하며 Player 의 하위 클래스로 생성한다 각 플레이어의 name, hp, power, 사용 가능한
weapon 은 다음과 같다. 캐릭터 생성과 동시에 각자 무기를 소지하게 되고 소유한 무기 리스트를 보여준다.
Plyer | Hp | Power | Weapon |
토르 | 1000 | 60 | 총 단도 묠니르 |
헐크 | 1200 | 80 | 총 단도 |
캡틴 아메리카 | 950 | 65 | 총 단도 방패 |
아이언맨 | 970 | 60 | 총 단도 마크7 |
블랙위도우 | 960 | 65 | 총 단도 활 |
기본으로 모든 플레이어에게 기본 무기로 총 단도가 있으며 이것은 개수가 랜덤으로 주어진다. 단도 4 이내 랜덤 총알 5 이내 랜덤 추가 특별 무기는 표에 제시되어 있는 것과 같으며 헐크를 제외한 모든 플레이어의 무기 목록 마지막 요소로 생성된다. Player의 attack (Player target) 메소드를 통해 총과 단도 중 랜덤으 로 주어진 무기를 가지고 공격을 시작한다. 이때 , 공격은 총 또는 단도의 power 가 플레이어의 power 에 더해져 공격을 가하게 된다. 무기는 공격할 때마다 랜덤으로 사용되며 해당 무기가 모두 소진되면 플레이어의 무기 목록에서 제외시킨다. 각 플레이어의 특별 무기 들은 다른 플레이어는 가질 수 없으며 기본 무기를 가지고 싸우다가 hp가 처음 상태의 반으로 줄면 사용 가능하다. 이 무기들은 각각 5 번의 공격권이 주어진다. 단 , 헐크는 특별한 무기가 없으므로 hp, power을 가장 높게 설정하고 공통 무기인 총과 단도를 이용해서는 오로지 때리기만 한다. Player의 attack(target: Player 메소드를 사용하면 기본으로 세팅된 도구 총 단도 중 하나로 target에 대한 공격을 시작하며 사용 가능한 무기가 없는 경우 자신의 power만 이용하여 때린다. 단 앞서 언급한 캐릭터별 특별 무기를 사용할 경우 attack(target: Player, wp: Weapon)을 통해 무기를 지정해서 공격하게 된다.
게임 실행 시 2:2 플레이로 진행하게 되며 Player는 사용자가 원하는 캐릭터로 설정한다. 단 , 캐릭터는 고유하므로 중복이 불가능하다 사용할 무기가 없거나 사용하지 못하는 경우 그리고 헐크의 경우 때리기 기능을 수행한다.
2) Weapon
Weapon | Weapon power | Sub weapon power |
단도 | 12 | x |
총 | 5 | 총알: 10 |
묠니르 (망치) | 38 | x |
활 | 10 | 화살: 25 |
방패 | 35 | x |
마크7 (철갑 수트) | 15 | 미사일: 28 |
총 6가지 무기가 있으며 Weapon의 하위 클래스로 생성한다 각 무기는 power과 name이 있다. 각 weapon들의 power를 설정하고 이 무기를 이용하여 공격할 때, 무기의 Power가 Player의 Power에 더해져서 target의 hp를 감소시킨다.
무기는 던지거나 (MyInterface.ttrowable) 쏠 (MyInterface.Shooting) 수 있다.
단도는 던질 수 있다. 총은 총알을 쏠 수 있다.
철갑 수트는 아이언 맨만이 사용할 수 있는 무기로 미사일을 쏠 수 있다.
방패는 캡틴 아메리카만이 사용할 수 있는 무기로 던져서 공격을 가할 수 있다.
망치는 토르만이 사용할 수 있는 무기로 , 던져서 공격을 가할 수 있다.
화살은 블랙 위도우만이 사용할 수 있는 무기로 쏠 수 있다.
총과 활 철갑 수트는 총알 화살 미사일의 power가 따로 있다. 따라서 이 무기들을 사용할 때는 공격 한 번에 총알 화살 미사일의 power가 더해져서 target의 hp 를 줄어들게 한다. 또한 이 세 가지 무기는 각 각의 통에 총알 화살 미사일을 충전하고 공격할 때 마다 하나씩 줄어든다. 이 외의 던져지는 무기들은 그 무기 자체의 수가 하나씩 소모된다.
3) View
총 4 명의 플레이어를 순서대로 선택한다. 선택한 순서에 따라 앞선 2 명은 Team1 으로 배정되고 나머지 2 명은 Team2 로 배정된다. 각 플레이어마다 무기 현황을 볼 수 있는 버튼과 공격을 수행하는 버튼이 있다. 한 번의 공격마다 공격의 실제 수행 형태는 Console 창에 공격의 결과로 나오는 모든 플레이어의 hp 현황은 text Area 에 나오게 된다. 또한 버튼을 통해 게임의 결과를 파일로 저장시킬 수 있다.
3. 설계도
4. 코드
https://github.com/yuwon-shin/OOP_battle