编写经典游戏打砖块

治疗皮肤病最好的医院 http://www.jk100f.com/baidianfengzixun/texiaoliaoxiao/wuliliaofa/m/27338.html

《打砖块》是极经典的游戏,通过自己编写Scratch版的《打砖块》,我们将学到使用变量设置动态坐标、用随机数控制角色反弹方向、判断输入格式是否合法、借助奇偶数字变换模式等技巧。

一、功能分析和搭建框架

《打砖块》是历史最悠久的经典游戏之一,它的核心规则是控制反弹板利用小球撞掉屏幕上部砖块,小球落地则游戏失败,砖块被打完则游戏胜利。

首先使用克隆和坐标变化实现砖块摆放。

其次是小球的运动,运动核心特点是方向在一定范围内有随机变化;碰到反弹板和边缘会反弹,碰到砖块会让砖块消失,碰到底部会停止游戏。

最后是反弹板的运动,反弹板跟随鼠标做水平运动。

并据此将程序分为三个阶段框架。并设置消息对应阶段,如:“可以开始”表示准备完成,“开始”发射小球,“成功”、“失败”进入对应页面。

准备阶段:设置砖块与发射小球。

游戏阶段:控制反弹板接球打掉全部砖块。

结算阶段:根据游戏结果进入胜利页面或失败页面。

二、反弹板功能实现

反弹板只能跟随鼠标做水平运动,将挡板的x坐标与鼠标的x坐标保存一致即可。实测后添加“碰到边缘就反弹”到重复执行里面防止反弹板移出舞台。

三、生成砖块

用button3作为砖块角色。用克隆实现复数砖块,其中难点在于确定每个克隆体的坐标位置。

这里通过询问让玩家自行决定砖块的行数。为了保证数值合法,要对其进行验证:大于0且不包含小数点。满足条件即可开始生成砖块,否则再次询问。

根据舞台的宽度,决定每行放10块砖,砖块长36,宽19。第一块在(-,)处。砖块每行需要错开,奇数行横向多偏移18,用(行数÷2的余数=1)判定奇数。

用两个变量记录行数和列数,每次克隆后用(列数×36,行数×19)来移动本体位置。每次克隆后列数加一,每克隆完一行,将行数加一且列数归0。

完成准备阶段后砖块本体隐藏并广播“可以开始”。

四、小球功能实现

小球最开始处于隐藏状态。接收到“可以开始”消息后,等待按下空格键开始游戏,广播“开始”。

小球接受到开始命令后,移到反弹板上显示并发射出去,方向为向上的左右45度范围内。

小球在运动过程中会碰到地面,舞台边缘,砖块和反弹板。

在BlueSky背景中,利用小球碰到地面的棕色作为判断条件,达成表示游戏失败。

小球碰到舞台边缘会反弹。碰到砖块会反弹(直接改变方向为),并发出声音。

小球碰到反弹板也会反弹。将方向改成向上的左右45度范围内就可以了。然后加上移动和重复执行,就可以完成小球的运动程序了。

五、砖块消失与结局判定

砖块的克隆体被小球碰到会消失,当所有砖块消失,游戏胜利。用变量“打掉砖数”记录消失的砖块数,当打掉砖数与砖块总数相等时,判定游戏胜利。

砖块数量等于行数10乘以列数。消失用删除克隆体实现。

最后还需要对所有涉及到的变量设置初始状态,可放在游戏开始处。

根据游戏失败和胜利,用改变背景的方式展示不同结局。设置三个背景,初始背景和两个带有胜利和失败文字的背景。

一开始展示初始背景,当接受到胜利切换成胜利背景并停止全部,当接受到失败则切换成失败背景并停止全部。

六、调试与总结

点击绿旗测试调整,你可能会发现砖块有时候需要打击多次才消失,这是由于碰撞判定不同步产生的情况,Scratch在多线程处理程序时会产生误差,并非Bug。

本例主要是对现有项目或生活现象进行分析,转化成Scratch程序,主要方法为“解析-搭建框架-分拆目标-编写程序-调试完善”五个环节,经过学习,你可以继续尝试分析其他项目独立制作Scratch程序,相信你也能完成各种优秀精美的作品。




转载请注明:http://www.aierlanlan.com/cyrz/4642.html