tkinter를 기반으로 구현한 코딩 학습용 종스크롤 슈팅 게임입니다.
- 개발 기간: 25.11.20(목) - 25.12.13(일)
- 개발자: @dbsans11
- 사용 언어: Python
- IDE: Visual Studio
- 주요 기능: 키 커스터마이징, 일시정지, 보스전 시스템, 플레이어 체력에 따른 bgm 변경, 게임 오버 애니메이션 등
├── BugCatcherGame 프로젝트 폴더
│ ├── media 에셋
│ │ ├── image
│ │ │ ├── backgrounds
│ │ │ │ ├── ...
│ │ │ ├── entities
│ │ │ │ ├── ...
│ │ │ └── ui_elements
│ │ │ ├── ...
│ │ ├── music
│ │ │ ├── bgm
│ │ │ │ ├── ...
│ │ │ └── effect
│ │ │ ├── ...
│ ├── BugCacherGame.py 실행 py 코드
│ └── BugCatcherGame.pyproj
├── BugCatcherSolution.sln 솔루션 파일
└── README.md
- 방향키: ↑, ←, ↓, → (설정창에서 W, A, S, D 키로 변경 가능)
- 공격키: SPACE (설정창에서 다른 키로 변경 가능, 일부 불가능한 키 존재)
- 확인키: ENTER
- 일시정지 또는 나가기: ESC
- 방향키로 플레이어를 조작하며 공격키를 누르면 커서를 발사합니다.
- 위에서 아래로 랜덤으로 엔티티가 내려옵니다. 엔티티에는 에러 코드, 클린 코드, 아이템 총 세 종류가 있고 아이템에는 커피, 마감일, ai 총 세 가지가 있습니다.
- 플레이어는 점수와 체력 수치를 가지고 있습니다.
- 플레이어는 점수가 10000점에 도달할 때마다 보스전을 치루게 됩니다.
- 체력은 기본적으로 총 3개를 가지고 시작합니다. 체력이 0이 되면 게임 오버 됩니다.
- 엔딩은 존재하지 않습니다. while True로 게임을 즐겨보세요!
보스전에서는 스파게티 코드와 싸우게 됩니다.
- 스파게티 코드는 고유한 수치인 엉킴 게이지 를 갖고 있습니다. 엉킴 게이지는 100%부터 시작하며 0%에 도달하면 승리할 수 있습니다.
- 일반 게임에서는 존재하지 않는 보스전만의 특별한 기믹들을 볼 수 있습니다.
player.png Kenny - Pixel Shmup
cursor.png Kenny - Cursor Pixel Pack
coffee.png Kenny - Pixel PlatFormer Food Expansion
hp_full.png, hp_empty.png, ai.png Kenny - Pixel Platformer
interface.png, chat_window.png itch.io - Retro Windows GUI
arrow_selected.png, arrow_unselected.png, wasd_selected.png, wasd_unselected.png itch.io - PIXEL FANTASY RPG ICONS - Keyboard Buttons
deadline.png, spagetti01.png, spagetti02.png, drink.png 구글 Gemini 제작
title_bgm.mp3 魔王魂 - 8bit17
main_game_bgm.mp3 魔王魂 - 8bit28
low_hp_bgm.mp3 pixabey - 8 bit heart beat final
vs_boss_bgm.mp3 魔王魂 - 8bit15
game_over_bgm.mp3 魔王魂 - 8bit03
select.mp3 みんなの創作支援サイトTスタ/T-STUDIO - UI효과: 선택 1
death pixabay - 8-Bit Explosion 3
buff pixabay - 8-Bit Powerup
debuff みんなの創作支援サイトTスタ/T-STUDIO - UI효과: 취소 5
shoot pixabay - Fire
전부 CCO 에셋 사용하였습니다.
기재되지 않은 에셋들은 직접 제작했습니다.
타 게임 오마주 요소가 게임 내에 포함되어 있습니다.
- 모티브가 된 게임은 드래곤 플라이트입니다.
- 게임 이름은 포켓몬스터 npc 곤충채집소년의 영문명에서 따왔습니다.
- 게임 언더테일의 게임 오버 방식을 오마주 했습니다.
원본
오마주
- 게임 PokeRogue의 보스 무한다이노의 대사를 오마주 했습니다.
![]() |
![]() |
| 원본 | 오마주 |
후기
이번 프로젝트를 통해 게임을 플레이어가 아닌 개발자의 시선으로 바라볼 수 있었습니다.
적 생성 로직을 구현하는 과정에서 적들이 서로 겹치지 않도록 좌표를 생성하는 방식을 고민했고,
이를 직접 설계하고 구현하며 관련 로직에 대한 이해를 높일 수 있었습니다.
또한 플레이어의 HP에 따라 BGM을 변경하는 기능과 게임 오버 판정을
어디에서 처리해야 하는지를 고민하면서 전체적인 코드 흐름을 더 잘 이해하게 되었습니다.
애니메이션을 tkinter 환경에서 구현해야 했기 때문에 구조적인 접근이 필요했고,
그 과정에서 tkinter의 다양한 기능을 보다 능숙하게 다룰 수 있게 되었습니다.
키 커스터마이징 기능을 구현하며 키코드를 하드코딩하는 방식을 사용했는데,
구현 자체는 비교적 간단했으나 확장성과 유지보수 측면에서 한계가 있음을 느꼈습니다.
추후에는 웨이브에 따라 적 유형을 변경하고 보스 유형을 추가하여 게임의 완성도를 더욱 높여보고 싶습니다.













