Skip to content

codingJang/2019-OOP-Python-asdf

 
 

Repository files navigation

2019-2 객체지향 프로그래밍 프로젝트

구성원: 2-4 장준호 | 2-5 이유림 | 2-5 장예준

1. 주제

미사일 회피 게임

 무작위적으로 날아오는 다양한 종류의 미사일들을 피하면서 살아남는 시간이 경과함에 따라 점수가 쌓이는 방식으로 진행된다.

2. 동기

 프로젝트의 주제를 정하던 중, 파이썬의 turtle 라이브러리에 관심을 가지게 되었다.

 인터넷을 찾아본 결과 turtle 이외에도 파이썬에는 다양한 GUI 라이브러리들이 있다는 사실을 알게 되었고, 프로젝트의 대주제를 ‘게임’으로 하면 이러한 라이브러리들을 활용하기에 가장 적합할 것이라고 생각했다.

 게임에 관한 다양한 이야기가 오가던 도중 Missiles! 라는 미사일 회피 게임에 대한 이야기가 나왔고, 미사일 회피 게임이 기본 기능을 구현이 비교적 간단하면서도 게임에 다양한 요소를 추가하면 창의적인 확장이 가능할 것이라는 생각이 들었다.

 또한 게임 진행 과정 중에 생성되는 비행기와 미사일, 아이템 등은 모두 '객체'로 생각할 수 있으며, 그 뿐만 아니라 비행기와 미사일의 종류가 다양해지며 진화해나가는 과정을 '클래스의 상속' 개념을 가장 잘 활용하여 표현할 수 있을 것이라고 판단했다.

3. 프로그램 사용 대상

 미사일들을 피하는 단순한 규칙의 게임으로, 간단한 게임을 하고 싶어하는 모든 연령층이 게임을 쉽게 즐길 수 있다.

4. 목적

 기본적으로 아이디어의 주제가 되었던 게임 <Missiles!>에 없어서 아쉬웠던 부분을 추가해 더 재미있는 게임을 만드려한다.

5. 주요기능

 사각형의 배경 위에서, 플레이어는 사방에서 날아오는 미사일들을 피해야 한다. 미사일은 비행기(플레이어)를 따라오도록 설정되어 있으며, 미사일의 속력은 비행기보다 항상 빠르지만, 방향 전환이 느리기 때문에 잘만 조정하면 미사일을 피할 수 있다. 또한 비행기를 추격하던 미사일이 서로 부딪히면 폭파되어 사라지므로 플레이어는 미사일끼리 부딪히도록 움직임을 유도해야 한다. 게임에는 레벨이 존재하고, 게임 시간이 길어질수록 더 빠르고 예측하기 힘든 미사일이 등장한다.

6. 프로젝트 핵심

a. 비행기가 일정 속력으로 이동하고, 사용자의 키보드 입력에 따라 방향 전환이 가능하다.
b. 미사일 역시 일정 속력으로 움직이나, 미사일의 경우 비행기를 추격한다.
c. 게임 플레이 시간이 지속될수록, 더 업그레이드된 미사일이 비행기를 공격한다.
d. 클래스를 이용해 단계별로 비행기와 미사일의 특징을 상속 받는다.

7. 구현에 필요한 라이브러리나 기술

pygame 라이브러리

pygame.sprite.Sprite/pygame.sprite.Group: 미사일/비행기/아이템 객체 관리
pygame.math.Vector2: 비행기/미사일의 위치 및 속도

8. 분업 계획

이유림: 전체적 틀, 메인 코드 담당

아이템 랜덤 배치 및 아이템 기능 설계
게임 화면 디자인, 게임 진행 순서, 사용법 안내 튜토리얼 등
게임 라운드 진행, 게임 시작 전 비행기 선택할 수 있도록 해야함

장예준 - 미사일

여러 단계의 특징을 가진 미사일 클래스
관성고려(원형으로 회전할 수 있게)
사용자를 따라오도록 해야함

장준호 - 비행기

키보드(조이스틱)과 연동하여 사용자가 조작할 수 있도록 해야함
각기 다른 특징을 가진 비행기 클래스
아이템을 먹으면 그 능력을 사용할 수 있도록 하는 기능

9. 기타

10. 실행 방법

main 을 실행한 다음, 비행기를 고르고 게임 플레이를 즐겨 주시면 됩니다! 방향 조작은 왼쪽/오른쪽 방향 키로 합니다. 게임 도중 별을 먹거나 미사일 간의 충돌을 유도하면 bonus가 올라갑니다. bonus 5개를 소모하여 게임을 이어서 진행할 수 있습니다.


readme 작성관련 참고하기 바로가기

About

2019학년도 객체지향 프로그래밍 프로젝트 예시

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%