乌龟编程精讲版-60

程序·创造

软件·就是世界

还没有过年,但不影响我们放烟花。我们自己制作一个烟花怎么样呢?就像下面这个样的如何?

其实我们以前在编写各种小游戏的时候经常遇到:要达到这种效果,首先程序整体的大致设置必须是像下面这样的:第1步要设置tracer(0)函数;第2步要在while循环语句的第一句写上update()函数;第1步和第2步之间以及第2步之后,可以任意写上我们设计的代码了。这样做的效果就能够达到“快速”展现作画内容,于是就接近“动画”的效果了(为什么是这样呢?你要是仔细想想也会明白,不明白也没有关系,以后想设计任何游戏只要按照这个框架做就行了)。

游戏框架

做烟花,我们要设置很多的小乌龟:首先从底下打上来“炮仗”是个小乌龟;到天上的“炮仗”向四面八方爆炸后“炸”出各种“火花”——每个“火花”就是一个乌龟。

在开始写代码之前,有必要先想一想怎么做?我们这么想:“炮仗”从底下垂直向上跑,这个很容易实现,然后到了天空的某个地方之后——爆炸!关键是怎么实现“爆炸”呢?我们刚说了,爆炸后向四外扩散的每个火花都是“乌龟”!——那就这么做:炮仗向上跑到天空的某个点后(比如200),所有的“火花”乌龟也聚集到这一点;然后每个火花分别指向不同的方向;然后每个火花在各自不同的方向上前进forward。

上面最后的3句话就揭示了程序的大体思路了——其实不算难想到,关键是要想到每个“火花”都是一个“乌龟”,这样我们才容易控制。好了我们先放一个“炮仗”上天!

点“炮仗”上天

这段代码应该比较简单,使用了最上面介绍的“游戏框架”——添加了一些代码,比如“画布设置”这里,如果你有好看的背景图片可以放在bgpic()函数里,我放了一个夜空的图片进去,如果没有图片就只能用bgcolor()设置背景颜色了。

紧接着我们做了一个叫做shoot的“炮仗”——白色white,方形square。为了更像炮仗一些,用shapesize函数给它“拉长”了。主循环里在update()之后为什么要sleep(0.01)呢?当然是为了放缓画面更新速度,让你能看出来,不然可能什么都看不到哦!执行结果如下:

如果你真心把上面代码敲到计算机并运行会发现:我的炮仗怎么只发了一次?你的怎么连续发呢?因为我在最后面加了下面这两行语句,试试吧!

“炮仗”炸出一个烟花

我们现在要实现上面说的那句话——“所有的“火花”乌龟也聚集到这一点;然后每个火花分别指向不同的方向;然后每个火花在各自不同的方向上前进forward。

只不过,这次先是一个“火花”!怎么做呢?肯定也是先像下面这样“造”一个火花firwork,黄色,圆形circle,只不过是压扁了的圆形(用shapesize实现)。如下代码所示。

接着在while True大循环里让“火花”飞起来——firework.fd(10);然后我们让炮仗飞到200的高度爆炸——用if选择结构,当“炮仗”飞到200高的时候,让“火花”走到goto和“炮仗”一样的位置,并设置火花的方向seth为一个“随机的方向”(所以最前面的代码应加上import random)

从上面程序执行的动图中我们也看出来了:这一个“烟花”在一个地方四外随机的飞出——我们的烟花大概效果出来了——如果你明白了以上的代码,那下面就很容易理解了——我再做“很多个”这样的烟花不就行了!

绚烂烟花为你而来

要造很多个烟花,我们之前的教程已经说过很多遍了:当然是用for循环将一个个的“烟花”放到“列表里”,为此我们建了一个存放“烟花”的列表——fireworks,然后用将上面“一个烟花”的代码放到for循环里(如下图代码,我造了20个烟花)

while循环里也是哦!39行代码和44-45行代码都放到for循环里,然后再执行!欣赏属于你的美丽烟花吧!

这个是什么?

这是国外的小朋友(10岁)画的画儿,画的是他的城市的一角。当然不是用画笔了,而是用神奇的python语言编程出来的!用编程来画画当然可以了。

这个是小朋友(12岁)用Python语言编程设计的小游戏。能“吃”东西,能加分和减分,特别容易上瘾 哦!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181019G09EDH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励