이번 튜토리얼에서는 Python의 Pygame 라이브러리를 사용하여 간단한 프로핑(Game of Pong) 게임을 만들어 보겠습니다. 프로핑은 테니스를 기반으로 한 게임으로, 두 플레이어가 패들을 사용하여 공을 네트를 넘어 상대방의 골대에 넣는 것을 목표로 합니다.
Pygame 설치
먼저, Pygame을 설치해야 합니다. 아래 명령을 사용하여 Pygame을 설치할 수 있습니다.
pip install pygame
게임 초기화
게임을 시작하기 전에 Pygame을 초기화해야 합니다. 다음과 같이 pygame.init()
을 호출하여 Pygame을 초기화합니다.
import pygame
pygame.init()
게임 화면 설정
Pygame을 초기화한 후에는 게임 화면의 크기와 타이틀을 설정해야 합니다. 아래 코드를 사용하여 게임 화면을 생성할 수 있습니다.
screen_width = 800
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Propping Game")
게임 루프
게임 루프는 게임의 주요 로직을 처리하는 부분입니다. 이 부분에서는 키 입력을 처리하고 게임 상태를 갱신하는 등의 작업을 수행합니다. 아래는 간단한 게임 루프의 예입니다.
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 게임 로직 처리
# ...
# 화면 업데이트
pygame.display.flip()
pygame.quit()
패들과 공 추가
게임에는 두 개의 패들과 하나의 공이 필요합니다. 각각의 객체는 이미지로 표현됩니다. 다음과 같이 패들과 공 이미지를 불러와 객체를 생성할 수 있습니다.
paddle_width = 10
paddle_height = 60
paddle_color = (255, 255, 255) # 흰색
paddle1_pos = pygame.Rect(50, 0, paddle_width, paddle_height)
paddle2_pos = pygame.Rect(screen_width - 50 - paddle_width, 0, paddle_width, paddle_height)
ball_radius = 10
ball_color = (255, 0, 0) # 빨간색
ball_pos = pygame.Rect(screen_width // 2, screen_height // 2, ball_radius * 2, ball_radius * 2)
게임 로직 처리
게임 로직은 주로 키 입력 처리 및 객체 움직임 업데이트와 관련된 작업을 수행합니다. 예를 들어, 아래 코드는 키 입력 처리 및 패들 움직임을 갱신하는 방법을 보여줍니다.
# 패들 움직임 갱신
keys = pygame.key.get_pressed()
if keys[pygame.K_w] and paddle1_pos.y > 0:
paddle1_pos.y -= 5
elif keys[pygame.K_s] and paddle1_pos.y < screen_height - paddle_height:
paddle1_pos.y += 5
if keys[pygame.K_UP] and paddle2_pos.y > 0:
paddle2_pos.y -= 5
elif keys[pygame.K_DOWN] and paddle2_pos.y < screen_height - paddle_height:
paddle2_pos.y += 5
화면 업데이트
화면을 업데이트하려면 pygame.display.flip()
을 호출해야 합니다. 이렇게 하면 게임 화면이 실제로 그려지고, 객체의 위치 및 상태가 반영됩니다.
screen.fill((0, 0, 0)) # 검은색 배경 색상으로 화면 채우기
pygame.draw.rect(screen, paddle_color, paddle1_pos) # 패들 1 그리기
pygame.draw.rect(screen, paddle_color, paddle2_pos) # 패들 2 그리기
pygame.draw.circle(screen, ball_color, ball_pos.center, ball_radius) # 공 그리기
전체 코드
아래는 프로핑 게임의 전체 코드입니다.
import pygame
pygame.init()
# 게임 화면 설정
screen_width = 800
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Propping Game")
# 패들과 공 추가
paddle_width = 10
paddle_height = 60
paddle_color = (255, 255, 255) # 흰색
paddle1_pos = pygame.Rect(50, 0, paddle_width, paddle_height)
paddle2_pos = pygame.Rect(screen_width - 50 - paddle_width, 0, paddle_width, paddle_height)
ball_radius = 10
ball_color = (255, 0, 0) # 빨간색
ball_pos = pygame.Rect(screen_width // 2, screen_height // 2, ball_radius * 2, ball_radius * 2)
# 게임 루프
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 게임 로직 처리
keys = pygame.key.get_pressed()
if keys[pygame.K_w] and paddle1_pos.y > 0:
paddle1_pos.y -= 5
elif keys[pygame.K_s] and paddle1_pos.y < screen_height - paddle_height:
paddle1_pos.y += 5
if keys[pygame.K_UP] and paddle2_pos.y > 0:
paddle2_pos.y -= 5
elif keys[pygame.K_DOWN] and paddle2_pos.y < screen_height - paddle_height:
paddle2_pos.y += 5
# 화면 업데이트
screen.fill((0, 0, 0)) # 검은색 배경 색상으로 화면 채우기
pygame.draw.rect(screen, paddle_color, paddle1_pos) # 패들 1 그리기
pygame.draw.rect(screen, paddle_color, paddle2_pos) # 패들 2 그리기
pygame.draw.circle(screen, ball_color, ball_pos.center, ball_radius) # 공 그리기
pygame.display.flip()
pygame.quit()
이제 위의 코드를 실행하면 Pygame을 사용하여 간단한 프로핑 게임을 즐길 수 있습니다.