Python+Pygame:手把手教你实现贪吃蛇游戏代码
下面是一个使用 Python 的 pygame 库编写的简单贪吃蛇游戏的示例代码: ```python import pygame import sys import random # 初始化pygame pygame.init() # 设置屏幕大小 screen_width = 480 screen_height = 480 screen = pygame.display.set_mode((screen_width, screen_height)) # 设置颜色 black = (0, 0, 0) white = (255, 255, 255) red = (213, 50, 80) green = (0, 255, 0) blue = (50, 153, 213) # 设置帧率 clock = pygame.time.Clock() snake_speed = 15 # 设置蛇的大小和位置 snake_size = 10 snake_pos = [100, 50] snake_body = [[100, 50], [90, 50], [80, 50]] # 设置食物的位置 food_pos = [random.randrange(1, (screen_width//10)) * 10, random.randrange(1, (screen_height//10)) * 10] food_spawn = True # 设置方向 direction = 'RIGHT' change_to = direction # 游戏结束函数 def game_over(): my_font = pygame.font.SysFont('times new roman', 90) go_surface = my_font.render('Your Score is: ' + str(len(snake_body) - 3), True, red) go_rect = go_surface.get_rect() go_rect.midtop = (screen_width/2, screen_height/4) screen.fill(black) screen.blit(go_surface, go_rect) pygame.display.flip() time.sleep(2) pygame.quit() sys.exit() # 主循环 while True: for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: change_to = 'UP' elif event.key == pygame.K_DOWN: change_to = 'DOWN' elif event.key == pygame.K_LEFT: change_to = 'LEFT' elif event.key == pygame.K_RIGHT: change_to = 'RIGHT' if event.type == pygame.QUIT: pygame.quit() sys.exit() # 确保蛇不能直接反向移动 if change_to == 'UP' and direction != 'DOWN': direction = 'UP' if change_to == 'DOWN' and direction != 'UP': direction = 'DOWN' if change_to == 'LEFT' and direction != 'RIGHT': direction = 'LEFT' if change_to == 'RIGHT' and direction != 'LEFT': direction = 'RIGHT' # 根据方向移动蛇头 if direction == 'UP': snake_pos[1] -= 10 if direction == 'DOWN': snake_pos[1] += 10 if direction == 'LEFT': snake_pos[0] -= 10 if direction == 'RIGHT': snake_pos[0] += 10 # 蛇身体增长机制 snake_body.insert(0, list(snake_pos)) if snake_pos[0] == food_pos[0] and snake_pos[1] == food_pos[1]: food_spawn = False else: snake_body.pop() # 重新生成食物 if not food_spawn: food_pos = [random.randrange(1, (screen_width//10)) * 10, random.randrange(1, (screen_height//10)) * 10] food_spawn = True # 填充和绘制蛇和食物 screen.fill(black) for pos in snake_body: pygame.draw.rect(screen, green, pygame.Rect(pos[0], pos[1], snake_size, snake_size)) pygame.draw.rect(screen, white, pygame.Rect(food_pos[0], food_pos[1], snake_size, snake_size)) # 检查是否撞墙或撞到自己 if snake_pos[0] < 0 or snake_pos[0] > screen_width-snake_size: game_over() if snake_pos[1] < 0 or snake_pos[1] > screen_height-snake_size: game_over() for block in snake_body[1:]: if snake_pos[0] == block[0] and snake_pos[1] == block[1]: game_over() # 更新屏幕并设置帧率 pygame.display.update() clock.tick(snake_speed) ``` ######[AI写代码神器 | 1274点数解答 | 2024-11-19 07:28:25]
- 修正代码实现“3D爱心粒子跳动”,附运行错误及逻辑注意点(字节豆包 | 1111点数解答 | 2025-07-28 22:34:46)170
- Python 实现 3D 爱心粒子跳动特效:代码解析与注意要点(字节豆包 | 1142点数解答 | 2025-07-28 22:36:37)172
- Python生日祝福爱心粒子特效代码优化与开发建议(字节豆包 | 2223点数解答 | 2026-03-21 14:32:57)29
- 超燃年会来袭!诗舞歌戏轮番上阵,共赴欢乐盛宴! (字节豆包 | 206点数解答 | 2025-01-08 10:59:43)367
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)498
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- Python 报错:for 语句后缩进缺失,附修正示例与注意要点(字节豆包 | 170点数解答 | 2025-03-19 21:49:55)216
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)451
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)443
- 经典贪吃蛇游戏:控制蛇身吃食物,避开危险大挑战!(字节豆包 | 57点数解答 | 2025-04-17 20:33:23)139
- Python+Pygame实现经典贪吃蛇游戏:附代码及关键逻辑解析(字节豆包 | 1352点数解答 | 2025-06-06 20:22:46)116
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)353