Python/Game

⚡ 반응속도 테스트 게임 #python

고발초이이 2024. 10. 14. 18:38
반응형
SMALL

 

 

📌 목차

  1. 게임 소개
  2. 게임 방법
  3. 코드 하이라이트
  4. 게임 실행

🎮 게임 소개

안녕하세요, 코딩을 사랑하는 여러분! 이번에는 여러분의 반사신경을 테스트해볼 수 있는 흥미로운 파이썬 게임, "반응 속도 테스트 게임"을 소개합니다. 이 게임은 Pygame을 활용해 간단한 게임을 구현하는 과정에서 만들어졌으며, 무작위로 녹색 화면으로 전환되는 순간을 빠르게 클릭해야 하는 방식입니다. 자신의 반응 속도를 테스트하고, 계급을 통해 자신의 반사신경 수준을 확인해보세요!

🔍 게임 방법

  1. 게임 시작: 게임이 시작되면 "화면을 클릭하여 시작하세요"라는 메시지가 화면에 표시됩니다.
  2. 준비 상태: 클릭 후, 화면이 빨간색으로 전환되어 준비를 시킵니다.
  3. 반응 테스트: 무작위 시간(2~5초) 후 화면이 녹색으로 바뀝니다. 이때 최대한 빠르게 클릭하세요!
  4. 계급 확인: 반응 속도에 따라 계급이 부여됩니다.
    • 0.2초 이하: "신의 손"
    • 0.2~0.4초: "반사 신경 마스터"
    • 0.4~0.6초: "준수한 반응"
    • 0.6~1.0초: "좀 더 노력해요"
    • 1.0초 이상: "거북이"

🖥️ 코드 하이라이트

게임의 주요 코드를 아래에 소개합니다. 게임은 Pygame 라이브러리를 활용해 화면을 구성하고, 반응 속도를 계산하는 구조로 만들어졌습니다. 주요 로직은 다음과 같습니다:


import pygame
import random
import time
import sys

# Pygame 초기화
pygame.init()

# 화면 설정
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("반응 속도 테스트 게임")

# 색상 설정
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLACK = (0, 0, 0)

# 폰트 설정
font = pygame.font.SysFont("malgungothic", 48)

# 게임 상태
waiting_for_click = False
game_start_time = 0
reaction_time = 0

# 계급을 결정하는 함수
def get_rank(reaction_time):
    if reaction_time <= 0.2:
        return "신의 손"
    elif reaction_time <= 0.4:
        return "반사 신경 마스터"
    elif reaction_time <= 0.6:
        return "준수한 반응"
    elif reaction_time <= 1.0:
        return "좀 더 노력해요"
    else:
        return "거북이"

# 게임 메인 루프
def main():
    global waiting_for_click, game_start_time, reaction_time

    screen.fill(WHITE)
    show_message("화면을 클릭하여 시작하세요", BLACK)

    pygame.display.update()
    
    # 무작위 대기 시간 설정
    random_wait_time = random.uniform(2, 5)
    
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            
            if event.type == pygame.MOUSEBUTTONDOWN and not waiting_for_click:
                screen.fill(RED)
                show_message("준비하세요...", BLACK)
                pygame.display.update()
                time.sleep(random_wait_time)
                screen.fill(GREEN)
                pygame.display.update()
                game_start_time = time.time()
                waiting_for_click = True
            
            elif event.type == pygame.MOUSEBUTTONDOWN and waiting_for_click:
                reaction_time = time.time() - game_start_time
                rank = get_rank(reaction_time)
                show_message(f"반응 시간: {reaction_time:.3f} 초\n계급: {rank}", BLACK)
                pygame.display.update()
                time.sleep(3)
                reset_game()

        pygame.display.update()

# 메시지 출력 함수
def show_message(text, color):
    message_lines = text.split('\n')
    y_offset = 0
    for line in message_lines:
        message = font.render(line, True, color)
        screen.blit(message, (screen_width // 2 - message.get_width() // 2, screen_height // 2 - message.get_height() // 2 + y_offset))
        y_offset += 60

# 게임 초기화 함수
def reset_game():
    global waiting_for_click
    waiting_for_click = False
    screen.fill(WHITE)
    show_message("화면을 클릭하여 시작하세요", BLACK)
    pygame.display.update()

if __name__ == '__main__':
    main()
    

▶ 게임 실행

이 코드는 Python 3.x와 Pygame이 설치되어 있어야 정상적으로 작동합니다. 게임을 실행하려면 아래 명령어를 터미널에서 실행하세요:

python reaction_game.py

이후, 화면의 안내에 따라 게임을 즐기시면 됩니다. 자신의 반응 속도를 테스트하고, "신의 손"이라는 칭호에 도전해보세요! 💪

반응형
LIST