友情提示:680元/半年,儿童学编程,就上码丁实验室。
在上一篇文章中,作者提出了对周围环境进行探测的“探测器”概念。给出了探测器的多种分类,对基于角色运动的“位置探测器”进行了研究和说明。
本篇将对另一种探测器进行研究和说明,这就是“尺寸探测器”。就是使用角色的大小实现探测周围环境的功能。
这里举出下面的图形为例:
是不是很美观?
这个图形看起来很复杂,实际上实现的思路比较简单。
程序的目的是将不同大小的圆放置在舞台上,而且所有放置的圆之间都保持一定的距离。
在程序中规定了圆半径大小的范围及圆与圆之间需要保持的距离,之后随机在屏幕的不同位置上放置小圆,放置后圆的大小不断增加,一旦遇到其它的圆,就停止增大,并根据指定的空隙大小调整圆的尺寸后使用图章绘图。直到放下指定数量的圆或放不下更多的圆为止。
下面介绍实现的步骤:
第一步,绘制一个圆。
大小设定为100*100,颜色设置为黑色。(建议使用矢量绘制方法)。将大小设置为100*100的原因是:这样圆的实际坐标尺寸与圆大小的参数正好是一致的,在进行尺寸的调整时,比较方便,不需要进行额外的换算。
第二步:设置几个变量。
变量用于控制整个过程的参数。其中MaxSize和MinSize是最大最小尺寸,NCircle是放圆的个数,N是实际放圆的个数,Space是两个圆之间的间距。
关键部分是绘制一个圆的子程序。
思 路
将圆的大小设置为最小值,放置在一个随机的位置上,如果这时已经碰到了黑色,说明现在的圆可能产生在之前圆的内部了,需要重新生成。之后每次将尺寸增加1,当发现碰到黑色时,就减去两圆之间的空隙,并绘制图章。如果超过最大的尺寸还没有遇到另外的圆,就按最大的尺寸绘制一个圆。这样,就能够得到需要的效果了。
调节最大尺寸、最小尺寸与空隙等参数,就能得到不同的效果。
实际上这里就应用了尺寸探测器。
尺寸探测器
即通过改变角色的尺寸,来检查是否与周围的角色发生碰撞,从而能够保持一定的距离。
可能大家感觉圆形的效果有限,如果将角色修改为其它的图形,可以达到很好的效果。如下面的例子所示。
这就是用类似的方法,将很多个不同字体的福字放在同一张图形上,既有规律,又有变化。
总结
1 通过修改角色的大小,将改变尺寸后的的角色作为探测器,可以使放置的角色与其它角色保持一定的距离或达到其它的效果。
2 使用定义参数的方式,使程序便于修改和调整效果。
3 从程序中可以看到,我们使用了角色是否碰到黑色的判断,虽然角色自己的颜色就是黑色,但是不会激发这个条件。否则所有圆都无法绘制了。