用Python编写一个贪吃蛇游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序目标:玩家可以使用方向键控制贪吃蛇的移动方向,向上键使蛇向上移动,向下键使蛇向下移动,向左键使蛇向左移动,向右键使蛇向右移动。

玩家需要控制蛇吃到食物,每吃到一个食物蛇的长度就会加1,同时游戏难度也会逐渐加大,蛇的移动速度会加快,随着时间的推移,难度会变得越来越高。

如果蛇撞到了边界或者撞到了自己的身体,游戏就会结束。

玩家可以通过关闭游戏窗口来退出游戏。

以下是一个基于Python 的简单贪吃蛇游戏的代码实现。

本实现使用了pygame 模块来创建游戏窗口,渲染游戏场景和监听用户输入,同时使用random 模块来生成随机食物。

import pygame
import random
# 初始化pygame
pygame.init()
# 定义游戏窗口大小
window_width = 600
window_height = 600
# 创建游戏窗口
screen=pygame.display.set_mode((window_width,
window_height))
# 定义游戏场景颜色
bg_color = (0, 0, 0)
# 定义蛇的初始位置和大小
snake_x = window_width // 2
snake_y = window_height // 2
snake_size = 10
snake_speed = 10
# 定义蛇的初始方向和长度
snake_direction = 'right'
snake_length = 1
snake_body = [(snake_x, snake_y)]
# 定义食物的初始位置和大小
food_size = 10
food_x = random.randint(0, window_width - food_size) food_y = random.randint(0, window_height - food_size) food_color = (255, 0, 0)
# 游戏循环标志
game_running = True
# 游戏循环
while game_running:
# 监听用户输入
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and snake_direction != 'down':
snake_direction = 'up'
elif event.key == pygame.K_DOWN and snake_direction != 'up':
snake_direction = 'down'
elif event.key == pygame.K_LEFT and snake_direction != 'right':
snake_direction = 'left'
elif event.key == pygame.K_RIGHT and snake_direction != 'left':
snake_direction = 'right'
# 移动蛇的身体
if snake_direction == 'up':
snake_y -= snake_speed
elif snake_direction == 'down':
snake_y += snake_speed
elif snake_direction == 'left':
snake_x -= snake_speed
elif snake_direction == 'right':
snake_x += snake_speed
# 更新蛇的身体列表
snake_body.insert(0, (snake_x, snake_y))
if len(snake_body) > snake_length:
snake_body.pop()
# 绘制游戏场景
screen.fill(bg_color)
pygame.draw.rect(screen, food_color, pygame.Rect(food_x, food_y, food_size, food_size))
for x, y in snake_body:
pygame.draw.rect(screen, (255, 255, 255), pygame.Rect(x, y, snake_size, snake_size))
# 检测蛇是否吃到了食物
if pygame.Rect(snake_x, snake_y, snake_size, snake_size).colliderect(pygame.Rect(food_x, food_y, food_size, food_size)):
snake_length += 1
food_x = random.randint(0, window_width - food_size)
food_y = random.randint(0, window_height - food_size) # 检测蛇是否撞到了墙壁
if snake_x <0 or snake_x + snake_size > window_width or snake_y < 0 or snake_y + snake_size > window_height:
game_running = False
# 检测蛇是否撞到了自己的身体
for x, y in snake_body[1:]:
if pygame.Rect(snake_x, snake_y, snake_size, snake_size).colliderect(pygame.Rect(x, y, snake_size, snake_size)):
game_running = False
# 更新游戏窗口
pygame.display.update()
该游戏的注释如下:
- `import pygame`: 导入`pygame` 模块,用于创建游戏窗口,渲染游戏场景和监听用户输入。

- `import random`: 导入`random` 模块,用于生成随机食物的位置。

- `pygame.init()`: 初始化`pygame`。

-`window_width = 600` 和`window_height = 600`: 定义游戏窗口的宽度和高度。

-`screen=pygame.display.set_mode((window_width,window_height
))`: 创建游戏窗口。

- `bg_color = (0, 0, 0)`: 定义游戏场景的颜色为黑色。

- `snake_x = window_width // 2` 和`snake_y = window_height // 2`: 定义蛇的初始位置为游戏窗口中心。

-`snake_size = 10` 和`snake_speed = 10`: 定义蛇的初始大小和速度。

- `snake_direction = 'right'`: 定义蛇的初始方向为向右。

- `snake_length = 1` 和`snake_body = [(snake_x, snake_y)]`: 定义蛇的初始长度为1,并初始化蛇的身体列表。

-`food_size = 10`, `food_x = random.randint(0, window_width -food_size)`, 和`food_y = random.randint(0, window_height -food_size)`: 定义食物的初始大小和位置为随机生成。

- `food_color = (255, 0, 0)`: 定义食物的颜色为红色。

- `game_running = True`: 定义游戏循环标志为真。

- `while game_running:`: 进入游戏循环。

- `for event in pygame.event.get():`: 监听用户输入。

- `if event.type == pygame.QUIT:`: 如果用户关闭了游戏窗口,则退出游戏循环。

- `elif event.type == pygame.KEYDOWN:`: 如果用户按下了键盘键,则检测按下的键并更新蛇的方向。

- `if len(snake_body) > snake_length: snake_body.pop()`: 如果蛇的长度超过了定义的长度,则删除蛇身体列表中的最后一个元素。

- `screen.fill(bg_color)`: 填充游戏窗口为黑色。

-`pygame.draw.rect(screen, food_color, pygame.Rect(food_x, food_y, food_size, food_size))`: 绘制食物。

- `for x, y in snake_body: pygame.draw.rect(screen,。

相关文档
最新文档