파이썬 게임 만들기 - 도망쳐 외전 (탕탕특공대 흉내 내기)

파이썬 공부용 게임 "도망쳐" 외전, "반격해" 입니다.

게임이름이 참... 저는 작명센스가 없습니다.ㅋㅋ. 너무 직관적인가..ㅋㅋ.

요즘 구글 플레이에 순위권에 들어있는 게임중에, "탕탕특공대"라는 게임이 있는데, 이게 광고에 자주 나오더라구요. 그 광고를 보고, 비슷한 느낌의 게임으로 개조 시켜 보았습니다.

이제 반격 할 시간입니다.

도망치지 말고 다 갈아 버립시다.

....나름 스토리 있네..ㅋㅋ

탕탕특공대... 광고를 보면요... (저는 그 게임 설치도 안해봤어여.. 광고만 오질라게 봤네요.)

특징1.. 몬스터가 때거지로 나옵니다.

특징2.. 플레이어 주변에서 뭔 운석같은 게 돌면서 다 죽이죠?

특징3.. 처음에는 겁나 허접한 것 같더라구요..ㅋ

일단, 요 특징 세개를 조합해서.. "도망쳐" 게임을 "반격해" 로 개조를 해 볼 거에요..

1. 몬스터는 100마리 쯤...나오게 하구요.

2. 운석? 그거 대신.. 계속 사용하던 쇠톱 가져다 붙이구요.ㅋ

3. 쇠톱을 플레이어 주변으로 돌려야죠.

4. 뭔가 좀 써는 느낌 나도록, 쇠톱도 돌려 줍시다.

5. 쇠톱이 다 나오면, 너무 무적같으니까. 한 10초마다 랜덤하게 나오도록 할꺼에요..

6. 그리고.. 5000점 채울 때마다, 휴식 개념으로 플레이어를 보호해주는 쇠톱을 만들어 봅시다.

네.. 요렇게~! ㅋㅋ 공부용이니까.. 뭐.. 막 만들어봐요..ㅋ

삭제되는 내용

반격해 에서는 벽돌 사용을 안 할 거에요.

그래서, 벽돌 클래스와 관련된 내용을 모두 삭제 합니다.

PlayerEnemy 클래스에서 Block 클래스와 충돌 처리 하는 부분도 모두 삭제 됩니다.

플레이어 클래스의 update() 부분에서 호출되던, collision_check 함수는 삭제 됩니다.

Enemy 클래스의 update() 부분에서 호출되던, collision_check 함수도 삭제 됩니다.

Player 와 Enemy 클래스의 나머지는 다 그대로 사용 할거에요~!

쇠톱 클래스 변경점

도망쳐 게임에서는, 랜덤하게 나와서 3초 있다가 사라지는 역할 이었는데요. 이제는 플레이어 주변에는 꼭 1개 이상의 쇠톱이 돌고 있도록 할건데, 그럴려면 플레이어의 위치와 각도를 알아야 하죠. 그래서, 쇠톱 생성시에 인자로 플레이어의 위치를 받아서, 인자로 주어진 각도 위치에 생성합니다. 그리고, 업데이트에서도 마찬가지로 플레이어의 위치를 받아서, 플레이어 주변을 뱅뱅 돌도록 계산해서 화면에 표시해 줍니다. 그런 코드로 바꼈구요. 5000점 넘으면 보너스 개념으로, 플레이어 주변에 따라다니는 쇠톱이 아닌, 제자리에서 플레이어를 보호 해 주는 쇠톱이 또 생성 될 거에요. 그거는 bonus 변수로 구분 했습니다.

메인루프 변경 및 추가사항

플레이어 주변으로 쇠톱이 생성되는 각도를 미리 배열에 넣어 놓습니다. 초기 값입니다.그리고, 쇠톱 생성 및 회전에 관한 변수들을 설정 합니다. update 부분에서는 플레이어의 위치와 회전 각도를 인자로 넘겨 줍니다.

다음은, 쇠톱 생성 및 회전을 처리 하는 부분입니다.

메인 루프 내에서 처리 되는 코드들이고. 크게 쇠톱 회전에 대한 코드, 쇠톱 생성에 대한 코드, 보너스 처리에 대한 코드로 나눠 집니다.

#쇠톱 돌리기

쇠톱은 0도부터 3도씩 계속 더해서 360이 되면 초기화 합니다. (이게 한바퀴 입니다.)

#쇠톱 뽑기

쇠톱을 10초마다 다시 생성 하는 부분입니다. 각도 및 갯수를 랜덤하게 처리 했으며, 1 ~ 5개 까지 플레이어 주변에서 회전 하도록 구현 되어 있습니다. 쇠톱끼리 겹칠 수도 있습니다 ㅋㅋ. 그리고, 생성할때는, 이전에 생성됐던 쇠톱 중에 보너스로 생성된 객체들이 아닌 객체들만 모두 삭제 합니다. 보너스로 생성된 객체는 쇠톱 클래스 내에서 10초 후 자동 삭제 됩니다.

#보너스

5000점마다 10초간 플레이어를 보호하는, 제자리에서 회전하는 쇠톱이 생성 됩니다. 10초후 자동 삭제 됩니다.

#적생성

1프레임마다 몬스터 객체 수 체크해서 100마리 이하면, 3마리씩 생성하도록 했습니다. 그러면, 100마리 정도로 계속 유지가 됩니다. 제가 컴퓨터가 좋지 않아서, 객체를 늘리면 랙이....ㅠㅠ..

화면에 정보 표시 하는 부분

현재 플레이어 주변에 있는 쇠톱이 바뀌는 시간을 표시하는 부분이 중앙 상단에 추가 되었구요.

약간의 정보 메세지 개념으로 쇠톱 갯수 별로, 특정 메세지가 나오도록 바꾸었습니다.

몬스터는 많은데, 쇠톱이 1개 나오면 도망다녀야 해요.ㅋㅋ. 도망다니기 빡셉니다.

자~~!

이렇게 해서, 개조를 해보았구요..

이제 "도망쳐" 가 아닌 "반격해" 게임으로 개조가 되었네요.

^^ 게임을 개조하는 재미도 상당하네요..

이건 뭐.. 게임을 하는 재미보다는,, 코드를 바꿔 내 의지대로 뭔가를 표현 할 수 있으니,, 게임을 만드는게 더 재밌다는 생각이 드네요.ㅋ

소스코드

실행 영상

몬스터100마리, 보너스 3000점으로 변경해서 녹화 하였습니다.

마무리

이상입니다.

환절기 감기 조심하시구요..

즐거운 코딩 생활 되세요~!