Python) 팡게임(Pang Game) 만들어보기 (pygame frame 이용)

2022. 7. 4. 20:30코딩/- Project: pygame

728x90
반응형

팡게임이란 아래 이미지처럼, 끊임없이 튕겨지는 공들을 무기로 없애주는 게임입니다. 공들은 무기에 의해 타격될 때마다 이전 공의 반 사이즈로 줄어들며, 2개로 분열합니다. 그리고 세 번째로 분열된 공이 부서지면 공은 아예 없어지게 됩니다.

이미지 출처 : 유튜브 LCH

 따라서 기존에 만들어 두었던 pygame frame 을 이용해서 만들어보겠습니다.

 

 이 게임의 핵심은 무기와 공입니다. 무기가 '발사'되며, 발사된 무기에 타격된 공들은 두 개로 분열되며 좌우로 튕겨져나옵니다.

 

 크기와 떨어지는 속도를 제외한 공들의 특성은 대부분 비슷합니다. 첫 번째 공을 포함해, 분열되는 네 번째 공까지 리스트로 묶습니다. 공들을 balls = [] 로 빈 리스트로 정의한 뒤, append 를 통해 공의 특성값들을 dictionary 로 정의해줍니다.

 

 

 무기 위치와 공 위치를 정의해주는 부분입니다.

 

 공 위치를 for 구문을 통해 ball_idx, ball_val 값을 enumerate(balls) 으로 지정해줍니다. 이러면 ball_idx에는 balls의 인덱스가, ball_val 에는 balls의 밸류값이 차례대로 쌍으로 들어갑니다. 그리고 이렇게 들어간 값들을 ball의 x, y 그리고 이미지 순서마다 밸류값을 지정해줍니다.

 

 

이렇게 무기와 공의 위치 정의를 각각 해준 뒤, 이제 핵심인 충돌 처리를 했는데. 설명을 들으면서 하는데도 아직 아리송한 기분이네요. 오히려 왼쪽, 오른쪽으로 튕겨져 나오는 부분은 어느 정도 이해가 가지만, 공이 아랫단계로 나뉘어지는 부분을 한 번 더 공부해야 될 것 같네요.

 

ball_img_idx를 이용해 해당 공의 크기를 구하고, 이를 통해서 나뉘어지는 공의 정보값을 전달받네요.

 

 

 

 

 이렇게 만든 pang 게임을 실행시켜서 플레이 해 본 모습입니다. 공이 떨어지는 속도값만 조금 줄여주면 괜찮을 것 같네요.

아래는 작성한 코드입니다.

 

 

 

728x90
반응형