원당컴퓨터학원
원당컴퓨터학원
학원소개
공지사항FAQ수강료입시정보032-565-5497

파이게임 교육 커리큘럼

Python과 Pygame으로 나만의 게임을 만드는 5단계 학습 과정입니다. 기초 화면 출력부터 파일 저장, 프로젝트 완성까지 단계적으로 배웁니다.

Python 3.x
Pygame 2.x
VS Code
IDLE
학습 단계 타임라인
1

1단계: Pygame 기초

학습 목표: 화면을 만들고 이벤트를 처리하며 도형을 그릴 수 있다.

pygame.init() / pygame.quit()

display.set_mode() / set_caption()

pygame.draw (rect, circle, line)

KEYDOWN / QUIT 이벤트 처리

2

2단계: 게임 루프와 충돌 감지

3

3단계: 이미지·사운드 활용

4

4단계: 파일 입출력

5

5단계: 미니 게임 프로젝트 완성


주요 개념 카드

파이게임 개발에서 자주 쓰이는 핵심 패턴을 코드와 함께 살펴보세요.

🔄

게임 루프 구조

모든 게임의 핵심 — 이벤트 처리 → 상태 업데이트 → 화면 렌더링을 매 프레임 반복합니다.

while running: # 1. 이벤트 처리 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 2. 상태 업데이트 player.move() score += 1 # 3. 화면 렌더링 screen.fill((0, 0, 0)) player.draw(screen) pygame.display.flip() clock.tick(60) # 60FPS

💥

충돌 감지

pygame.Rect의 colliderect()로 두 오브젝트가 겹치는지 확인합니다.

player_rect = pygame.Rect(x, y, 40, 40) enemy_rect = pygame.Rect(ex, ey, 40, 40) # 직사각형 충돌 감지 if player_rect.colliderect(enemy_rect): print("충돌!") lives -= 1 # 여러 적과 동시에 충돌 체크 enemies = [pygame.Rect(...) for _ in range(5)] hit_idx = player_rect.collidelist(enemies) if hit_idx != -1: enemies.pop(hit_idx)

💾

최고 점수 파일 저장

게임이 종료돼도 최고 점수를 기억하는 파일 I/O 패턴입니다.

import json def load_high_score(): try: with open("highscore.json", "r") as f: return json.load(f)["score"] except FileNotFoundError: return 0 # 파일 없으면 0점 def save_high_score(score): with open("highscore.json", "w") as f: json.dump({"score": score}, f) # 사용 예시 high_score = load_high_score() if current_score > high_score: save_high_score(current_score)

학생 성취 하이라이트

수업에서 인상적인 방식으로 문제를 해결하거나 기능을 확장한 사례들입니다.

🏆

문제 해결력
종료 조건을 재설계한 학생

게임 오버 화면에서 ESC 키 대신 R 키로 재시작하는 로직을 스스로 구현해 버그를 해결했습니다.

💡

자기주도 학습
파일 I/O를 자발적으로 추가한 학생

수업 내용을 넘어 JSON 파일로 최고 점수를 저장하는 기능을 스스로 구현했습니다.

🎨

창의적 표현
게임 UI 완성도를 높인 학생

목숨 표시를 하트 아이콘으로, 점수를 폰트 렌더링으로 교체해 완성도 높은 UI를 구현했습니다.

🌐 브라우저 라이브 플레이 (Pygbag)

pygbag를 사용하면 만든 게임을 브라우저에서 바로 실행할 수 있습니다.

1
pygbag 설치
pip install pygbag
Python 패키지 관리자로 pygbag를 설치합니다.
2
빌드 실행
python -m pygbag --build game.py
game.py가 있는 폴더에서 실행합니다. build/ 폴더에 결과물이 생성됩니다.
3
ZIP으로 압축
build/ 폴더 내용을 → game_wasm.zip
build/ 폴더 안의 파일들(index.html 포함)을 zip으로 묶습니다.
4
마이페이지에서 업로드
마이페이지 → 내 프로젝트 → ZIP 업로드
관리자 검토 후 활성화되면 상세 페이지에서 바로 플레이할 수 있습니다.
⚠️ 주의: game.py 파일 최상단에 import asyncio async def main(): 패턴이 필요합니다. 기존 코드 수정 방법은 선생님께 문의하세요.
나만의 파이게임 프로젝트를 완성했나요?

프로젝트 자랑하기 코너에 등록하고 친구들의 별점과 응원을 받아보세요!