用 Python,写一条小蛇。

你已经会玩了。接下来,把“向前走、吃果子、不能撞墙”翻译成程序。

先把它运行起来

  1. 在自己的电脑上安装 Python 3。这个示例使用标准库 turtle,需要有图形桌面和 Tk 支持。
  2. 下载下面的 snake.py,保存到一个容易找到的文件夹。
  3. 在这个文件夹打开终端,输入 python snake.py;部分电脑需要输入 python3 snake.py。用方向键控制,空格暂停,R 重新开始。
下载完整 Python 示例

Ubuntu / Debian 如果提示找不到 tkinter,通常需要安装系统包 python3-tk。手机、无桌面服务器和部分在线 Python 环境无法直接打开 turtle 窗口。浏览器版可以在首页直接玩。

第一件事:用坐标记住位置

把棋盘想成方格纸。一条蛇就是一串格子的坐标,列表的第一项是头,最后一项是尾巴。

snake = [(7, 10), (6, 10), (5, 10)]
direction = (1, 0)  # 向右:横坐标加一,纵坐标不变

x, y = snake[0]
dx, dy = direction
head = (x + dx, y + dy)

第二件事:每次只往前走一格

把新的头放到列表最前面,再拿掉最后一格,看起来就像整条蛇向前走了一步。吃到果子时不拿掉尾巴,蛇就会长一格。

snake.insert(0, head)
if head == food:
    score += 1
    food = new_food()
else:
    snake.pop()

第三件事:让每一步重复发生

图形界面不能一直堵在一个无限循环里。用 screen.ontimer(tick, 145) 预约下一步,窗口就还有时间处理方向键和重画画面。

移动之前先判断:头是否超出棋盘?是否撞上身体?判断通过才更新坐标。还要禁止直接掉头,否则按一下反方向就会撞到自己。

轮到你改一改

先改一处,运行一次,观察结果。程序就是这样一点点变成你想要的样子。

回到浏览器版,再玩一局