二、动手练:会织网的蜘蛛

(一)实验目的

模仿蜘蛛织网的过程,一圈一圈地织出六边形的网来。

(二)基本思路

蜘蛛网可以看成由许多同样的几何图形构成:蜘蛛网的一圈为六边形,一个六边形可以分割成6个三角形;整个网可以看成六边形的圈从里到外逐渐扩大形成。

(三)编程步骤

(1)角色设计

我们没找到现成的“蜘蛛”角色,就用篮球代表蜘蛛了。

(2)变量设计

定义一个变量sideLength,表示边长;边长从0开始,逐步增加;每增加一次,就画一个六边形。这样蜘蛛网就一圈一圈织出来了。

(3)过程定义与脚本展示

我们定义3个过程,就是新建3个积木块(见图7-3中左侧部分),分别是:

1)Triangle积木

  • 功能:画一个等边三角形。
  • 形式参数:边长length
  • 过程描述:先沿着一个方向走length步,画出第一条边;然后右转120°,再走length步,画出第二条边;最后再右转120°,走length步,画出第三条边。这样恰好回到出发点,也就是蜘蛛网的中心点。

2)Hexagon积木

  • 功能:画一个六边形。
  • 形式参数:边长length
  • 过程描述:先调用Triangle过程画一个三角形;然后旋转60°,再画一个;这样重复6次,就画出六边形来了。

3)SpiderWeb积木

  • 功能:画蜘蛛网。
  • 形式参数:无。
  • 过程描述:我们先将边长sideLength设置为0,然后重复增加sideLength,调用Hexagon积木画边长为sideLength的六边形。这样重复5次,一个5圈的蜘蛛网就织成了。

(四)实验结果

图7-4中显示的是我们画出来的蜘蛛网,漂亮吧?

078-1

图7-4 画蜘蛛网的程序及实验结果

(五)思考与延伸

当然了,我们可以扩展SpiderWeb积木:增加两个参数,分别表示蜘蛛网的圈数和两圈之间的距离,这样能够更方便地控制画几圈、画多密。

需要说明的是,这里是用画三角形的方式画蜘蛛网,并不是蜘蛛的真实织网方式。我上网查了,在自然界里,蜘蛛是先织出经线,再绕圈织出纬线。蜘蛛拉第一根经线是最费力的,要经过树枝、草地等;为了避免被树枝、草叶粘住,经线都是没有黏性的,只有纬线才有黏性,好粘住飞虫。不同的蜘蛛拉出的经线数目也不同,通常有二十几根之多。