[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을 사용하면 다양한 종류의 게임을 개발할 수 있으므로, 여러분의 창의력을 발휘하여 멋진 게임을 만들어보세요!

참고 자료