第一次写下指令、看到图形,并把环境装好
fd/bk/lt/rt/pu/pd 和 repeat 循环控制海龟;.mt 源文件长什么样,并亲手编译、运行出第一张五角星字符图。想象屏幕中间有一只海龟,它背着一支笔。你告诉它「前进」「右转」,它就走;它走过的路线就是画出来的线。
这可不是新点子——它源自 1967 年的Logo 语言,是无数人编程启蒙的第一课。 MiniTurtle 正是「用 C++ 从零写一台自己的海龟绘图语言」。
先看一个 6 条命令的「海龟动作表」(后面正文会逐个用):
向前走 50 步,画出线。
向后走 30 步,画线。
逆时针转 90°。
顺时针转 90°。
抬起笔,移动时不画线。
放下笔,之后移动恢复画线。
转角度单位是度(0~360),不是弧度——rt 90 就是向右转一个直角。
MiniTurtle 的程序后缀是 .mt。一个最简单的程序就一行——让海龟前进 50 步:
运行它,海龟从起点向前爬 50 格,屏幕(字符画布)上出现一条线。就这么简单——你已经「写代码画图」了。
想画一个正方形呢?口诀:走一步、转 90°、重复 4 次。把命令一行行写出来:
rt 90 后方向改变,所以 4 条边虽然命令相同,却画出了闭合的正方形。海龟回到出发点、方向也回到原样。上面 8 行里,「fd 24 + rt 90」重复了 4 次。用 repeat 让海龟替你重复:
repeat 次数 { 要重复的命令 }——次数写中间,命令用花括号 { } 包起来。这一段会被执行「次数」遍。想画正六边形?角度有规律:正 n 边形的外角 = 360 / n。六边形每次转 360/6=60°:
真正「写程序」不是一条条敲进黑窗口,而是把代码存成一个文件。用记事本/VS Code 新建 star.mt,写:
注意到 # 开头的行是注释——给人看的说明,程序会跳过它。下面是「编译 → 运行」的完整流程:
g++ 装进 PATH。
一步步照着《MiniTurtle 项目验证报告》来,里面每个命令都是实测过的。.mt 源文件 → 解释器 → 字符画布。
后面所有单元都是在「让这台解释器更聪明」。先跑通它,就有了后面一切的地基。MiniTurtle 工程自带了几个示例。建议按下面的顺序亲手过一遍,每跑通一个,对「命令→图形」的直觉就强一分:
示例 1 正方形:
示例 2 正六边形:
示例 3 五角星:
(五角星每次转 144°,5 次共转 720°——两整圈,正好画出一个星。)
(字符画布是 MiniTurtle 的「显示器」——像素是字符,一样能画出图形。上面的星是示意,真实输出以终端为准。)
repeat 5 改成 repeat 7、把 144 改成别的角度,重编译重跑,看图形怎么变。
「改参数 → 看变化」就是编程最初的乐趣,也是理解「代码控制图形」最快的方式。fd50 会被当成一个「标识符」而不是「前进 50」。
MiniTurtle 靠空格切分命令,务必写成 fd 50。rt 360/n 记错成 90°,图形就转不回起点。
牢记「总转角 = 360°」。# 注释当成会被执行的代码:注释是给人看的,程序完全跳过。# 你好 不会画任何东西。minturtle star.mt,但解释器还没编译出来(没有 minturtle 这个文件)→ 报「找不到文件」。
顺序是先 g++ ... -o minturtle,再 ./minturtle star.mt。repeat 4 { fd 24 rt __ } 里每次该转多少度?# 开头是注释,纯给人看的说明,解释器跳过,不画任何东西。pu(抬笔)之后移动海龟,会怎样?pu = pen up 抬笔:海龟照常移动,但路线不落墨。pd 落笔后恢复画线。(n-2)×180/n 和海龟的「外角 360/n」是同一个几何事实的两面——你其实在用程序重新发现几何。repeat,后面会让程序自己调用自己。