今天我们将完成一个挡板弹球游戏。
00 软件分析需求说明:
编写一个游戏程序,从屏幕上方落下弹力球,碰到舞台左右墙壁时,或挡板时,球按照现实世界的物理规则弹跳。落到舞台底部地面时,游戏结束。挡板随着鼠标的移动而左右移动,玩家控制鼠标移动以便不让球落到地面上。记录挡板接住球的次数,和玩家的游戏时间。
需求分析:
按照上面的分析,添加球和挡板两个角色。
1、如图点击添加角色图标,选中【选择一个角色】
2、然后在角色库中选中“Ball”。重复该操作,再从角色库中选中“Paddle”,作为挡板。当然,你也可以选中自己喜欢的角色。
3、删除不需要的默认角色1。
02 调整角色的大小将角色调整到合适的大小。我将球调整到70,挡板调整到80。
03 更换舞台背景按照你自己的喜好,将默认的舞台背景替换成合适的背景图。
简单起见,我使用默认的白色背景图。
04 创建变量提前建立两个变量,接球个数和游戏用时,方便后续使用。
05 给挡板编程挡板的逻辑比较简单,需求列表中“跟随鼠标左右移动”适合放在挡板角色中实现,但是,挡板接住球得分之类,初步分析可能放在球角色的代码中更合适一些。
06 给球编码球角色的编码要复杂一些,主要包括以下内容:
1、通过“计时器”完成游戏用时的逻辑;
2、程序开始执行后,初始化变量,将变量设置为0;
3、设置球运动的起始位置和起始角度,我们将球的位置设置在舞台顶部中央,或者,你也可以将球放置在舞台顶部的任意位置(思考下如何修改代码)。球的起始运行角度限定在一个范围内,随机取值;
4、将球运动的逻辑放在一个“无限循环”之内,每次移动5步。可以通过修改这个值,改变游戏的难度;
5、[碰到边缘就反弹],这个积木很重要,正是它才使得球碰到舞台的左右和上面边缘时可以自动的转移方向;
6、不停的监控球是否碰到挡板,如果碰到,则给得分加、播放一个碰撞音效。
7、更重要的是往上方反弹,起初我考虑应该参考真实的物理原理来设置球反弹的角度(回弹角度等于下落),可是这样做了后才发现,球的运行轨迹变得很机械,所以,最终改成了现在这样的在一个范围内取随机的反弹角度。
点击查看大图
上面的编码还有几个值得注意的地方:
1、同一个角色中可以使用多个(当被点击] 积木,这样可以实现两段逻辑被同时执行;
2、上面用到两个“侦测类”积木,得到 (鼠标的x坐标) 和判断挡板是否 <碰到 Ball ?> 角色。经常查看侦测类积木,也许就会发现你很有用的功能。
另外,在刚才的编码过程中,发现一个Scratch 3.0新增的小技巧,在这里特别拿出来和大家分享。
添加 [面向___方向] 积木,当鼠标进入输入框后,输入框下方会出现一个类似于时钟的圆盘,它实时显示输入框中方向值在界面上的实际指向,同时可以通过这个圆盘上的指针设置输入框的值。这种操作真实太直观了!!
更多关于“方向”的知识可以查看历史文章《Scratch运动积木》的第2部分。
07 补全游戏失败的逻辑上面球角色的代码还缺失球落到舞台底部的逻辑,这时游戏失败并终止。
检查球是否落在舞台底部,有若干种方法,比如:
我为大家演示第1种方法的代码,后两种可以作为课后练习。
上图设置“y坐标<-150”的原因是:横版固定在-150位置。所以,低于它时,表明球已经接不住了,也就是失败了。这时候 [停止 全部脚本 ] ,就会停止两个变量“接球个数和游戏用时”的计数,球的移动,以及挡板随鼠标移动。
08 完工!运行程序至此,我们完成了“需求说明”中的全部内容。
点击舞台左上角的小旗子运行程序,看看效果吧。
附加练习tag:#Scratch编程、#少儿编程、#儿童编程、#趣味编程、#青少年编程、#软件编程
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved