乌龟编程精讲版-49

程序·创造

程序的世界里你做主

上面的文章里,其实我在教你画圆的circle命令之前还教了大家一种画圆的方法:前进forward一小步——左转left一个角度——前进forward一小步——左转一个角度——前进forward一小步——左转left一个角度......

大家应该记得吧?告诉大家,这可是一个很重要的数学思想:所谓圆形其实就是一个边长很小很小很小的多边形,是不是可以这样子理解呢?古代人有个聪明的家伙叫阿基米德就想到了这一点,然后用这种方法求出了圆的圆周率pi

定时器

Timer

那今天再写个代码还用上面说的第二种方法画圆:forward--left--forward--left--forward--left--forward--left--forward--left--forward--left--forward--left--forward--left--forward--left....只不过我这次不用写这么多的重复代码了,因为我有一个“定时器”。先看代码:

代码1

仅仅10行代码,出来什么效果呢?自己把上面的代码敲进电脑然后运行一下看看吧!

代码1执行结果

果然是圆形,而且小乌龟一直在转啊转的!(你可能会说,这个不像圆形!确实,你可以把上面代码的forward前进的数值改小点,比如5试试,是不是就更像圆形了?)看move()函数里有这个语句:turtle.ontimer(move,200),这就是我们的定时器

定时器的功能就是:每隔设定的时间(毫秒为单位,1秒钟=1000毫秒)就执行一次指定的函数(上例子是执行move函数)。一般我们就将这个定时器语句放在这个我们要重复执行的函数里,比如上例中我们要定时执行move()函数,所以就将这个定时器放在了move()函数的结尾。

这么一说,大家就理解了:每隔200毫秒就执行一次move函数(前进forward30,左转left30),最终就是一直执行这两个命令,最后一直在那里不停的画圆。

自己随便试验吧

Let's Try it

好了,ontimer定时器看起来有点“循环”执行的效果了。我们随便改下move()函数里的代码看看。比如改成下面这样:

代码2

改动部分是上面的阴影部分,看下吧!执行下画什么图呢?原来如此。

代码2执行结果

好了,我又改了下move函数里的两个命令,forward我删除了,变成left!会出现什么效果呢?拭目以待吧!

代码3

代码3执行结果

能想得到它会画出这样的图形吧?好了,交给你了,发挥你的想象力,随便改下代码画出其他酷炫的图形吧!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180924G07VB300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券