.

Scratch36开发简易版水果忍者

在本系列上篇Scratch3.6开发简易版《水果忍者》(一)中,我们初步介绍了系统总体架构、主要角色及其间主要通信逻辑,最后学习了游戏的启动屏幕中少部分有关编程技巧。在本篇中,我们将继续介绍实现这款游戏启动屏幕中的刀刃动画特效编程,并重点分析游戏主屏幕中的关键编程技术。

一、系统快照与启动屏幕刀刃动画设计

(一)运行视频

简易版《水果忍者》游戏今天算是初步成形,现在让我们一起看一下游戏的运行时部分视频。

00:52

(二)启动屏幕中刀刃切水果有关角色设计

先来看一下游戏的启动屏幕中刀刃动画对应截图:

启动屏幕中刀刃处于初始位置启动屏幕中刀刃穿过苹果后截图使用Scratch内置图形编辑器绘制的刀刃

典型情况下,一款游戏的启动屏幕主要负责实现如下任务:

(1)游戏主要功能介绍(亮点玩法初步展示)及玩法说明

(2)游戏设置(背景音乐、前台精灵音效控制、游戏模式选择等)

(3)游戏排行榜及各种共享玩法、支付功能等

参考上图,在本游戏中,这个启动屏幕的简单设计思路是:当进入启动屏幕后,青苹果角色出现,稍后,从屏幕左下角快速飞出一把水果刀(其实仅有白色刀刃),飞向青苹果,并切过去,当碰到苹果后,发出切水果的声音,之后,水果分成若干碎片散落。为了增加趣味性,还专门设计了一个辅助角色——苹果汁,用于模拟商业游戏中的果汁飞溅的离子特效。之后,这一切消失,并循环播放上面的斩切水果动画......如前所述,我们正是想通过这个细节编程向广大玩家展示游戏的主要玩法亮点。

为了实现上面细节的编程,主要涉及到如下有关角色:

启动屏幕刀刃动画仅用于启动屏幕的青苹果角色(apple_for_startup)四溢的苹果汁(apple-juice)(三)启动屏幕中切水果有关角色编程

(1)启动屏幕中的刀刃动画编程

精灵“启动屏幕刀刃动画”代码一

精灵“启动屏幕刀刃动画”对应于启动屏幕中从左下部飞出的刀刃。当点按小绿旗子时,隐藏自身。当正式开始游戏时,同时需要隐藏自身,并结束该角色的其他所有脚本执行。当启动屏幕右上角的音响开关打开(这是通过消息传递实现控制的)时,把此角色的播放音量设置为最大,而当音响开关关闭时,把此角色的播放音量设置为最小。在Scratch编程中,通过这种技巧,可以有效地控制游戏的背景音乐及角色音效的控制。

接下来,看此角色的第二部分代码:

刀刃切苹果时的代码

首先,注意消息“苹果已经到位,可以切了”,这条消息是青苹果角色(apple_for_startup)广播的。在此我们想实现一个短暂的时间停顿,即在启动屏幕中,先出现青苹果,再停顿一会儿,然后“告诉”左下角的刀刃飞出。当接收到此消息后,首先清除原先的图形特效,定位并显示。然后,让其在0.2秒时间内移动到青苹果右上角(横纵坐标各增加50)位置,模拟切穿水果后的刀刃所在位置。这里还有一个游戏中音效相关的(唯一的)全局变量sound_on的使用。当它的值为1(即为声音打开状态)时,播放切水果音效。同时,广播消息“启动屏幕:要切水果了”,并等待。这里的“等待”是非常必要的,因为接下来我们想实现通过图像的虚像化特效使得刀刃呈现逐渐消失的效果——这个效果显然是不应该马上播放的,而要等到水果切开且果汁溢出动画播放结束时开始。

(2)启动屏幕的青苹果角色(apple_for_startup)编程

青苹果角色代码一

