《打砖块》是极经典的游戏,通过自己编写Scratch版的《打砖块》,我们将学到使用变量设置动态坐标、用随机数控制角色反弹方向、判断输入格式是否合法、借助奇偶数字变换模式等技巧。
一、功能分析和搭建框架
《打砖块》是历史最悠久的经典游戏之一,它的核心规则是控制反弹板利用小球撞掉屏幕上部砖块,小球落地则游戏失败,砖块被打完则游戏胜利。
首先使用克隆和坐标变化实现砖块摆放。
其次是小球的运动,运动核心特点是方向在一定范围内有随机变化;碰到反弹板和边缘会反弹,碰到砖块会让砖块消失,碰到底部会停止游戏。
最后是反弹板的运动,反弹板跟随鼠标做水平运动。
并据此将程序分为三个阶段框架。并设置消息对应阶段,如:“可以开始”表示准备完成,“开始”发射小球,“成功”、“失败”进入对应页面。
准备阶段:设置砖块与发射小球。
游戏阶段:控制反弹板接球打掉全部砖块。
结算阶段:根据游戏结果进入胜利页面或失败页面。
二、反弹板功能实现
反弹板只能跟随鼠标做水平运动,将挡板的x坐标与鼠标的x坐标保存一致即可。实测后添加“碰到边缘就反弹”到重复执行里面防止反弹板移出舞台。
三、生成砖块
用button3作为砖块角色。用克隆实现复数砖块,其中难点在于确定每个克隆体的坐标位置。
这里通过询问让玩家自行决定砖块的行数。为了保证数值合法,要对其进行验证:大于0且不包含小数点。满足条件即可开始生成砖块,否则再次询问。
根据舞台的宽度,决定每行放10块砖,砖块长36,宽19。第一块在(-,)处。砖块每行需要错开,奇数行横向多偏移18,用(行数÷2的余数=1)判定奇数。
用两个变量记录行数和列数,每次克隆后用(列数×36,行数×19)来移动本体位置。每次克隆后列数加一,每克隆完一行,将行数加一且列数归0。
完成准备阶段后砖块本体隐藏并广播“可以开始”。
四、小球功能实现
小球最开始处于隐藏状态。接收到“可以开始”消息后,等待按下空格键开始游戏,广播“开始”。
小球接受到开始命令后,移到反弹板上显示并发射出去,方向为向上的左右45度范围内。
小球在运动过程中会碰到地面,舞台边缘,砖块和反弹板。
在BlueSky背景中,利用小球碰到地面的棕色作为判断条件,达成表示游戏失败。
小球碰到舞台边缘会反弹。碰到砖块会反弹(直接改变方向为),并发出声音。
小球碰到反弹板也会反弹。将方向改成向上的左右45度范围内就可以了。然后加上移动和重复执行,就可以完成小球的运动程序了。
五、砖块消失与结局判定
砖块的克隆体被小球碰到会消失,当所有砖块消失,游戏胜利。用变量“打掉砖数”记录消失的砖块数,当打掉砖数与砖块总数相等时,判定游戏胜利。
砖块数量等于行数10乘以列数。消失用删除克隆体实现。
最后还需要对所有涉及到的变量设置初始状态,可放在游戏开始处。
根据游戏失败和胜利,用改变背景的方式展示不同结局。设置三个背景,初始背景和两个带有胜利和失败文字的背景。
一开始展示初始背景,当接受到胜利切换成胜利背景并停止全部,当接受到失败则切换成失败背景并停止全部。
六、调试与总结
点击绿旗测试调整,你可能会发现砖块有时候需要打击多次才消失,这是由于碰撞判定不同步产生的情况,Scratch在多线程处理程序时会产生误差,并非Bug。
本例主要是对现有项目或生活现象进行分析,转化成Scratch程序,主要方法为“解析-搭建框架-分拆目标-编写程序-调试完善”五个环节,经过学习,你可以继续尝试分析其他项目独立制作Scratch程序,相信你也能完成各种优秀精美的作品。