[python] Pygame을 활용한 단어 맞추기 게임 만들기

이번에는 Python의 게임 개발 라이브러리인 Pygame을 활용하여 단어 맞추기 게임을 만들어보겠습니다. 이 게임은 사용자가 주어진 시간 안에 주어진 단어를 맞추는 게임입니다. 시작해봅시다!

Pygame 설치하기

이 게임을 만들기 위해서는 먼저 Pygame을 설치해야 합니다. 다음 명령을 사용하여 Pygame을 설치할 수 있습니다.

pip install pygame

Pygame으로 새로운 게임 만들기

먼저, 새로운 Python 파일을 만들고 다음 코드를 작성해봅시다.

import pygame
import random

# 게임 초기화
pygame.init()

# 게임 화면 설정
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("단어 맞추기 게임")

# 시계 객체 생성
clock = pygame.time.Clock()

# 게임 루프
running = True
while running:
    # 배경색 설정
    screen.fill((255, 255, 255))

    # 게임 종료 처리
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 화면 업데이트
    pygame.display.flip()

    # FPS 설정
    clock.tick(60)

# 게임 종료
pygame.quit()

이 코드는 Pygame을 사용하여 기본 게임 창을 만들고, 게임 루프를 설정합니다. 게임 창 크기는 screen_widthscreen_height 변수로 지정됩니다. 또한, 게임 창의 제목은 “단어 맞추기 게임”으로 설정됩니다. 게임 루프를 통해 게임을 실행하면 빈 화면이 나타납니다.

단어 목록과 시간 제한 추가하기

이제 게임에 사용될 단어 목록과 시간 제한 기능을 추가해봅시다. 다음 코드를 기존 코드에 추가해주세요.

# 단어 목록
words = ["apple", "banana", "cherry", "donut", "elephant", "flower"]

# 시간 제한
time_limit = 30

# 게임 루프
running = True
start_time = pygame.time.get_ticks()  # 게임 시작 시간
while running:
    # ...

    # 게임 시간 계산
    current_time = pygame.time.get_ticks() - start_time
    remaining_time = max(0, time_limit - current_time) // 1000  # 밀리초를 초로 변환

    # 시간 표시
    font = pygame.font.Font(None, 36)
    text = font.render("Time: {}s".format(remaining_time), True, (0, 0, 0))
    screen.blit(text, (10, 10))

    # 게임 종료 조건 확인
    if remaining_time == 0:
        running = False

    # ...

# ...

이 코드에서는 words 리스트를 만들어 게임에 사용될 단어들을 설정합니다. 또한, time_limit 변수를 사용하여 게임의 시간 제한을 설정합니다. 게임 루프에서는 start_time 변수를 사용하여 게임의 시작 시간을 기록하고, current_time 변수를 사용하여 게임 실행 시간을 계산합니다. 이후, remaining_time 변수를 사용하여 남은 시간을 계산합니다. font 객체를 생성하여 시간을 표시하고, 게임 종료 조건을 확인하여 게임을 종료시킵니다.

단어 맞추기 화면 추가하기

이제 단어 맞추기 게임의 화면을 구성해봅시다. 다음 코드를 기존 코드에 추가해주세요.

# 현재 단어
current_word = random.choice(words)

# 단어 표시
font = pygame.font.Font(None, 72)
text = font.render(current_word, True, (0, 0, 0))
text_rect = text.get_rect(center=(screen_width/2, screen_height/2))
screen.blit(text, text_rect)

# ...

# 게임 종료 조건 확인
if remaining_time == 0:
    running = False

if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_RETURN:
        # 사용자 입력 처리
        input_word = input("단어를 입력하세요: ")
        if input_word == current_word:
            print("정답입니다!")
        else:
            print("틀렸습니다!")
        current_word = random.choice(words)
        text = font.render(current_word, True, (0, 0, 0))
        text_rect = text.get_rect(center=(screen_width/2, screen_height/2))

이 코드에서는 current_word 변수를 사용하여 현재 맞춰야 할 단어를 설정합니다. font 객체와 text 변수를 사용하여 현재 단어를 게임 화면에 표시합니다. 또한, 사용자의 키 입력을 받아서 맞추기 기능을 구현합니다. 사용자가 엔터 키를 누르면 input_word 변수에 사용자의 입력을 저장하고, 입력된 단어와 현재 단어를 비교하여 정답 여부를 출력합니다. 이후, 새로운 단어를 설정하여 다음 문제를 준비합니다.

게임 실행하기

모든 코드를 작성했으니 이제 게임을 실행해봅시다. 파일을 저장한 다음 터미널에서 다음 명령을 실행하세요.

python 파일이름.py

게임 창이 열리고, 주어진 시간 동안 단어를 맞추는 게임을 즐길 수 있습니다.

결론

이번 튜토리얼에서는 Pygame을 활용하여 단어 맞추기 게임을 만드는 방법에 대해 알아보았습니다. Pygame을 사용하면 간단한 게임부터 복잡한 게임까지 다양한 유형의 게임을 개발할 수 있습니다. 게임 개발에 관심이 있는 분들은 Pygame을 공부하고 다양한 게임을 만들어보세요!

참고 자료


Note: 이 예제는 Python 3 버전에서 작성되었습니다.