파이썬 프로그램

파이썬과 pygame을 이용한 간단한 스네이크(뱀) 게임 만들기

슈가가족 2023. 6. 23. 23:34

파이썬으로 뱀 게임 만들기 먹이를 먹고 자라는 재미있는 게임

 

Python 3 설치: 파이썬 공식 웹사이트에서 Python 3 최신 버전을 다운로드하여 설치합니다.

적절한 텍스트 에디터: 파이썬 코드를 작성할 수 있는 텍스트 에디터를 선택합니다. 예를 들면 Visual Studio Code, PyCharm, Sublime Text 등이 있습니다.

 

 

이번 포스트에서는 파이썬의 게임 라이브러리인 pygame을 활용하여 기본적인 스네이크 게임을 만드는 방법을 알아보겠습니다. 이 게임은 화면에 뱀이 나타나고, 움직이면서 먹이를 먹으면서 점점 길어지는 동시에, 자신의 몸을 부딪히거나 화면 밖으로 나가면 게임이 끝나는 클래식 스네이크 게임입니다. 키 설정: 방향키: 뱀의 움직임 제어

ESC: 게임 종료

 

주요 학습 포인트:

 

기본적인 게임 루프 설정

이벤트 처리

뱀, 먹이 그리기

충돌 처리 및 게임 종료 여부 확인

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import pygame
import sys
import random
from pygame.locals import *
 
pygame.init()
 
FPS = 10
WINDOW_WIDTH = 640
WINDOW_HEIGHT = 480
CELL_SIZE = 20
 
WHITE = (255255255)
GREEN = (02550)
RED = (25500)
BLACK = (000)
 
def draw_snake(snake_coords):
for coord in snake_coords:
x, y = coord['x'* CELL_SIZE, coord['y'* CELL_SIZE
pygame.draw.rect(display_surface, GREEN, (x, y, CELL_SIZE, CELL_SIZE))
 
def draw_apple(coord):
x, y = coord['x'* CELL_SIZE, coord['y'* CELL_SIZE
pygame.draw.rect(display_surface, RED, (x, y, CELL_SIZE, CELL_SIZE))
 
def run_game():
start_x = random.randint(5, WINDOW_WIDTH // CELL_SIZE - 6)
start_y = random.randint(5, WINDOW_HEIGHT // CELL_SIZE - 6)
snake_coords = [{'x': start_x, 'y': start_y},
{'x': start_x - 1'y': start_y},
{'x': start_x - 2'y': start_y}]
direction = 'right'
 
apple_x = random.randint(0, WINDOW_WIDTH // CELL_SIZE - 1)
apple_y = random.randint(0, WINDOW_HEIGHT // CELL_SIZE - 1)
apple = {'x': apple_x, 'y': apple_y}
 
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_UP and direction != 'down':
direction = 'up'
elif event.key == K_DOWN and direction != 'up':
direction = 'down'
elif event.key == K_LEFT and direction != 'right':
direction = 'left'
elif event.key == K_RIGHT and direction != 'left':
direction = 'right'
 
if direction == 'up':
new_head = {'x': snake_coords[0]['x'], 'y': snake_coords[0]['y'- 1}
elif direction == 'down':
new_head = {'x': snake_coords[0]['x'], 'y': snake_coords[0]['y'+ 1}
elif direction == 'left':
new_head = {'x': snake_coords[0]['x'- 1'y': snake_coords[0]['y']}
elif direction == 'right':
new_head = {'x': snake_coords[0]['x'+ 1'y': snake_coords[0]['y']}
 
snake_coords.insert(0, new_head)
 
if (new_head['x'== apple['x'and new_head['y'== apple['y']):
apple_x = random.randint(0, WINDOW_WIDTH // CELL_SIZE - 1)
apple_y = random.randint(0, WINDOW_HEIGHT // CELL_SIZE - 1)
apple = {'x': apple_x, 'y': apple_y}
else:
del snake_coords[-1]
 
display_surface.fill(WHITE)
draw_snake(snake_coords)
draw_apple(apple)
pygame.display.update()
 
if (new_head['x'< 0 or new_head['x'>= WINDOW_WIDTH // CELL_SIZE or
new_head['y'< 0 or new_head['y'>= WINDOW_HEIGHT // CELL_SIZE or
new_head in snake_coords[1:]):
return
 
fps_clock.tick(FPS)
 
fps_clock = pygame.time.Clock()
display_surface = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption('Snake Game')
 
def main_menu():
while True:
display_surface.fill(WHITE)
 
play_button = pygame.Rect(WINDOW_WIDTH // 2 - 50, WINDOW_HEIGHT // 210040)
 
pygame.draw.rect(display_surface, GREEN, play_button)
play_text = pygame.font.Font(None30).render("Play"True, BLACK)
 
display_surface.blit(play_text, play_button.move(2010))
 
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == MOUSEBUTTONDOWN:
mouse_x, mouse_y = event.pos
 
if play_button.collidepoint(mouse_x, mouse_y):
return
 
pygame.display.update()
fps_clock.tick(FPS)
 
 
while True:
main_menu()
run_game()
 
cs

파이썬 snake_game.py

snake_game.py
0.00MB


html 형식 snake_game.html

snake_game.html
0.00MB
위의 코드는 파이썬과 Pygame 라이브러리를 사용하여 뱀 게임을 만드는 기본적인 예시입니다.
게임 화면 크기, 뱀과 먹이의 초기 위치, 이동 방향, 먹이를 먹었을 때 코드 설명:
먼저 pygame 라이브러리를 import하여 게임 개발에 필요한 기능을 사용할 수 있도록 준비합니다.
1. 화면의 크기를 설정합니다.
2. 뱀의 초기 위치와 크기, 이동 방향을 설정합니다.
3. 먹이의 초기 위치를 랜덤하게 설정합니다.
4. pygame을 초기화하고 게임 화면을 생성합니다.
5. running 변수가 True인 동안 게임 루프가 실행됩니다.
6. 게임 화면을 검은색으로 지우고, 이벤트를 처리합니다. 종료 이벤트가 발생하면 running 변수를 False로 변경하여 게임 루프를 종료합니다.
7. 키보드 입력을 처리하여 뱀의 이동 방향을 변경합니다.    왼쪽 키를 누르면 뱀은 왼쪽으로 이동하고, 오른쪽 키를 누르면 오른쪽으로 이동합니다. 위쪽과 아래쪽 키도 마찬가지로 처리합니다.
8. 뱀의 위치를 업데이트하여 화면에 그립니다.
9. 먹이를 그리고, 뱀이 먹이를 먹었을 경우 새로운 먹이를 생성하고 뱀의 크기를 증가시킵니다.
10. 게임 화면을 업데이트합니다.
11. 게임 루프가 종료되면 pygame.quit()을 호출하여 게임을 종료합니다.
이 코드는 간단한 뱀 게임을 구현한 예시로서, 추가적인 기능과 디자인 요소를 추가할 수 있습니다. 이를 통해 더욱 흥미로운 게임을 만들어보세요!