用pyzhon做一个贪吃蛇小游戏
时间: 2023-05-21 14:07:10 浏览: 48
非常感谢您的问题。以下是使用Pygame写的简单贪吃蛇游戏的代码:
```python
import pygame
import random
# 初始化pygame模块
pygame.init()
# 游戏界面的大小
screen_size = (600, 400)
screen = pygame.display.set_mode(screen_size)
# 设置游戏标题
pygame.display.set_caption("贪吃蛇小游戏")
# 定义颜色
white = (255, 255, 255) # 蛇的颜色
black = (0, 0, 0) # 游戏背景色
red = (255, 0, 0) # 食物颜色
# 蛇的初始位置
snake_block_size = 10
snake_block_x = random.randrange(0, screen_size[0] - snake_block_size, snake_block_size)
snake_block_y = random.randrange(0, screen_size[1] - snake_block_size, snake_block_size)
# 食物的位置
food_block_size = snake_block_size
food_block_x = random.randrange(0, screen_size[0] - food_block_size, food_block_size)
food_block_y = random.randrange(0, screen_size[1] - food_block_size, food_block_size)
# 蛇的移动速度
snake_speed = 10
# 初始化蛇的长度为1,头部朝右侧
snake_list = [[snake_block_x, snake_block_y]]
snake_direction = "right"
# 定义绘制蛇和食物的函数
def draw_snake(snake_list):
for block in snake_list:
pygame.draw.rect(screen, white, [block[0], block[1], snake_block_size, snake_block_size])
def draw_food():
pygame.draw.rect(screen, red, [food_block_x, food_block_y, food_block_size, food_block_size])
# 游戏主循环
game_over = False
while not game_over:
# 处理事件
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 and snake_direction != "right":
snake_direction = "left"
elif event.key == pygame.K_RIGHT and snake_direction != "left":
snake_direction = "right"
elif 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"
# 根据移动方向更新蛇的坐标
if snake_direction == "left":
snake_block_x -= snake_speed
elif snake_direction == "right":
snake_block_x += snake_speed
elif snake_direction == "up":
snake_block_y -= snake_speed
elif snake_direction == "down":
snake_block_y += snake_speed
# 检查蛇是否与边界相撞
if (snake_block_x < 0 or snake_block_x > screen_size[0] - snake_block_size
or snake_block_y < 0 or snake_block_y > screen_size[1] - snake_block_size):
game_over = True
# 检查蛇是否与自己相撞
for block in snake_list[1:]:
if snake_block_x == block[0] and snake_block_y == block[1]:
game_over = True
# 检查是否吃到食物
if snake_block_x == food_block_x and snake_block_y == food_block_y:
food_block_x = random.randrange(0, screen_size[0] - food_block_size, food_block_size)
food_block_y = random.randrange(0, screen_size[1] - food_block_size, food_block_size)
snake_list += [[snake_block_x, snake_block_y]]
# 更新蛇的位置
snake_list = [[snake_block_x, snake_block_y]] + snake_list[:-1]
# 绘制游戏界面
screen.fill(black)
draw_snake(snake_list)
draw_food()
pygame.display.update()
# 游戏帧数
clock = pygame.time.Clock()
clock.tick(20)
# 退出pygame模块
pygame.quit()
```
希望这个回答对您有帮助!