Skip to content

dbsans11/Python-BugCatcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 

Repository files navigation

bug_catcher

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



실행 영상

demo play
이미지 클릭 시 데모 영상으로 이동합니다.

게임 설명

조작키

  • 방향키: ↑, ←, ↓, → (설정창에서 W, A, S, D 키로 변경 가능)
  • 공격키: SPACE (설정창에서 다른 키로 변경 가능, 일부 불가능한 키 존재)
  • 확인키: ENTER
  • 일시정지 또는 나가기: ESC

게임 방법

  • 방향키로 플레이어를 조작하며 공격키를 누르면 커서를 발사합니다.
  • 위에서 아래로 랜덤으로 엔티티가 내려옵니다. 엔티티에는 에러 코드, 클린 코드, 아이템 총 세 종류가 있고 아이템에는 커피, 마감일, ai 총 세 가지가 있습니다.
에러 코드 문법적으로 틀린 코드 또는 실행 결과가 다른 코드입니다.
커서로 에러 코드를 맞춰 없애면 점수를 획득합니다.
반면 에러 코드가 바닥에 닿으면 점수를 잃으며,
플레이어와 충돌하면 점수를 잃고 체력이 1 감소됩니다.
클린 코드 문법적으로 올바르고 실행 결과가 옳은 코드입니다.
클린 코드에 닿거나 성공적으로 바닥으로 내려오면 점수를 획득합니다.
하지만 커서로 맞추면 점수를 잃습니다.
커피 플레이어와 닿으면 체력을 1 회복합니다.
커서에 닿아도 사라지거나 효과를 얻지 않습니다.
마감일 5초간 스피드가 상승합니다.
ai 바이브 코딩 모드로 돌입합니다.
바이브 코딩 모드가 되면 플레이어의 일정 범위에 있는
에러 코드가 자동으로 삭제됩니다.
또한 아이템을 자동으로 획득해줍니다.
  • 플레이어는 점수와 체력 수치를 가지고 있습니다.
    • 플레이어는 점수가 10000점에 도달할 때마다 보스전을 치루게 됩니다.
    • 체력은 기본적으로 총 3개를 가지고 시작합니다. 체력이 0이 되면 게임 오버 됩니다.
  • 엔딩은 존재하지 않습니다. while True로 게임을 즐겨보세요!

보스전

보스전에서는 스파게티 코드와 싸우게 됩니다.

  • 스파게티 코드는 고유한 수치인 엉킴 게이지 를 갖고 있습니다. 엉킴 게이지는 100%부터 시작하며 0%에 도달하면 승리할 수 있습니다.
  • 일반 게임에서는 존재하지 않는 보스전만의 특별한 기믹들을 볼 수 있습니다.
스파게티 코드는 미트볼을 생성합니다.
미트볼에 닿으면 hp가 1 감소하고 엉킴 게이지가 증가합니다.
커서를 명중시켜 미트볼을 없앨 수 있으며 미트볼을 없애면 엉킴 게이지가 감소합니다.
새로운 아이템, 에너지 드링크가 등장합니다.
에너지 드링크를 획득하면 5초간 엉킴 게이지 감소율이 증가합니다.
일정 간격을 두고 쓸모 없는 주석을 발생시킵니다.
경고 표시가 나타나고 일정 시간 이후 쓸모 없는 주석이 배치됩니다.
쓸모 없는 주석이 게임 내에 있으면 엉킴 게이지는 천천히 증가합니다.
플레이어는 쓸모 없는 주석 안으로 들어갈 수도 있습니다.
주석 내부로 들어가면 스피드가 느려지고
쓸모 없는 주석으로 인한 엉킴 게이지 증가율이 상승합니다.
커서를 명중시켜 쓸모 없는 주석을 없앨 수 있습니다.


소스 출처

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 곤충채집소년의 영문명에서 따왔습니다.
  • 게임 언더테일의 게임 오버 방식을 오마주 했습니다.
    원본
    Undertale Game Over Scene
    오마주
    demo play - game over
  • 게임 PokeRogue의 보스 무한다이노의 대사를 오마주 했습니다.
Image Image
원본 오마주

후기

이번 프로젝트를 통해 게임을 플레이어가 아닌 개발자의 시선으로 바라볼 수 있었습니다.
적 생성 로직을 구현하는 과정에서 적들이 서로 겹치지 않도록 좌표를 생성하는 방식을 고민했고,
이를 직접 설계하고 구현하며 관련 로직에 대한 이해를 높일 수 있었습니다.
또한 플레이어의 HP에 따라 BGM을 변경하는 기능과 게임 오버 판정을
어디에서 처리해야 하는지를 고민하면서 전체적인 코드 흐름을 더 잘 이해하게 되었습니다.
애니메이션을 tkinter 환경에서 구현해야 했기 때문에 구조적인 접근이 필요했고,
그 과정에서 tkinter의 다양한 기능을 보다 능숙하게 다룰 수 있게 되었습니다.
키 커스터마이징 기능을 구현하며 키코드를 하드코딩하는 방식을 사용했는데,
구현 자체는 비교적 간단했으나 확장성과 유지보수 측면에서 한계가 있음을 느꼈습니다.
추후에는 웨이브에 따라 적 유형을 변경하고 보스 유형을 추가하여 게임의 완성도를 더욱 높여보고 싶습니다.

About

tkinter 기반 슈팅 게임입니다

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages