作品简介
城堡是欧洲中世纪的一种产物,公元1066年至1400年是兴建城堡的鼎盛时期,欧洲贵族为争夺土地、粮食、牲畜、人口而不断爆发战争,密集的战争导致了贵族们修建越来越多、越来越大的城堡,来守卫自己的领地。
今天给大家分享的Scratch作品是《守护城堡》,这是一款塔防类游戏,游戏的目标就是使用弓箭干掉来袭的小兵,保护城堡。
点击绿旗,运行程序,从舞台周边的6个敌人城堡里随机出现一对一对的小兵,他们手持铁枪向舞台中央的城堡进攻而来。在城堡处有一张弓弩,玩家通过按下鼠标发射弓箭,当弓箭碰到小兵时,弓箭和小兵都消失,同时将分数加1,在30秒内如果分数大于20,则游戏胜利,否则游戏失败,赶紧来挑战一下吧,看看你能否取得胜利。
作品效果
Scratch守护城堡的完整效果如视频所示:
作品解读
Scratch守护城堡一共使用了5个角色,如图所示:

各角色功能简要说明如下::
- 城堡:处在舞台正中央,它是小兵攻击的目标;
- 弓弩:处在城堡位置,通过鼠标来控制其发射方向,按下鼠标则射出飞箭;
- 小兵:随机从位于舞台边缘的6个敌人城堡里出发,沿着小路向城堡进攻;
- 飞箭:当按下鼠标时由弓弩发出飞箭,当碰到舞台边缘或小兵消失;
- 结束:包括胜利和失败两种造型和相应的声音,设定的30秒到了,会结束游戏,根据分数来确定是胜利还是失败,切换对应的造型并播放音效。
在使用Scratch创作守护城堡作品中,有两个地方需要重点关注:
- 巧用数学排列组合设置小兵位置
- 避免克隆陷阱
接下来,就分别就这两个问题进行说明
1.巧用数学排列组合设置小兵位置
首先,我们来看看这6个城堡所处位置的坐标,如下图所示:

你看出这里的规律了吗?虽然是6对坐标值,但是里面有一些是重复的数值,其中x表示水平方向,它只有两个位置,左边的是-205,右边的是216,而y表示上下方向,它有三个位置,其中上184,中25,下-145。
因此,我们可以使用两个列表分别保存这里的x和y坐标值,其代码如图所示:

然后在克隆小兵的时候,通过随机数指令,随机获取坐标值,并进行组合可以得到6个坐标位置,相应的代码如下图所示:

列表兵营x有两坐标值,分别是-205和216,列表兵营y有3个坐标值,分别是184、25和-145,当二者进行组合的时候,就可以得到 2 * 3 = 6种组合,这就是6个敌人兵营的坐标位置。
这就是数学知识在编程中的具体运用,这么看来,数学还是挺有用的吧。
2.避免克隆陷阱
当按下鼠标的时候,弓弩发射弓箭,弓弩本身是有发射动作的,所以,我们需要在弓弩角色中处理鼠标按下事件,与此同时,要克隆弓箭角色并发射弓箭。那么,什么时候来克隆弓箭角色呢?
常见的方法有两种:
- 第一种方法,在弓箭角色中再写一遍鼠标事件处理,
- 第二种方法,在弓弩角色按下鼠标时发送广播消息给弓箭角色
但是,这都不是最好的方法,使用第一种方法,需要重复编写相同的代码,虽然代码有些冗余,但可以解决问题。使用第二种方法,则会先让克隆陷阱,克隆陷阱是指在接收广播时克隆角色,这会导致刚克隆的角色也收到广播消息进行克隆,从而出现大量的克隆体。
最好的办法是在弓弩角色中克隆弓箭,从而避免克隆陷阱,其代码如下所示:

然后,在弓箭角色中,直接使用“当作为克隆体启动时”指令来控制克隆体即可。
暂无评论内容