上图左边代码不需赘述,主要来看右边代码。当收到消息“启动屏幕”时,执行一个无限循环:清除特效、调整方向、定位并显示,然后等待5秒——这个5秒是我们试验出的数据,在本游戏中算是一个很长的时间。注意,在Scratch中,并不意味着当前代码独占CPU时间5秒,而是指本部分后面的代码暂停5秒不再执行,而把CPU时间片留给其他地方的代码执行——这种概念对于Scratch初学者可能有一些难度,以后我会在专门的探讨“Scratch并发进程高级编程”话题中讨论。在5秒的这段时间里,系统实现了好多任务——苹果被切碎,果汁溢出,等等。

最后,广播消息“苹果已经到位,可以切了”,专门把这条消息发送给刀刃角色,通知其可以飞出。接下来的代码主要介绍在上述5秒时间内发生的事情。

青苹果被切中成碎片时的有关代码

当收到刀刃发来的消息“启动屏幕:要切水果了”,执行上述代码。这里的代码不难理解:先作初始准备,然后执行一个有限次循环播放苹果被切成碎片的连续的4个造型,并最终渐隐而去(使用虚像特效)。注意,这其中还不断广播消息“苹果汁崩出”,以便通知果汁有关动画开始播放。

(3)果汁溢出动画编程

这部分角色是apple-juice,相关代码如下图所示:

果汁代码一

这部分代码同前面其他角色的意义,在此省略介绍。

青苹果溢汁动画

当接收到消息“苹果汁崩出”,把角色移动到苹果所在位置,并作其他必要准备,然后通过一个循环播放果汁溢出动画(越来越大,越来越淡,最后淡出屏幕)。

至此,让我们来归纳一下启动屏幕上有关切水果编程技巧,关键还是在于几个有关角色之间的消息通信及时间数据的反复试验调整。

老朱老师敬告同学们:优秀的程序是不断修改与调试出来的!

二、水果设计与编程

(一)水果设计介绍

水果造型设计

在本游戏设计中,简单地设计了五种水果造型(包括地雷)及其对应的经刀刃切割后的分裂开来的对应造型。商业型游戏设计中,造型往往比这些要复杂,因为游戏本身的趣味性与可玩性是吸引玩家,特别是初级玩家的几乎是首要因素,绝不可忽视。

另外,在这里强调三点:

(1)这些简单的造型使用Scratch内置的图形编辑器都可以轻松实现(强烈建议读者务必先熟悉Scratch内置的图形编辑器的使用,再扩展到功能更强大的外部图形编辑工具,因为在有些Scratch青少年比赛题中都有这方面要求)。

(2)在实现分裂开来的水果造型时一种推荐的方式是:先把图形编辑器下默认的矢量绘图状态下的造型复制一份,然后把复制的那一份切换成位图编辑状态,然后把水果旋转一下(根据实际需求选择旋转角度),再使用选择工具(只能矩形选择)选择并拖开一段距离,从而很容易形成水果切分的效果。根据此思路,可以把水果切成若干份。

(3)很重要的一个细节是:这里水果的造型编号要严格对应,例如1号水果对应其分裂后的6号,2号水果对应其分裂后的7号,等等。这个规律在后面的编程中使用;否则,这里编号紊乱将导致后面编程中严重的逻辑错误!!!

(二)编程

1、启动时

水果角色在系统启动时需要隐藏

游戏中的几乎所有前台角色,在未上场前(相当于经导演指示登舞台表演),都应当处于隐藏状态。对于我们游戏中的水果角色也不例外。

2、当接收到“开始游戏”消息时

水果在被扔向半空前必要的数据准备

当接收到“开始游戏”消息时,水果角色正式亮相。此前,它们要经过必要的数据准备,我们的设想是水果被掷向空中时它要翻转着滚动着往下落。为了简单起见,每次往空中扔水果的时间间隔硬性设定为3秒——商业开发中,这个数字往往要随着游戏等级的不断改变而作相应的修改(使用全局变量方式管理更为方便)。

上面代码中,有如下几点值得


转载请注明:http://www.abachildren.com/jbzs/7650.html