997社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 79|回复: 0

用 Python 实现贪吃蛇

[复制链接]

2976

主题

42

回帖

1万

积分

超级版主

Rank: 8Rank: 8

积分
10439
发表于 2025-1-6 23:56:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 bitb 于 2025-1-6 23:57 编辑



实现一个简单的贪吃蛇游戏需要使用 Python 的 Pygame 库。这里我会给你一个基本的实现框架:

python
  1. import pygame
  2. import random

  3. # 初始化 Pygame
  4. pygame.init()

  5. # 定义颜色
  6. BLACK = (0, 0, 0)
  7. WHITE = (255, 255, 255)
  8. RED = (255, 0, 0)
  9. GREEN = (0, 255, 0)

  10. # 窗口尺寸
  11. WIDTH = 800
  12. HEIGHT = 600

  13. # 蛇的初始大小和速度
  14. SNAKE_SIZE = 20
  15. SNAKE_SPEED = 15

  16. # 创建窗口
  17. screen = pygame.display.set_mode((WIDTH, HEIGHT))
  18. pygame.display.set_caption("贪吃蛇")

  19. # 蛇的初始位置和方向
  20. snake = [(WIDTH // 2, HEIGHT // 2)]
  21. snake_direction = (0, -SNAKE_SIZE)

  22. # 食物的位置
  23. food = None

  24. # 时钟控制游戏速度
  25. clock = pygame.time.Clock()

  26. def generate_food():
  27.     return (random.randrange(0, WIDTH, SNAKE_SIZE),
  28.             random.randrange(0, HEIGHT, SNAKE_SIZE))

  29. def draw_snake(snake):
  30.     for segment in snake:
  31.         pygame.draw.rect(screen, GREEN, (*segment, SNAKE_SIZE, SNAKE_SIZE))

  32. def draw_food(food):
  33.     pygame.draw.rect(screen, RED, (*food, SNAKE_SIZE, SNAKE_SIZE))

  34. # 主游戏循环
  35. running = True
  36. while running:
  37.     for event in pygame.event.get():
  38.         if event.type == pygame.QUIT:
  39.             running = False
  40.         elif event.type == pygame.KEYDOWN:
  41.             if event.key == pygame.K_UP and snake_direction[1] == 0:
  42.                 snake_direction = (0, -SNAKE_SIZE)
  43.             elif event.key == pygame.K_DOWN and snake_direction[1] == 0:
  44.                 snake_direction = (0, SNAKE_SIZE)
  45.             elif event.key == pygame.K_LEFT and snake_direction[0] == 0:
  46.                 snake_direction = (-SNAKE_SIZE, 0)
  47.             elif event.key == pygame.K_RIGHT and snake_direction[0] == 0:
  48.                 snake_direction = (SNAKE_SIZE, 0)

  49.     # 更新蛇的位置
  50.     new_head = (snake[0][0] + snake_direction[0], snake[0][1] + snake_direction[1])
  51.     snake.insert(0, new_head)

  52.     # 如果没有食物,生成一个
  53.     if food is None:
  54.         food = generate_food()

  55.     # 吃到食物
  56.     if snake[0] == food:
  57.         food = None
  58.     else:
  59.         snake.pop()  # 如果没吃到食物,去掉蛇尾

  60.     # 检查蛇是否撞到边界或自己
  61.     if (snake[0][0] < 0 or snake[0][0] >= WIDTH or
  62.         snake[0][1] < 0 or snake[0][1] >= HEIGHT or
  63.         snake[0] in snake[1:]):
  64.         running = False

  65.     # 绘制所有内容
  66.     screen.fill(BLACK)
  67.     draw_snake(snake)
  68.     if food:
  69.         draw_food(food)

  70.     pygame.display.flip()
  71.     clock.tick(SNAKE_SPEED)

  72. pygame.quit()
复制代码


这是一个基本的贪吃蛇游戏实现:

  • 使用 Pygame 创建游戏窗口和控制游戏循环。
  • 蛇可以用箭头键控制方向,吃到食物会增长。
  • 游戏结束条件是蛇撞到边界或自己。
  • 食物的位置是随机生成的。

要运行这个游戏,你需要安装 Pygame:

bash
  1. pip install pygame
复制代码



然后运行这个脚本就可以玩了。请注意,这个版本的游戏还可以进一步优化,比如添加分数系统、增加游戏难度等。

蛋疼也是一种闲!种一棵树最好的时间是十年前,其次是现在。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

网站地图|Archiver|手机版|小黑屋|997社区

GMT+8, 2025-6-8 08:34 , Processed in 0.021116 second(s), 13 queries , Yac On.

Powered by 997社区 © 2023-2033

世界上最遥远的距离,是星期一到星期五。

快速回复 返回顶部 返回列表