본문 바로가기

Project

[객체 지향 프로그래밍] 간단한 배틀 만들기 프로젝트

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

 

yuwon-shin/OOP_battle

2020 spring-OOP course - simple battle project. Contribute to yuwon-shin/OOP_battle development by creating an account on GitHub.

github.com