Python 贪吃蛇游戏代码:简单易懂的实现
下面是一个使用 Python 编写的简单贪吃蛇游戏的示例代码,你可以直接运行它并体验游戏:
import pygame
import time
import random
ppygame.init()
# 游戏窗口的宽度和高度
width = 600
height = 400
# 定义颜色
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
# 初始化游戏窗口
game_display = pygame.display.set_mode((width, height))
ppygame.display.set_caption('贪吃蛇游戏')
clock = pygame.time.Clock()
snake_size = 10
snake_speed = 15
font_style = pygame.font.SysFont(None, 30)
score_font = pygame.font.SysFont(None, 50)
def our_snake(snake_size, snake_list):
for x in snake_list:
pygame.draw.rect(game_display, green, [x[0], x[1], snake_size, snake_size])
def message(msg, color):
mesg = font_style.render(msg, True, color)
game_display.blit(mesg, [width / 6, height / 3])
def game_loop():
game_over = False
game_close = False
# 蛇的初始位置
x1 = width / 2
y1 = height / 2
# 蛇在x和y轴上的移动速度
x1_change = 0
y1_change = 0
# 蛇的长度
snake_list = []
length_of_snake = 1
# 随机生成食物的位置
foodx = round(random.randrange(0, width - snake_size) / 10.0) * 10.0
foody = round(random.randrange(0, height - snake_size) / 10.0) * 10.0
while not game_over:
while game_close:
game_display.fill(black)
message('游戏结束!按Q-退出,按C-重新开始', 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_c:
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:
x1_change = -snake_size
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_size
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_size
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_size
x1_change = 0
if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
game_display.fill(black)
pygame.draw.rect(game_display, blue, [foodx, foody, snake_size, snake_size])
snake_head = []
snake_head.append(x1)
snake_head.append(y1)
snake_list.append(snake_head)
if len(snake_list) > length_of_snake:
del snake_list[0]
for x in snake_list[:-1]:
if x == snake_head:
game_close = True
our_snake(snake_size, snake_list)
pygame.display.update()
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, width - snake_size) / 10.0) * 10.0
foody = round(random.randrange(0, height - snake_size) / 10.0) * 10.0
length_of_snake += 1
clock.tick(snake_speed)
pygame.quit()
quit()
game_loop()
这段代码使用 pygame 库实现了一个简单的贪吃蛇游戏。游戏窗口的大小为 600x400 像素,游戏中的蛇由绿色方块表示,食物为蓝色方块。玩家通过方向键控制蛇的移动方向,当蛇吃到食物时,蛇的长度增加,游戏得分增加。如果蛇碰到边界或自己的身体,则游戏结束。玩家可以按 Q 键退出游戏,按 C 键重新开始游戏。
代码解析:
1. 导入库
首先导入 pygame 库,用于游戏开发;time 库,用于控制游戏速度;random 库,用于随机生成食物的位置。
2. 初始化游戏窗口
设置游戏窗口的尺寸为 600x400 像素,并设置窗口标题为“贪吃蛇游戏”。
3. 定义颜色
定义游戏中的颜色,包括白色、黑色、红色、绿色和蓝色,用于绘制不同的元素。
4. 初始化游戏时钟
使用 pygame.time.Clock 初始化一个时钟,用于控制游戏帧率。
5. 设置蛇的大小和速度
设置蛇的大小为 snake_size,速度为 snake_speed。
6. 设置字体
定义两种字体:一种用于显示游戏信息,另一种用于显示得分。
7. our_snake() 函数
该函数用于绘制蛇。它接收蛇的大小和蛇的身体坐标列表作为参数,并在游戏窗口中绘制每个蛇身方块。
8. message() 函数
该函数用于在游戏窗口中显示文本信息。它接收文本内容和颜色作为参数,并在窗口中绘制文本。
9. game_loop() 函数
该函数是游戏的主循环函数,负责处理游戏逻辑和事件。
10. 游戏循环
游戏循环包含两个循环:
- 外层循环用于处理游戏是否结束。
- 内层循环用于处理游戏结束后的操作,例如显示游戏结束信息、重新开始游戏等。
在游戏循环中,程序会不断检测玩家操作、更新蛇的位置、绘制游戏元素、判断游戏是否结束等。
11. 事件处理
程序会不断检测玩家的操作,例如按键事件、鼠标事件等。
12. 蛇的移动
玩家通过方向键控制蛇的移动方向,程序会根据按键事件更新蛇的坐标,并判断蛇是否碰到边界。
13. 食物生成
程序会随机生成食物的位置,并判断蛇是否吃到食物。如果蛇吃到食物,则蛇的长度增加,并生成新的食物。
14. 绘制游戏元素
程序会将蛇、食物、游戏信息等元素绘制到游戏窗口中。
15. 更新游戏状态
程序会根据游戏逻辑更新游戏状态,例如游戏得分、蛇的长度等。
16. 控制游戏速度
程序会使用 clock.tick(snake_speed) 控制游戏的帧率,从而控制游戏的速度。
17. 游戏结束
如果蛇碰到边界或自己的身体,则游戏结束。程序会显示游戏结束信息,并等待玩家操作。
18. 退出游戏
玩家可以通过按 Q 键退出游戏。
19. 重新开始游戏
玩家可以通过按 C 键重新开始游戏。
总结:
这段代码展示了如何使用 pygame 库编写一个简单的贪吃蛇游戏。通过学习这段代码,你可以了解游戏开发的基本流程,并尝试开发自己的游戏。
原文地址: https://www.cveoy.top/t/topic/pg81 著作权归作者所有。请勿转载和采集!