Skip to content

「图形化编程」Micro:bit 龟龟扩展库介绍

K5QY298SI8MAJ

今天在逛 makecode 网站时偶然发现了一个很好玩的库 – Turtle,它是一个 micro:bit 的扩展库,作用是控制一个 led 亮点,然后通过编程控制它的移动,并且可以画出移动轨迹,从而画出复杂的图形,碍于 micro:bit 板子上 点阵大小的限制,可以画出的复杂图形不多,不过还是值得一试,下面就是我画的一个螺旋线。

luoxuanxian

这节教程将会介绍一下 Turtle 这个扩展库的基本用法,它的里面每个模块的意思,下节教程我们会一起来实现上面的螺旋线。

为什么叫 Turtle ?

Turtle 这个扩展库 灵感来源于一门古老的编程语言 – Logo,注意不是 Lego,Logo 是一门专门用于教育的编程语言,它最主要的功能是画乌龟图形(Turtle Graphics),乌龟图形可以想象为用编程命令来控制一只小乌龟的爬行轨迹,然后不停重复,从而画出千变万化的图形
K5QY298SI8MAJ

有没有让你想起小时候那种圆圈圈玩具呀,它叫做万花尺

K5RJ4ER5EHK2A

一般来说,乌龟图形有 5 个要素

  1. 位置
  2. 方向
  3. 移动步数
  4. 移动速度
  5. 笔刷

Turtle graphics

位置

位置代表了小乌龟的位置坐标,主要作用是设置小乌龟的起始坐标,也可以改变小乌龟的当前位置,使轨迹线变成不连续的

方向

方向代表了小乌龟的移动方向,即小乌龟下一步要走的方向,我们可以通过调整小乌龟的角度来改变它的方向

移动步数

移动步数代表小乌龟下一步要移动几步,代表了下一条轨迹线的长度,比如上面的动图里,forward 30 就代表了小乌龟向前移动 30 步,除了向前,还可以向后移动

移动速度

移动速度代表了小乌龟的移动速度,在同样的时间里,移动速度越快,小乌龟的轨迹线画的越快

笔刷

笔刷可以想象为有一个虚拟的画笔在小乌龟的身上,可以通过程序控制笔刷落下还是抬起,笔刷落下小乌龟爬行的轨迹会被显示出来,如果笔刷抬起,小乌龟会按照程序继续爬行,但是不会留下轨迹

添加 Turtle 扩展库

下面我们来添加这个扩展库,其他扩展库也可以通过同样的方法来添加。

  1. 打开 makecode 编程网站,新建一个项目
  2. 点击 高级,然后点击 扩展
    kuozhan1
  3. 找到 microturtle,点击一下,然后就会添加到刚才新建的项目里了
    kuozhan2

  4. 添加成功之后,就会在模块分类里看到一个新的分类 Turtle
    kuozhan3

模块介绍

下面来介绍一下这个扩展库的每个模块

移动步数

控制移动步数的模块有两个,分别是 forward 和 back,forward 表示向前移动,back 表示向后移动,模块里的数字代表了移动多少步

move

默认情况下,龟龟的移动方向是向上,所以 forward 表示向上移动一个 led,back 表示 向下移动一个 led,如下图

movecodemove

移动方向

控制移动方向的也有两个模块,turn left 和 turn right,turn left 表示转向左边,turn right 表示转向右边
direction

来看下面的例子

前面说过,乌龟的默认方向是 向上,左转一下方向变为向左,然后向前移动一步,然后右转一下,方向又变回了向上,然后再向前一步

turncodeturn

设置位置

设置位置也有两个模块,set position 和 home,set position 可以指定 x 坐标和 y 坐标,而 home 表示把 乌龟移动到 home 位置,也就是 (2,2) 这个位置,即屏幕中间。
location

设置笔刷

设置笔刷只有一个模块,pen ,pen down 表示 笔刷落下,乌龟爬行并且会留下轨迹,即 led 灯会亮,pen up 表示笔刷抬起,乌龟爬行但是没有轨迹
pen

设置亮度

设置亮度模块用于控制乌龟爬行时轨迹的 led 灯亮度,范围是 0-255,255 最亮,如果设置为 0,则和 pen up 一样表示没有轨迹
brightness

设置速度

设置速度模块用于控制乌龟的移动速度,即每秒乌龟爬行的 led 数量,数值越大,速度越快
speed

龟龟扩展库就介绍到这里啦,下节教程我们来实现文章开始的螺旋线,敬请期待啦。

5 1 vote
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x