Python/Game
🐍 Snake(꼬리잡기) 게임 코드 #python
고발초이이
2024. 10. 14. 18:43
반응형
SMALL
📌 목차
🎮 게임 소개
안녕하세요, 이번에는 파이썬의 Pygame을 사용해 간단하게 만들어본 "꼬리잡기 게임"을 소개합니다. 이 게임은 2D 고전 뱀 게임의 형태로, 플레이어는 뱀을 조종해 화면의 먹이를 먹으며 뱀의 길이를 늘려나갑니다. 기본적인 구현이므로, 파이썬과 Pygame의 기능을 학습하기에 좋은 예제입니다.
🔍 게임 방법
- 뱀 이동: 방향키를 사용해 뱀을 이동시킵니다.
- 먹이 먹기: 뱀이 빨간색의 먹이에 닿으면 뱀의 길이가 증가합니다.
- 게임 종료: 뱀이 화면의 경계에 닿거나 자신의 몸통과 충돌하면 게임이 종료됩니다.
- 다시 시작: 게임이 종료되면 '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