BITB社区

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

用 Python 实现贪吃蛇

[复制链接]
  • TA的每日心情
    擦汗
    前天 07:17
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    1290

    主题

    34

    回帖

    4727

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    4727
    发表于 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|手机版|小黑屋|BITB

    GMT+8, 2025-1-23 07:12 , Processed in 0.018775 second(s), 13 queries , Yac On.

    Powered by BITB © 2023-2033

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

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