Python/Game

🐍 Snake(꼬리잡기) 게임 코드 #python

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

 

 

📌 목차

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

🎮 게임 소개

안녕하세요, 이번에는 파이썬의 Pygame을 사용해 간단하게 만들어본 "꼬리잡기 게임"을 소개합니다. 이 게임은 2D 고전 뱀 게임의 형태로, 플레이어는 뱀을 조종해 화면의 먹이를 먹으며 뱀의 길이를 늘려나갑니다. 기본적인 구현이므로, 파이썬과 Pygame의 기능을 학습하기에 좋은 예제입니다.

🔍 게임 방법

  1. 뱀 이동: 방향키를 사용해 뱀을 이동시킵니다.
  2. 먹이 먹기: 뱀이 빨간색의 먹이에 닿으면 뱀의 길이가 증가합니다.
  3. 게임 종료: 뱀이 화면의 경계에 닿거나 자신의 몸통과 충돌하면 게임이 종료됩니다.
  4. 다시 시작: 게임이 종료되면 'Q'를 눌러 게임을 종료하거나 'R'을 눌러 다시 시작할 수 있습니다.

🖥️ 코드 하이라이트

아래는 게임의 핵심 코드입니다. Pygame 라이브러리를 사용해 간단한 뱀 게임을 구현했습니다. 주요 기능과 게임 로직은 다음과 같습니다:


import pygame
import random
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)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)

# 게임 설정
block_size = 20
snake_speed = 15

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

# 뱀 만들기
def draw_snake(snake_blocks):
    for block in snake_blocks:
        pygame.draw.rect(screen, GREEN, [block[0], block[1], block_size, block_size])

# 메시지 출력 함수
def show_message(text, color):
    message = font.render(text, True, color)
    screen.blit(message, (screen_width // 2 - message.get_width() // 2, screen_height // 2 - message.get_height() // 2))

# 게임 루프
def game_loop():
    game_over = False
    game_close = False

    # 시작 위치
    x = screen_width // 2
    y = screen_height // 2

    # 이동 변화량
    x_change = 0
    y_change = 0

    # 뱀의 몸통 좌표 저장
    snake_blocks = []
    snake_length = 1

    # 먹이 위치
    food_x = round(random.randrange(0, screen_width - block_size) / block_size) * block_size
    food_y = round(random.randrange(0, screen_height - block_size) / block_size) * block_size

    # 게임 속도 조절
    clock = pygame.time.Clock()

    while not game_over:

        while game_close:
            screen.fill(BLACK)
            show_message("게임 오버! 다시 시작하려면 Q를 누르세요.", RED)
            pygame.display.update()

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_r:
                        game_loop()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_change = -block_size
                    y_change = 0
                elif event.key == pygame.K_RIGHT:
                    x_change = block_size
                    y_change = 0
                elif event.key == pygame.K_UP:
                    y_change = -block_size
                    x_change = 0
                elif event.key == pygame.K_DOWN:
                    y_change = block_size
                    x_change = 0

        # 뱀의 새로운 위치
        x += x_change
        y += y_change

        # 화면 경계에 닿으면 게임 종료
        if x >= screen_width or x < 0 or y >= screen_height or y < 0:
            game_close = True

        # 화면 갱신
        screen.fill(BLACK)

        # 먹이 그리기
        pygame.draw.rect(screen, RED, [food_x, food_y, block_size, block_size])

        # 뱀의 이동
        snake_blocks.append([x, y])
        if len(snake_blocks) > snake_length:
            del snake_blocks[0]

        # 뱀의 몸통과 충돌하면 게임 종료
        for block in snake_blocks[:-1]:
            if block == [x, y]:
                game_close = True

        # 뱀 그리기
        draw_snake(snake_blocks)

        # 먹이를 먹었을 때
        if x == food_x and y == food_y:
            food_x = round(random.randrange(0, screen_width - block_size) / block_size) * block_size
            food_y = round(random.randrange(0, screen_height - block_size) / block_size) * block_size
            snake_length += 1

        pygame.display.update()

        # 속도 설정
        clock.tick(snake_speed)

    pygame.quit()
    sys.exit()

# 게임 실행
game_loop()
    

▶ 게임 실행

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

python snake_game.py

이후, 화면의 안내에 따라 게임을 즐기시면 됩니다. 단순하지만 중독성 있는 꼬리잡기 게임을 통해 파이썬의 기본적인 게임 로직을 배워보세요!

반응형
LIST