[python] Pygame을 활용한 타임어택 게임 만들기
개요
이번에는 Python의 게임 개발 라이브러리인 Pygame을 사용하여 타임어택 게임을 만들어보려고 합니다. Pygame은 간단한 게임부터 복잡한 게임까지 다양한 유형의 게임을 개발할 수 있는 많은 기능을 제공합니다. 이번 프로젝트에서는 Pygame을 사용하여 플레이어가 지정된 시간 내에 적을 최대한 많이 제거해야 하는 타임어택 게임을 만들어보겠습니다.
필요한 라이브러리 설치
먼저 Pygame을 설치해야 합니다. 아래의 명령을 사용하여 Pygame을 설치할 수 있습니다.
pip install pygame
게임 창 설정
Pygame을 사용하여 게임 창을 생성하고 설정할 수 있습니다. 다음의 코드를 이용하여 게임 창을 생성하는 함수를 작성해보겠습니다.
import pygame
pygame.init()
WIDTH = 800
HEIGHT = 600
win = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("타임어택 게임")
플레이어와 적 생성
이제 플레이어와 적을 생성하고 화면에 표시해보겠습니다. 플레이어와 적은 각각 이미지를 가지고 있으며, 플레이어는 키보드로 조작할 수 있습니다.
player_img = pygame.image.load('player.png')
player_x = 370
player_y = 480
enemy_img = pygame.image.load('enemy.png')
enemy_x = 370
enemy_y = 50
def player(x, y):
win.blit(player_img, (x, y))
def enemy(x, y):
win.blit(enemy_img, (x, y))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
win.fill((0, 0, 0))
player(player_x, player_y)
enemy(enemy_x, enemy_y)
pygame.display.update()
게임 메커니즘 추가
플레이어와 적을 화면에 표시하는 것 외에도, 게임 로직을 추가해보겠습니다. 이번 게임에서는 플레이어가 적과 충돌하면 게임이 종료되도록 만들어보겠습니다.
import random
def collision(player_x, player_y, enemy_x, enemy_y):
distance = ((player_x - enemy_x) ** 2 + (player_y - enemy_y) ** 2) ** 0.5
if distance < 27:
return True
else:
return False
score = 0
font = pygame.font.Font('freesansbold.ttf', 32)
def show_score(x, y):
score_text = font.render("Score: " + str(score), True, (255, 255, 255))
win.blit(score_text, (x, y))
enemy_speed = 3
enemy_x_change = 0
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
enemy_x_change = -enemy_speed
if event.key == pygame.K_RIGHT:
enemy_x_change = enemy_speed
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
enemy_x_change = 0
enemy_x += enemy_x_change
if enemy_x <= 0:
enemy_x = 0
elif enemy_x >= WIDTH - 64:
enemy_x = WIDTH - 64
if collision(player_x, player_y, enemy_x, enemy_y):
running = False
win.fill((0, 0, 0))
player(player_x, player_y)
enemy(enemy_x, enemy_y)
show_score(10, 10)
pygame.display.update()
결론
이상으로 Pygame을 활용하여 타임어택 게임을 만드는 방법에 대해 알아보았습니다. Pygame을 사용하면 다양한 종류의 게임을 개발할 수 있으므로, 여러분의 창의력을 발휘하여 멋진 게임을 만들어보세요!