最新消息:

用Scratch制作枪林弹雨游戏

Scratch 少儿编程 2783浏览 0评论

友情提示:视频教程观看时请手动设置清晰度。

用Scratch制作枪林弹雨游戏

枪林弹雨的游戏也是一种经典的游戏类型,这种类型的游戏设计目标,是让主角不断的躲避越来越多的障碍物,最后看谁坚持的时间最长。

今天我们要编写的枪林弹雨游戏,就属于这样类型的游戏。游戏背景发生在太空中,玩家控制飞船躲避不断增多的小球。游戏设定飞船有三格血,每碰到一次小球,就减掉一格血,所有的血减完则游戏结束。在游戏中,会不定时的出现红心和星星,作为对飞船的补充。如果飞船碰到红心,则会恢复到三格血的状态;如果飞船碰到星星,则会进入无敌模式并持续3秒钟。

明确了游戏的设计目标,接下来我们看一下如何规划游戏中的每个环节。我们先用思维导图把游戏的设计画出来。

用Scratch制作枪林弹雨游戏

通过思维导图,我们设置好Stage和Sprites,然后开始编程。整个编程的过程,我们可以分成三个阶段来完成,由浅入深,在每个阶段都可以得到结果反馈,游戏始终是可玩的,只不过随着阶段的提升,游戏的可玩性会越来越高。

阶段一:完成飞船和小球的控制与碰撞。

在第一个阶段,我们只添加飞船和小球这两个Sprites,不考虑加血和无敌模式,只要飞船一碰到小球就Game Over。在这个阶段,我们主要需要考虑的是小球的克隆,以及随机飞行的问题。

1、方向键控制飞船的移动。这个实现比较简单,只要使用用Scratch制作枪林弹雨游戏用Scratch制作枪林弹雨游戏这几个Blocks就可以实现,这里面X、Y的方向和移动的步长是需要注意的地方。

2、小球如何在屏幕中随机飞行。我们可以用用Scratch制作枪林弹雨游戏来控制小球在屏幕中的移动,在黑色星空的背景上看起来就像是在飞行。但是此时小球只会直上直下的运行,其轨迹无法覆盖到整个屏幕。因此我们需要小球在移动之前,让小球转动一个角度,这样它移动的轨迹就会按照这个角度的方向去运行,可以是直线,也可以是斜线。如果我们在360度的角度中随机取一个值赋给小球,那么理论上小球的轨迹就可以覆盖到屏幕的任何方位,就像下面这样:

用Scratch制作枪林弹雨游戏

3、克隆出更多的小球。如果只有一个小球在屏幕上飞行,显然会让我们的游戏很无聊,我们需要不断增加小球的数量来提高游戏的难度和可玩性,这样就会用到克隆用Scratch制作枪林弹雨游戏。我们可以让小球每间隔2秒钟,就出现在屏幕的一个随机位置,并设置一个随机的方向,然后克隆自己。这样经过不断的循环,就会克隆出越来越多的小球。这里要注意的一点是,每次克隆出来一个小球之后,我们需要把本体隐藏掉,这样我们在后面控制小球运动的时候,只要考虑克隆小球的代码就行了,提高我们代码的可读性。

用Scratch制作枪林弹雨游戏

4、让电脑控制克隆小球运动。当一个小球被克隆出来之后,它是停在原处静止不动的,我们需要使用用Scratch制作枪林弹雨游戏Block来启动克隆小球,然后控制它们进行运行。由于我们在克隆之前,已经对本体小球制定了方向,因此作为克隆出来的小球,只需要移动相应的步数就可以了。这里要注意的是,需要增加判断小球是否碰到了边界,以及是否碰到了飞船。如果碰到边界,就让小球反弹回来;如果碰到飞船,就让小球消失。

用Scratch制作枪林弹雨游戏

完成了这些步骤,我们第一阶段的任务也就基本完成了,现在可以点击小绿旗,操纵飞船实验一下,看看游戏是否按照我们的预期进行,有没有BUG需要修复。

阶段二:添加红心和星星模块。

做完了第一阶段,我们的游戏虽然可以运行了,但是还缺少一些有乐趣的功能。因此在第二阶段,我们要增加两个物品:红心和星星,分别为飞船加血,以及开启无敌模式。要实现这些功能,重点需要注意的地方有两个。一个是如何让飞船跟小球碰撞3次才Game Over;另一个是开启了无敌模式,如何在规定时间呢回到正常模式。我们添加完这两个Sprites,就可以开始编程的探索了。

