본문 바로가기
  • NerdCodX Blog
파이썬(Python)

Python Day 19: PyGame 설치 및 기본 구조 - 게임 개발을 위한 첫걸음

by NerdCodeX 2025. 2. 25.

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 구조 설명

  1. 초기화: pygame.init()을 호출하여 PyGame을 초기화합니다.
  2. 화면 설정: pygame.display.set_mode()를 이용해 게임 창 크기를 설정합니다.
  3. 색상 정의: RGB 값으로 색상을 정의합니다.
  4. 이벤트 처리: pygame.event.get()을 사용하여 게임 이벤트를 감지합니다.
  5. 화면 업데이트: pygame.display.update()를 통해 화면을 지속적으로 갱신합니다.
  6. 게임 종료: 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()

 

출력 예시

  • 실행 후, 키보드 방향키를 누르면 파란색 사각형이 이동합니다.

설명

  1. pygame.key.get_pressed()를 사용하여 키보드 입력을 감지합니다.
  2. pygame.draw.rect()를 이용하여 사각형을 화면에 그립니다.
  3. 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