第一次给张江小朋友教Scratch课程之前,还在担心一些概念能不能向小朋友解释清楚,可上完课发现,我严重低估了小朋友的聪明程度,发现现在的孩子相比较自己8、9岁的时候,简直聪明太多倍了。
所以总结了半天,想着干脆来个有分量一点的项目,写一个Scratch版的大鱼吃小鱼游戏。
游戏完成界面如上图,其中蓝色的小鱼受我们方向键的控制左右上下移动,食物链顺序是大鲨鱼 -> 主角(蓝色小鲨鱼)-> 其他小鱼。其他小鱼每隔10秒在屏幕随机位置生成,然后一直横向移动,碰到边界就反弹。大鲨鱼每30秒随机产生在屏幕左侧,游到右侧消失。
蓝色鲨鱼吃到小鱼时,小鱼消失,同时自己切换到一个张开嘴的动作上,然后切换回来,同时身体变大一点,碰到大鲨鱼则游戏结束。
在完成复杂项目的时候,最重要的是将事情分解成小目标,比如先完成小鱼的随机生成,再赋予其游动的逻辑,如法炮制大鲨鱼,然后再加上碰撞逻辑的处理。
首先看小鱼的生成
这里重复100次,每隔10秒就生成一条小鱼。而新生成的小鱼,拥有这样的逻辑。
这里面的代码,在1-4间取随机数,然后切换到相应造型,是因为切换不同样子的小鱼。
然后调整大小到50%,设置水平运动方式,并且设置如果碰到主角,则发送消息 hit.
同理大鲨鱼的逻辑也是类似。
只不过运动方式是从屏幕左侧开始移动,并且如果碰到主角,则发送“gameover”消息。
而主角的逻辑处理中就不一样了,首先要接收处理前面两种碰撞事件。
上面定义了,碰到小鱼时怎样切换到对应的张开嘴的动作,和碰到大鲨鱼时结束游戏。
另外再加上主角的方向键按键处理。
这样,一个scratch版本的大鱼吃小鱼游戏就完成了,想想看确实挺简洁的,比flash脚本要简单太多了。