Python 贪吃蛇游戏代码示例 - 简单易懂
以下是一个简单的贪吃蛇 Python 代码示例,使用 Pygame 库实现:
import pygame
import random
# 初始化pygame
pygame.init()
# 设置窗口大小和标题
screen_width = 640
screen_height = 480
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)
# 定义字体
font = pygame.font.SysFont(None, 25)
# 定义蛇和食物的大小
block_size = 10
# 定义时钟对象
clock = pygame.time.Clock()
# 定义函数,用于显示消息
def message_to_screen(msg, color):
screen_text = font.render(msg, True, color)
screen.blit(screen_text, [screen_width/2, screen_height/2])
# 定义函数,用于绘制蛇
def draw_snake(snake_list):
for x in snake_list:
pygame.draw.rect(screen, green, [x[0], x[1], block_size, block_size])
# 开始游戏循环
def gameLoop():
# 定义游戏结束标志
game_over = False
# 定义方向初始值
direction = 'right'
# 初始化蛇的位置和长度
snake_list = []
snake_length = 1
snake_x = screen_width/2
snake_y = screen_height/2
# 初始化食物的位置
food_x = round(random.randrange(0, screen_width-block_size) / 10.0) * 10.0
food_y = round(random.randrange(0, screen_height-block_size) / 10.0) * 10.0
# 开始游戏循环
while not game_over:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
direction = 'left'
elif event.key == pygame.K_RIGHT:
direction = 'right'
elif event.key == pygame.K_UP:
direction = 'up'
elif event.key == pygame.K_DOWN:
direction = 'down'
# 移动蛇的位置
if direction == 'right':
snake_x += block_size
elif direction == 'left':
snake_x -= block_size
elif direction == 'up':
snake_y -= block_size
elif direction == 'down':
snake_y += block_size
# 判断蛇是否吃到了食物
if snake_x == food_x and snake_y == food_y:
snake_length += 1
food_x = round(random.randrange(0, screen_width-block_size) / 10.0) * 10.0
food_y = round(random.randrange(0, screen_height-block_size) / 10.0) * 10.0
# 绘制背景和食物
screen.fill(white)
pygame.draw.rect(screen, red, [food_x, food_y, block_size, block_size])
# 将蛇的位置添加到列表中
snake_head = []
snake_head.append(snake_x)
snake_head.append(snake_y)
snake_list.append(snake_head)
# 如果蛇的长度超过了限制,移除列表中的第一个元素
if len(snake_list) > snake_length:
del snake_list[0]
# 判断是否撞到了边界或者自己
for segment in snake_list[:-1]:
if segment == snake_head:
game_over = True
if snake_x >= screen_width or snake_x < 0 or snake_y >= screen_height or snake_y < 0:
game_over = True
# 绘制蛇
draw_snake(snake_list)
# 更新屏幕
pygame.display.update()
# 控制游戏帧率
clock.tick(10)
# 退出pygame
pygame.quit()
# 开始游戏循环
gameLoop()
在这个代码示例中,我们使用了 pygame 模块来创建一个简单的贪吃蛇游戏。在游戏循环中,我们首先处理事件,然后移动蛇的位置,并判断蛇是否吃到了食物。接下来,我们绘制背景、食物和蛇,并判断是否撞到了边界或者自己。最后,我们使用 pygame.display.update() 方法来更新屏幕,使用 clock.tick(10) 方法来控制游戏帧率。
代码解释:
- 导入必要的库:
import pygame和import random分别用于游戏开发和随机数生成。 - 初始化 Pygame:
pygame.init()初始化 Pygame 库。 - 设置窗口大小和标题:
screen_width和screen_height定义窗口大小,screen = pygame.display.set_mode((screen_width, screen_height))创建游戏窗口,pygame.display.set_caption('贪吃蛇')设置窗口标题。 - 定义颜色: 定义了游戏中的不同颜色。
- 定义字体: 定义了游戏中的字体,
font = pygame.font.SysFont(None, 25)使用默认字体大小为 25。 - 定义蛇和食物的大小:
block_size = 10定义了蛇和食物的像素大小。 - 定义时钟对象:
clock = pygame.time.Clock()用于控制游戏帧率。 - 定义显示消息函数:
message_to_screen(msg, color)用于在屏幕上显示文本消息。 - 定义绘制蛇函数:
draw_snake(snake_list)用于绘制蛇。 - 开始游戏循环:
gameLoop()函数包含了游戏的主要逻辑。 - 处理事件: 使用
pygame.event.get()获取用户输入等事件。 - 移动蛇的位置: 根据用户输入的方向,更新蛇的坐标。
- 判断蛇是否吃到了食物: 如果蛇的头部坐标与食物坐标一致,则蛇增长,食物重新生成随机位置。
- 绘制背景、食物和蛇: 使用
screen.fill(white)清理屏幕,使用pygame.draw.rect()绘制食物,使用draw_snake(snake_list)绘制蛇。 - 判断是否撞到了边界或者自己: 检查蛇是否碰到了边界或自身,如果碰到则游戏结束。
- 更新屏幕: 使用
pygame.display.update()更新游戏窗口。 - 控制游戏帧率: 使用
clock.tick(10)控制游戏帧率为 10 帧每秒。 - 退出 Pygame: 使用
pygame.quit()退出 Pygame 库。
这个简单的代码示例演示了使用 Pygame 创建一个基本的贪吃蛇游戏的基本步骤。通过修改代码,你可以添加更多功能,例如增加游戏难度、添加得分系统、添加背景音乐等等。
原文地址: https://www.cveoy.top/t/topic/oXYr 著作权归作者所有。请勿转载和采集!