知:一款轻松愉快的小游戏
大鱼吃小鱼是一款操作简单但是可玩性很高的游戏,游戏开始是你是一条小得可怜的鱼,你需要小心翼翼地避开大鱼,吃掉比你更小的鱼,每次吃掉小鱼,你就会变大一点儿。随着体型越来越大,你可吃的鱼也越来越多,生长的速度也越快,直至体型达到最大时通关。当然,对于那些海里的霸王级别的大鱼,比如鲸鱼和鲨鱼,你还是躲得越远越好。
用 Scratch 来实现这款游戏,对已经掌握了丰富的编程技巧的你来说,是不是“So easy”呢?
思:程序设计
代表玩家的小鱼是使用键盘的方向键来控制的,程序可以用一个不断执行的重复来捕捉玩家的按键情况,实现小鱼四处移动。舞台中有许多随机生成的鱼,这些鱼会向两边游动,如果碰到玩家的小鱼,就检测双方的大小值,如果玩家的鱼小,就被“吃掉”,游戏结束;如果玩家的鱼大,则对方被“吃掉”,也就是删除克隆体;作为“Boss”的鲨鱼和鲸鱼的程序逻辑也与此类似,最终如果玩家大小值达到了100,我们就认为玩家胜利过关。
这个游戏的唯一难点是不太好把握不同造型的鱼的大小,如果素材设置不合适,会发现你的鱼明明更“大”,但实际上大小值小于对方,反而被吃掉的情况。因此我们建议的是你的小鱼和别的鱼类角色大小相当(除了鲨鱼和鲸鱼之外),这样当它们的大小设置一样时,外观也基本一样,不会出现视觉错误。
本游戏提供的素材是已经处理过的鱼类角色,你可以直接使用。
程序角色设计如下:
行:编程实现
1、导入背景和游戏角色,随书资源中提供了一整套的素材,如果你不想使用,也可以导入 Scratch 自带的海底背景(Underwater1或Underwater2),并采用自带角色库中的鱼类角色。总的来说,自带的角色和背景线条更简洁一些,但在美观度上可能满足不了你的要求。无论使用哪种资源,你要注意导入的角色包括鱼(主角之外的鱼,可以有多种造型)、小鱼(主角,两个造型,在吃到小鱼时可以切换实现动画效果)、大鱼(类似Boss的鱼)、游戏胜利和游戏结束的提示、用来增加气氛的小气泡等。除了主角小鱼之外,其它角色在开始时都是隐藏的,主要用克隆机制实现角色创建。
2、先给“鱼”角色编写指令,这个角色在程序启动后每秒克隆自身,克隆体启动时先进行一些初始化设置(用自制积木方式实现,你也可以把代码直接放到克隆体代码中,不过那样显得代码过长),然后就是重复移动,直接碰到主角或舞台边缘时消失。碰到主角小鱼时会判断自己的大小如果大于主角,游戏结束;如果小于主角,广播一条“吃鱼”的消息给主角,删除此克隆体。那么如果相等呢?那就谁也奈何不了谁嘛。在初始化设置的时候除了设置随机的造型和坐标,还进行了一个位置判断,如果X坐标大于0,表示这条鱼在舞台右侧,那就让它面向左边游动,反之向右流动,这样不会出现小鱼在边缘一闪而过的情况:
3、为主角小鱼编写代码,小鱼的代码主要是接收控制指令进行移动,并响应胜利、结束或吃鱼的消息。这里我们把它的初始大小设置为50,而上面的“鱼”的角色大小在20-60之间,也就是说默认还是有很大概率吃到比自己小的鱼的。
4、为了给游戏增加一些挑战性,我们增加了大鱼角色,这种角色的大小值是100,也就是说,主角见了它们只能躲开,否则就会Game Over,大鱼出来的时候播放一点带有气氛的音乐,由于它的体型较大,我们不能使用通常的“碰到边缘”来检测,那样很快就不见了,我们可以让它出现之后向前游动一定的距离后再消失,并且为了避免让大小突然在中间位置出现,让主角躲闪不及,我们让它出现的位置确定在舞台左右边缘的一个范围内,并朝向空间大的方向移动:
5、为气泡编写代码,气泡角色其实是一个简单的填充了浅蓝色的圆形,但我们在克隆后让它的虚像特效设定为50,它就有了透明的感觉,更像一个气泡了。气泡会随机选择一个底部位置,并在-70度和70度之间的一个方向向上浮动,到舞台边缘消失:
6、游戏结束、游戏胜利角色是用来显示Game Over或者You Win消息的,代码很简单:
7、最后我们还要为背景添加一段代码,这段代码的作用是播放背景音乐,在游戏结束或胜利时把亮度降低,这样显示消息的时候不显得过于杂乱:
8、游戏编写完成,你可以试玩一把自己的小游戏了!
悟:总结与拓展
本节实现的“大鱼吃小鱼”游戏,逻辑相对简单,要完成一个初步的版本并不难,难的是要让游戏生动、有趣,有一定的可玩性,又具有一定的挑战性。最起码你作为游戏的作者,要能多试玩几次,寻找那些让人感觉不舒服的问题并解决它。相信对于游戏高手的你,这肯定不是难事,对吗?