AI어시스턴트로 만드는 2D 슈퍼마리오 클론게임
Python은 이 게임을 실행하는 데 필요한 프로그래밍 언어야.
- https://www.python.org/downloads/ 에 접속해.
- 초록색 "Download Python 3.xx.x" 버튼을 클릭해서 설치 파일을 내려받아.
- 설치 파일을 실행하고, 반드시 아래 체크박스를 체크한 뒤 Install 버튼을 눌러.
- ✅ Add Python to PATH (이걸 체크해야 터미널에서 python 명령어를 쓸 수 있어!)
- 설치가 끝나면 터미널(윈도우: 명령 프롬프트 / 맥: 터미널)을 열고 아래 명령어로 확인해봐.
python --versionPython 3.x.x같은 버전 숫자가 나오면 성공!
터미널에서 아래 명령어를 입력해.
git clone https://github.com/haedalprogramming/2dMarioForEdu.git
cd 2dMarioForEdugit이 없다면 https://git-scm.com/downloads 에서 먼저 설치해줘. 또는 GitHub 페이지에서 초록색 "Code" → "Download ZIP" 버튼으로 파일을 직접 내려받아도 돼.
Pygame은 파이썬으로 게임을 만들 수 있게 도와주는 라이브러리야. 터미널에서 아래 명령어 한 줄을 입력하면 자동으로 설치돼.
pip install pygame설치가 끝나면 아래 명령어로 확인해봐.
python -c "import pygame; print(pygame.version.ver)"버전 숫자가 출력되면 성공!
터미널에서 프로젝트 폴더 안으로 이동한 뒤 아래 명령어를 입력해.
python main.py게임 창이 뜨면 준비 완료!
| 키 | 동작 |
|---|---|
| ← → 방향키 | 좌우 이동 |
| 스페이스바 / Z | 점프 |
| R | 게임 오버 후 재시작 |
- 게임 제목: 파이썬 2D 마리오 클론 (가제)
- 장르: 2D 횡스크롤 플랫폼 액션 게임 (Platformer)
- 개발 언어 및 라이브러리: Python 3 + Pygame
- Tip: Pygame은 파이썬으로 2D 게임을 만들 때 가장 널리 쓰이고 배우기 쉬운 라이브러리야.
-
조작 및 이동 (Movement & Jump)
-
좌우 방향키(
$\leftarrow$ ,$\rightarrow$ )로 이동, 스페이스바(또는$Z$ 키)로 점프. -
점프 시 중력(Gravity)이 적용되어 자연스럽게 아래로 떨어져야 함.
-
아이템 및 변신 (Items & Transformation)
-
맵에 있는 특정 블록을 아래에서 치면 아이템(예: 버섯)이 등장.
-
아이템을 먹으면 플레이어 캐릭터의 크기가 커지거나 색상이 변경됨 (상태 변화).
-
전투 및 충돌 (Combat & Collisions)
-
몬스터 처치: 몬스터의 위쪽(머리)을 밟으면 몬스터가 사라짐.
-
플레이어 피해: 몬스터의 옆면이나 아래쪽에 닿으면 플레이어가 치명적인 피해를 입음 (일반 상태일 때는 게임 오버, 아이템을 먹은 상태일 때는 일반 상태로 축소).
코딩할 때 AI에게 "이 부분 만들어줘"라고 요청하기 쉽게 기능을 쪼개놓은 구조야.
| 컴포넌트 이름 | 주요 역할 및 기능 |
|---|---|
| Game Loop (게임 루프) | 게임의 전체적인 흐름 제어 (화면 업데이트, 초당 프레임(FPS) 제한, 이벤트 처리) |
| Player (플레이어) | 위치, 속도, 점프 상태, 변신 상태(일반/강화) 관리 및 키보드 입력 처리 |
| Enemy (몬스터) | 좌우로 자동으로 움직이는 인공지능(AI), 플레이어와의 충돌 판정 |
| Block & Item (블록과 아이템) | 발판이 되는 블록, 부서지는 블록, 아이템을 생성하는 블록 관리 |
| Camera (카메라) | 플레이어가 오른쪽으로 이동할 때 화면이 같이 스크롤되도록 처리 |
한 번에 모두 만들려고 하면 어려우니까, AI 어시스턴트에게 단계별로 질문하며 완성해 나가는 것을 추천해.
- Pygame 창을 띄우고 배경색 칠하기.
- 네모 상자(임시 플레이어)를 만들고 좌우로 움직이기.
- 바닥(발판) 블록 만들기.
- 플레이어에게 중력을 적용하여 바닥에 착지하게 만들기.
- 점프 기능 구현하기 (바닥에 닿아있을 때만 점프 가능하도록 제한).
- 적(몬스터)을 화면에 띄우고 자동으로 좌우로 왔다 갔다 하게 만들기.
- 가장 중요한 충돌 판정 구현: 플레이어의 발바닥 좌표와 몬스터의 머리 좌표가 겹치면 몬스터 제거, 그렇지 않고 옆에서 부딪히면 플레이어 사망.
- 아이템 블록을 만들고, 플레이어가 머리로 치면 버섯 아이템이 나오게 하기.
- 버섯을 먹으면 플레이어 변수(
is_big = True)를 변경하여 캐릭터 크기 키우기. - 커진 상태에서 몬스터에게 닿으면 죽지 않고 다시 작아지도록 규칙 정교화하기.
- 도형(네모) 대신 실제 마리오와 몬스터 이미지(스프라이트) 입히기.
- 배경음악과 효과음 넣기.