Article
用 Python 十分钟写一个极简贪吃蛇:从入门到上头
2026年4月18日
贪吃蛇是每个程序员的“Hello World”。本文将通过 Python 的 pygame 库,带你用最少的代码实现一个经典贪吃蛇游戏,并解析其核心逻辑。
一、 核心逻辑拆解
贪吃蛇的本质就是一个“移动的坐标列表”。
蛇身: 由多个 (x, y) 坐标组成的列表。
移动: 每帧将蛇头向移动方向移动一格,并删除蛇尾,除非吃到了食物。
碰撞检测: 如果蛇头撞墙或撞到自己,则游戏结束。
二、 代码实战
你需要安装 pygame (pip install pygame),然后运行以下代码:
Python
import pygame
import random
# 初始化
pygame.init()
screen = pygame.display.set_mode((600, 400))
snake = [[100, 100], [90, 100], [80, 100]]
food = [200, 200]
direction = 'RIGHT'
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP: direction = 'UP'
# ... 其他方向同理
# 移动蛇头
head = list(snake[0])
if direction == 'RIGHT': head[0] += 10
snake.insert(0, head)
# 吃食物判断
if snake[0] == food:
food = [random.randrange(1, 60)*10, random.randrange(1, 40)*10]
else:
snake.pop()
# 绘图
screen.fill((0, 0, 0))
for pos in snake:
pygame.draw.rect(screen, (0, 255, 0), [pos[0], pos[1], 10, 10])
pygame.display.update()
pygame.time.Clock().tick(15)
三、 进阶思路
现在的贪吃蛇还很简陋,如果你想继续优化,可以尝试:
加入计分系统: 每次吃到食物加 10 分,并在右上角显示。
增加难度: 随着分数增加,蛇的移动速度越来越快。
游戏结束画面: 添加一个“Game Over”并按 R 重启的逻辑。
四、 结语
写这个游戏的过程,实际上是在练习如何处理循环、数组和碰撞逻辑。当你看着那个小方块在屏幕上听你指挥时,那种成就感是编程特有的浪漫。