admin 管理员组文章数量: 887019
2024年1月18日发(作者:数据库选中语句如何出来报表)
Scratch游戏
作者:
来源:《电脑报》2020年第34期
本文摘自电脑报出品的《Scratch3.9青少年编程高分宝典》一书。你需要综合应用Scratch积木才能实现预期效果,完成保护飞船的小游戏。
游戏背景:太空飞船发生故障,外星人正从四面八方袭来,你需要操控守护者,保护飞船直到修理完毕离开战场。在飞船安全撤离前,若飞船被毁则游戏失败,否则游戏胜利。
目标分析:根据背景设定可知,游戏中要包括飞船、守护者以及外星人三个角色。飞船会留在舞台中间一段时间,等到故障解除,即继续往边缘移动,移动到边缘即视为脱离战场,游戏胜利。
守护者由玩家操控,可以消灭敌人,保证飞船血量大于0直到获得胜利。守护者造型比较特殊,需要自行绘制。
选择水母(Jellyfish)作为外星人。外星人由电脑控制,从各个方向出现,并冲向飞船,若击中飞船则扣除一定血量,若被守护者击中,则视为损毁消失,在飞船撤离战场前,将飞船血量消耗完则视为游戏失败。
还需要一张太空背景图,选择太空(Nebula)背景。
游戏大体分为三个阶段:初始参数设定阶段、游戏阶段、结局判定阶段。
初始参数包括:故障时间、飞船生命值、各角色起始位置和各角色显示或隐藏状态。
游戏阶段包括守护者运动方式、飞船运动方式、敌人运动方式及与飞船或守护者碰撞引起的参数改变。
结局包括胜利和失败,不同的结局会出现不同的文字提示,进入结局后,其他角色的显示和隐藏。
守护者需要被玩家控制去攻击敌人,这里我们将其设定为月牙形半透明光能武器,月牙的造型可以对圆形使用变形工具,修改出来。将圆下方的点向上拖动,即可形成月牙图形(如图2)。
然后使用渐变色填充对其填充颜色,实现透明效果。红色斜杠表示无颜色,一个颜色选择无颜色,就可以填充出漂亮的透明效果了(如图3)。
飞船进入战场中心后,出现故障停留一段时间,然后继续运动离开战场。所以需要设定飞船一开始显示,从下方滑行到中心点,然后等待一段时间(10秒方便测试),然后向上方继续移动至边缘隐藏,游戏胜利,停止全部脚本。
在程序中还可添加造型变化与初始大小设定,最后的移动可以加上等待让飞船速度不要太快(如图4)。
守護者需要跟随鼠标运动,为了方向保持一致,要将守护者造型方向面向默认的右边。造型中心点也在月牙中心偏右的位置(如图3)。
跟随鼠标运动,且面向鼠标方向,可以用运动组的相关积木实现(如图5)。
按照游戏设定,敌人是从四面八方向飞船进攻,所以敌人的出现位置实际上就是四条边缘,具体位置完全随机。所以我们需要先随机出现四种情况,每种情况代表一条边缘,具体出现在边缘上的哪一个点再做一次随机即可。
因为随机出来的边缘选择需要判断四次,所以需要一个变量保存下来。然后在四种情况中分别写入四条边缘的坐标,即可完成敌人的出现点程序。
每条边缘都有一个坐标固定,例如上边缘是Y坐标固定最大,X坐标随机。以此类推可得出四条边缘的坐标设定。程序如图6。
需要注意的是,由于敌人数量很多,因此要使用克隆体,所以运动的应该是克隆体,本体需要隐藏,相应的克隆体需要显示,因为起点不同,所以方向也不相同,为了避免出现倒立的敌人,我们这里需要将旋转模式设定为“左右翻转”,另外为了让敌人不至于千篇一律,我们可以设定造型切换为随机造型,大小设定在一个范围内随机取值,经过测试,我们这里将大小设定在15到30之间。
本体由于需要等待飞船发生故障时再开始克隆,所以这里我们加上“等待1秒”。每次的克隆间隔我们这里设定的是0.5秒(如图7)。
敌人的起点设定好后,选择面向飞船,重复运动直到碰到飞船,即可完成敌人的完整运动。当敌人接触到飞船,会给飞船扣血,然后消失。若接触到守护者,则敌人直接消失,这段程序发生在克隆体的运动过程中,所以我们可以将程序写入克隆体运动程序里面。程序如图8。
游戏环节进行到最后,胜利或者失败,需要一个明确的判定标准,我们使用血量来判断结局,若血量在飞船撤离前归0,则游戏失败,若飞船成功撤离,则游戏胜利。
飞船程序中已经有胜利结局的程序了,我们在敌人角色中添加失败的结局。因为血量等于0时失败,所以我们需要设定血量的初始值(暂时设为10)(如图9)。
程序全部完成后,按照惯例进行测试,测试内容包括胜利结局、失败结局、敌人碰到飞船或守护者是否消失、敌人碰到飞船是否扣且仅扣1点血、飞船运动状态是否正常、敌人运动状态是否正常、守护者是否跟随鼠标运动。
全部没有问题后,可以将之前为了方便测试的参数进行修改调整,例如血量、飞船故障时间、敌人速度等。
你还可以思考一下,现在敌人是0.5秒出现一个,能不能改成1秒出现一批次随机个数的敌人呢?
版权声明:本文标题:Scratch游戏 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705540307h489122.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论