请问你可以写一个贪吃蛇的代码吗
时间: 2023-06-02 14:07:54 浏览: 68
当然可以,以下是一个简单的贪吃蛇游戏的代码:
```python
import pygame
import random
# 初始化游戏
pygame.init()
# 游戏界面大小
screen_width = 640
screen_height = 480
# 食物大小
food_size = 20
# 创建一个窗口
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('贪吃蛇')
# 生成一个随机位置的食物
def generate_food():
x = random.randrange(food_size, screen_width - food_size, food_size)
y = random.randrange(food_size, screen_height - food_size, food_size)
return pygame.Rect(x, y, food_size, food_size)
# 绘制文字
def draw_text(text, size, color, x, y):
font = pygame.font.SysFont(None, size)
text_obj = font.render(text, True, color)
text_rect = text_obj.get_rect()
text_rect.centerx = x
text_rect.centery = y
screen.blit(text_obj, text_rect)
# 主函数
def main():
# 初始化蛇
snake = [pygame.Rect(40, 40, 20, 20)]
# 初始化方向
direction = pygame.K_RIGHT
# 生成食物
food = generate_food()
# 初始化分数
score = 0
# 创建一个时钟对象
clock = pygame.time.Clock()
# 游戏循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and direction != pygame.K_DOWN:
direction = pygame.K_UP
elif event.key == pygame.K_DOWN and direction != pygame.K_UP:
direction = pygame.K_DOWN
elif event.key == pygame.K_LEFT and direction != pygame.K_RIGHT:
direction = pygame.K_LEFT
elif event.key == pygame.K_RIGHT and direction != pygame.K_LEFT:
direction = pygame.K_RIGHT
# 移动蛇
if direction == pygame.K_UP:
snake.insert(0, pygame.Rect(snake[0].left, snake[0].top - 20, 20, 20))
elif direction == pygame.K_DOWN:
snake.insert(0, pygame.Rect(snake[0].left, snake[0].top + 20, 20, 20))
elif direction == pygame.K_LEFT:
snake.insert(0, pygame.Rect(snake[0].left - 20, snake[0].top, 20, 20))
elif direction == pygame.K_RIGHT:
snake.insert(0, pygame.Rect(snake[0].left + 20, snake[0].top, 20, 20))
# 判断蛇头是否和食物重合
if snake[0].colliderect(food):
food = generate_food()
score += 10
else:
# 如果没有,删除蛇尾
snake.pop()
# 绘制游戏界面
screen.fill((255, 255, 255))
# 绘制食物
pygame.draw.rect(screen, (255, 0, 0), food)
# 绘制蛇
for body in snake:
pygame.draw.rect(screen, (0, 255, 0), body)
# 绘制分数
draw_text('分数:{}'.format(score), 20, (0, 0, 0), screen_width - 60, 20)
pygame.display.update()
# 判断游戏是否结束
if snake[0].left < 0 or snake[0].right > screen_width or \
snake[0].top < 0 or snake[0].bottom > screen_height or \
any(body.colliderect(snake[0]) for body in snake[1:]):
draw_text('游戏结束', 40, (255, 0, 0), screen_width // 2, screen_height // 2)
pygame.display.update()
pygame.time.delay(2000)
return
# 控制游戏帧率
clock.tick(10)
# 启动游戏
if __name__ == '__main__':
main()
```
现在,你可以运行这个代码,体验一下贪吃蛇游戏的乐趣。