用 Python,写一条小蛇。
你已经会玩了。接下来,把“向前走、吃果子、不能撞墙”翻译成程序。
先把它运行起来
- 在自己的电脑上安装 Python 3。这个示例使用标准库
turtle,需要有图形桌面和 Tk 支持。 - 下载下面的
snake.py,保存到一个容易找到的文件夹。 - 在这个文件夹打开终端,输入
python snake.py;部分电脑需要输入python3 snake.py。用方向键控制,空格暂停,R 重新开始。
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) 预约下一步,窗口就还有时间处理方向键和重画画面。
移动之前先判断:头是否超出棋盘?是否撞上身体?判断通过才更新坐标。还要禁止直接掉头,否则按一下反方向就会撞到自己。
轮到你改一改
- 把
DELAY = 145改成200,看看蛇是不是变慢了。 - 找到绘图颜色,给小蛇换一件衣服。
- 想想看:如果撞墙后从另一边出现,坐标应该怎么算?
先改一处,运行一次,观察结果。程序就是这样一点点变成你想要的样子。