1、如何如何让飞船跟小球碰撞3次才Game Over。在第一阶段里面,我们的飞船只要一碰到小球,游戏就结束了。现在我们需要让飞船碰到小球之后,先掉一格血,直到掉完三格血之后才Game Over。这样我们就需要增加一个存储飞船当前有多少格血的变量,我们给找个变量起名字:Blood。Blood的初始值我们可以设置为3,飞船每碰撞一次小球,Blood的值就减1,当Blood的值减为0的时候,就说明飞船没有血了,这时候就可以Game Over。

用Scratch制作枪林弹雨游戏用Scratch制作枪林弹雨游戏

飞船判断是否Game Over                            小球判断是否Blood减1

2、如何在飞船碰到红心后加满血。这个功能实现起来比较简单,只要在红心的程序中,增加一个触碰条件,当红心碰到飞船时,把Boold的值设为3即可。

用Scratch制作枪林弹雨游戏

3、如何开启飞船的无敌模式。当飞船碰到星星时,飞船的状态就变成了无敌模式,即使碰到小球也不会损失生命值。这里的无敌模式,其实就是飞船的一种状态,因此我们增加一个记录状态的变量,来帮助飞船确认当前的状态。这个变量我命名为:Super,变量的类型属于布尔类型(对布尔类型的解释,我们在其它内容里面阐述)。我们在星星的程序里面,对这个变量的状态进行设置,当Super=1时,代表无敌状态;当Super=0时,代表普通状态。而小球在触碰飞船的条件判断中,则需要增加一个嵌套条件,即当Super=1时,不改变Blood当前的值,这样飞船就不会掉血了。

用Scratch制作枪林弹雨游戏

到这里,我们的阶段二就完成了,游戏的可玩性大大提高,基本可以畅快的玩游戏了。然而你会发现,游戏里还有很多细节不太完善,比如飞船撞到小球后,外观上没有任何变化,玩家就不能直观的了解到飞船的状况。这些细节就需要我们在第三阶段去完善和优化。

阶段三:添加音效,优化代码,完善游戏体验。

通过前两个阶段的努力,我们的游戏已经可以正常操控了,但是体验还不够完善,代码也有一些杂乱,因此第三阶段就是要进行优化的工作。我们主要从以下几个方面来对已有的游戏进行优化:

1、增加飞船在不同状态下的样式。一方面飞船碰到了小球,掉一格血,外表需要跟之前有却别;另外,飞船在无敌模式下,跟普通模式也要有区别。针对掉血的外表变化,我们可以通过简单的用Scratch制作枪林弹雨游戏这个Block来实现。每掉一格血,飞船就改变一下颜色。对于无敌模式,我们可以为飞船增加一个Costume来实现。我的Costume是在飞船的外面花了一圈金黄色的线条,看起来就像是一个能量盾,当Super=1的时候,飞船就切换到这个Costume上面,三秒之后再切换回原来的Costume,这样就实现了无敌模式的视觉效果。

用Scratch制作枪林弹雨游戏 用Scratch制作枪林弹雨游戏

普通模式         无敌模式

2、使用Message模式来传递消息。之前,我们各个Sprites之间的状态传递主要是通过变量的值来传递,这样编写起来比较复杂。因此在这里我们引入一个新的功能:Message,来负责传递消息。在Scratch中,Message是一种中断处理机制,你可以简单的理解成电话。比如当我们在工作时,电话铃响起就会打断我们的工作,我们会停止手头的工作,立刻去接电话,并且通过来电显示的号码,我们还可以知道这是谁打过来的电话。通过Message/中断的处理机制,可以大大较少程序代码的复杂度,以及提高代码的运行效率,它是的我们的程序不需要浪费时间一遍遍去主动检查是否有情况发生,而是专心完成自己的任务,一旦有Message传递过来,就会打断去处理突发的情况。

在枪林弹雨这个游戏中,我们可以把所有触碰的情况都转化成Message发送出去,这样我们就可以把小球、红心、星星的触碰代码全部集中到飞船的代码区中,确保程序有一个良好的架构,调试/发现BUG都比较方便。

用Scratch制作枪林弹雨游戏用Scratch制作枪林弹雨游戏用Scratch制作枪林弹雨游戏

3、背景音乐和音效。俗话说,没声音再好的戏也出不来。一款体验良好的游戏,需要有匹配的背景音乐以各种音效。对于背景音乐,我们可以在Stage的代码区添加Music Loop,选择一首自己喜欢的音乐片段循环播放即可。而音效则需要添加在每一个出现的节点上,比如小球跟飞船碰撞的时候。

用Scratch制作枪林弹雨游戏

至此,我们的枪林弹雨游戏就全部大功告成了,同学们可以尽情享受自己开发的游戏的乐趣,比一比谁坚持的时间最长。

完整游戏可以登录Scratch官网我的Mini-Game Studio查看

https://scratch.mit.edu/projects/302107744/

您必须 登录 才能发表评论!