帮我设计一个贪吃蛇,要求有食物颜色随机,贪吃蛇速度越来越快,有边框
时间: 2024-03-12 12:43:28 浏览: 19
好的,我可以帮您提供一个简单的贪吃蛇的代码,满足您的要求。以下是代码:
```python
import pygame
import random
import time
# 初始化pygame
pygame.init()
# 设置窗口大小和标题
window_width = 800
window_height = 600
window_title = "贪吃蛇"
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption(window_title)
# 定义贪吃蛇初始位置
snake_size = 20
snake_x = window_width / 2 - snake_size / 2
snake_y = window_height / 2 - snake_size / 2
# 定义贪吃蛇初始移动方向
snake_direction = "right"
# 定义食物颜色列表
food_colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 255, 0), (255, 0, 255), (0, 255, 255)]
# 定义食物初始位置和颜色
food_size = 20
food_x = random.randint(0, window_width - food_size)
food_y = random.randint(0, window_height - food_size)
food_color = random.choice(food_colors)
# 定义贪吃蛇初始长度
snake_length = 1
# 定义计时器和速度增量
clock = pygame.time.Clock()
speed_increase = 0.1
speed = 5
# 游戏主循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
# 处理键盘输入
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and snake_direction != "right":
snake_direction = "left"
elif keys[pygame.K_RIGHT] and snake_direction != "left":
snake_direction = "right"
elif keys[pygame.K_UP] and snake_direction != "down":
snake_direction = "up"
elif keys[pygame.K_DOWN] and snake_direction != "up":
snake_direction = "down"
# 移动贪吃蛇
if snake_direction == "right":
snake_x += snake_size
elif snake_direction == "left":
snake_x -= snake_size
elif snake_direction == "up":
snake_y -= snake_size
elif snake_direction == "down":
snake_y += snake_size
# 判断贪吃蛇是否吃到食物
if snake_x <= food_x + food_size and snake_x + snake_size >= food_x and snake_y <= food_y + food_size and snake_y + snake_size >= food_y:
food_x = random.randint(0, window_width - food_size)
food_y = random.randint(0, window_height - food_size)
food_color = random.choice(food_colors)
snake_length += 1
speed += speed_increase
# 绘制游戏界面
window.fill((0, 0, 0))
pygame.draw.rect(window, (255, 255, 255), (0, 0, window_width, window_height), 5)
pygame.draw.rect(window, food_color, (food_x, food_y, food_size, food_size))
snake_head = pygame.draw.rect(window, (255, 255, 255), (snake_x, snake_y, snake_size, snake_size))
snake_body = []
for i in range(snake_length - 1):
if snake_direction == "right":
snake_part = pygame.draw.rect(window, (255, 255, 255), (snake_x - (i + 1) * snake_size, snake_y, snake_size, snake_size))
elif snake_direction == "left":
snake_part = pygame.draw.rect(window, (255, 255, 255), (snake_x + (i + 1) * snake_size, snake_y, snake_size, snake_size))
elif snake_direction == "up":
snake_part = pygame.draw.rect(window, (255, 255, 255), (snake_x, snake_y + (i + 1) * snake_size, snake_size, snake_size))
elif snake_direction == "down":
snake_part = pygame.draw.rect(window, (255, 255, 255), (snake_x, snake_y - (i + 1) * snake_size, snake_size, snake_size))
snake_body.append(snake_part)
# 判断贪吃蛇是否撞墙或撞到自己
if snake_x < 5 or snake_x + snake_size > window_width - 5 or snake_y < 5 or snake_y + snake_size > window_height - 5:
font = pygame.font.SysFont(None, 30)
text = font.render("Game Over! Your score is "+str(snake_length), True, (255, 0, 0))
window.blit(text, (window_width/2-100, window_height/2))
pygame.display.update()
time.sleep(2)
pygame.quit()
quit()
for i in snake_body:
if i.colliderect(snake_head):
font = pygame.font.SysFont(None, 30)
text = font.render("Game Over! Your score is "+str(snake_length), True, (255, 0, 0))
window.blit(text, (window_width/2-100, window_height/2))
pygame.display.update()
time.sleep(2)
pygame.quit()
quit()
# 刷新屏幕
pygame.display.update()
# 控制游戏速度
clock.tick(speed)
```
希望能够满足您的需求!