1. PyGame 소개 및 설치
안녕하세요! 오늘은 파이썬을 활용한 게임 개발 라이브러리인 PyGame을 설치하고 기본적인 구조를 익혀보겠습니다. PyGame은 간단한 2D 게임을 개발할 수 있도록 다양한 기능을 제공하며, 초보자도 쉽게 시작할 수 있는 라이브러리입니다. 이번 강의에서는 PyGame 설치부터 주요 구성 요소를 이해하고, 마지막으로 키보드 입력을 이용해 사각형을 이동하는 실습을 진행하겠습니다.
2. PyGame 설치 및 개발 환경 설정
PyGame 설치 방법
PyGame을 설치하려면 Python이 설치되어 있어야 합니다. 이후 아래 명령어를 터미널이나 명령 프롬프트에서 실행하세요.
pip install pygame
설치가 완료되면 다음 명령어로 버전을 확인하여 정상적으로 설치되었는지 확인합니다.
python -m pygame --version
출력 예시:
2.1.2
PyGame 실행 테스트
설치가 제대로 되었는지 확인하기 위해 PyGame을 실행하는 간단한 코드를 작성해 봅니다.
import pygame
pygame.init()
print("PyGame이 성공적으로 실행되었습니다!")
pygame.quit()
위 코드가 실행되면 PyGame이 정상적으로 설치된 것입니다.
3. PyGame의 기본 구조
PyGame은 게임 루프를 기반으로 실행됩니다. 기본적인 PyGame 프로그램의 구조는 다음과 같습니다.
예제 1: PyGame 기본 구조
import pygame
# PyGame 초기화
pygame.init()
# 화면 설정
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("PyGame 기본 구조")
# 색상 정의
WHITE = (255, 255, 255)
# 게임 루프
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill(WHITE) # 화면을 흰색으로 채우기
pygame.display.update() # 화면 업데이트
pygame.quit()
기본 PyGame 구조 설명
- 초기화: pygame.init()을 호출하여 PyGame을 초기화합니다.
- 화면 설정: pygame.display.set_mode()를 이용해 게임 창 크기를 설정합니다.
- 색상 정의: RGB 값으로 색상을 정의합니다.
- 이벤트 처리: pygame.event.get()을 사용하여 게임 이벤트를 감지합니다.
- 화면 업데이트: pygame.display.update()를 통해 화면을 지속적으로 갱신합니다.
- 게임 종료: pygame.quit()을 호출하여 게임을 종료합니다.
4. 실습: 키보드 입력으로 사각형 이동하기
문제 설명
- 키보드 화살표 키를 이용하여 사각형을 이동시키는 간단한 게임을 만들어 봅시다.
코드
import pygame
# PyGame 초기화
pygame.init()
# 화면 설정
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("사각형 이동하기")
# 색상 정의
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
# 사각형 초기 위치
rect_x, rect_y = 375, 275
rect_size = 50
rect_speed = 5
# 게임 루프
running = True
while running:
pygame.time.delay(30) # 게임 속도 조절
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 키 입력 감지
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
rect_x -= rect_speed
if keys[pygame.K_RIGHT]:
rect_x += rect_speed
if keys[pygame.K_UP]:
rect_y -= rect_speed
if keys[pygame.K_DOWN]:
rect_y += rect_speed
# 화면 업데이트
screen.fill(WHITE)
pygame.draw.rect(screen, BLUE, (rect_x, rect_y, rect_size, rect_size))
pygame.display.update()
pygame.quit()
출력 예시
- 실행 후, 키보드 방향키를 누르면 파란색 사각형이 이동합니다.
설명
- pygame.key.get_pressed()를 사용하여 키보드 입력을 감지합니다.
- pygame.draw.rect()를 이용하여 사각형을 화면에 그립니다.
- pygame.time.delay(30)를 추가하여 게임이 너무 빠르게 실행되지 않도록 조절합니다.
5. 실습 과제
1. 경계 설정하기
- 사각형이 화면 밖으로 나가지 않도록 경계를 설정하세요.
if rect_x < 0:
rect_x = 0
if rect_x > WIDTH - rect_size:
rect_x = WIDTH - rect_size
if rect_y < 0:
rect_y = 0
if rect_y > HEIGHT - rect_size:
rect_y = HEIGHT - rect_size
2. 속도 증가 기능 추가
- 특정 키(예: Shift)를 누르면 이동 속도가 증가하도록 수정하세요.
3. 배경 이미지 추가하기
- 배경에 이미지를 추가하여 더욱 실감나는 게임 화면을 만들어 보세요.
background = pygame.image.load("background.jpg")
screen.blit(background, (0, 0))
오늘 강의에서는 PyGame을 활용한 게임 개발의 첫 단계로, PyGame을 설치하고 기본적인 구조와 이벤트 루프를 학습했습니다. PyGame을 사용하면 비교적 간단하게 2D 게임을 제작할 수 있으며, 그래픽과 키보드 입력을 쉽게 처리할 수 있습니다.
이번 실습을 통해 PyGame의 화면 설정, 이벤트 처리, 기본적인 화면 갱신 방식을 익혔습니다. 앞으로의 프로젝트에서는 이 개념들을 기반으로 더욱 복잡한 게임 로직과 UI를 구현할 것입니다.
다음 강의에서는 2048 게임을 만들기 위한 4x4 게임판을 설계하고, 랜덤 숫자 배치 기능을 구현해 보겠습니다.
🚀 궁금한 점이나 피드백이 있다면 댓글로 남겨주세요. 여러분의 학습을 응원합니다! 😊
Python Day 18: OOP 종합 실습 - 객체지향 프로그래밍을 활용한 프로젝트 설계
1. 객체지향 프로그래밍(OOP) 종합 실습 소개안녕하세요! 오늘은 객체지향 프로그래밍(OOP)의 개념을 종합적으로 활용하는 실습을 진행해보겠습니다. 지금까지 배운 클래스, 상속, 다형성, 메서드
nerdcodex.tistory.com
Python Day 17: 파이썬 상속과 다형성 - 객체지향 프로그래밍(OOP) 심화 학습
1. 상속과 다형성이란? 안녕하세요! 오늘은 객체지향 프로그래밍(OOP)의 중요한 개념인 **상속(Inheritance)**과 **다형성(Polymorphism)**에 대해 배워보겠습니다. 상속을 활용하면 기존 클래스를 확장하
nerdcodex.tistory.com
Python Day 16: 파이썬 클래스 심화 - 생성자, 소멸자, 클래스 변수와 인스턴스 변수
1. 클래스 심화 개념 소개안녕하세요! 오늘은 객체지향 프로그래밍(OOP)의 중요한 개념 중 하나인 생성자(__init__)와 소멸자(__del__), 클래스 변수와 인스턴스 변수에 대해 알아보겠습니다. 클래스를
nerdcodex.tistory.com
'파이썬(Python)' 카테고리의 다른 글
Python Day 21: 2048 게임 로직 구현 - 숫자 이동 및 합치기 (0) | 2025.03.01 |
---|---|
Python Day 20: 2048 게임판 설계 - 4x4 그리드 구현하기 (0) | 2025.02.27 |
Python Day 18: OOP 종합 실습 - 객체지향 프로그래밍을 활용한 프로젝트 설계 (0) | 2025.02.20 |
Python Day 17: 파이썬 상속과 다형성 - 객체지향 프로그래밍(OOP) 심화 학습 (1) | 2025.02.18 |
Python Day 16: 파이썬 클래스 심화 - 생성자, 소멸자, 클래스 변수와 인스턴스 변수 (0) | 2025.02.15 |