1) 点击绿旗,角色、背景如图所示;
2) 按下一次键盘上的方向键,如果男孩面向方向与按下方向键的方向一致,则男孩向此方向前进一个格子的距离(男孩碰到墙壁就不能再继续移动;
3) 按下一次键盘上的方向键,如果男孩面向方向与按下方向键的方向不一致,则男孩需转向所按下方向键的方向;
4) 男孩碰到箱子后,男孩推动箱子同向移动,当箱子碰到墙壁或其他箱子时不能再继续移动;
5) 当三只箱子分别被男孩推到三个黑色方框上,程序结束。
解析:
本题难度中等,考查的知识点包括克隆编程、运动编程、事件广播机制、变量等。难点是如何实现男孩推着箱子前进,并检测前方碰到障碍物时停止前进。
包含3个角色,分别是箱子、方框和男孩(素材下载:推箱子游戏素材.zip)
对游戏进行功能拆分,可以简单分为以下几个模块:
- 箱子初始布局
- 控制男孩移动
- 推动箱子前进
- 判断游戏成功
第一个模块:初始化地图,主要是指3个箱子和3个黑色方框的显示,黑色方框表示箱子的目标位置。我们可以使用克隆来生成箱子和黑色方框,注意调整好位置。
第二个模块:控制男孩移动,玩家是通过方向键来控制男孩上下左右移动的,注意点:
1). 碰到墙壁时,不能向前移动,如果碰到,退回来即可。
2). 推动箱子前进时,如果碰到前面有墙壁和箱子,不能向前移动,如果碰到,退回来即可。
第三个模块:判断当箱子碰到男孩时,箱子要前进了,前方如果有箱子或墙壁,就不能前进。
第四个模块:当3个箱子分别推到3个黑色方框内,游戏结束,我们可以使用一个变量来记录已经放好的箱子数量。但是需要注意一点,就是箱子推到黑色方块位置后,还可以推出来,此时要同步更新变量的值。
实现步骤:
第一步:添加背景和角色,调整好大小(素材下载:推箱子游戏素材.zip,需要解压)
第二步:选中箱子角色,按照题目所示,调整好箱子的位置,在3个不同的位置分别克隆即可,代码如下:
第三步:切换到黑色方框,和箱子一样,调整好位置,克隆3个方框,编写代码如下:
第四步:切换到男孩角色,设置初始位置和方向
第五步:控制男孩移动,使用四个代码块分别处理四个方向的移动

第六步:移动箱子,当克隆体判断碰到男孩,那么就向相同的方向移动,如果碰到墙壁或箱子,则需要退回来(相当于无法前进),同时也要使用广播,通知男孩后退。
当箱子后退时,男孩也要后退一格,所以这里发送了一个“后退”的广播消息。
相应的,男孩角色在接收到广播消息后,需要后退50步,切换到男孩角色,增加如下代码
第七步:统计成功数量
先创建一个变量“成功数量”,用于表示已经到达目标位置的箱子。初始值为0
当黑色方框碰到箱子了,将数量加1,同时还需要检测,方框是否离开箱子了,一旦离开,就需要将数量减1。
切换到黑色方框角色,编写代码如下:
测试运行,如果还没移动箱子就发现成功数量不是0,说明已经存在黑框碰到箱子的情况了。
此时我们就在造型里把黑框和箱子都缩小一点,让他们在开始的时候边缘不要有接触。
第八步:判断成功
切换到男孩的程序,如果成功数量等于3,则游戏结束,停止其它脚本,这样就无法移动角色了,游戏停止。
如果成功后要彻底停止克隆体的程序,那就在黑框和箱子的代码里都加上如下代码
源码下载:Scratch游戏推箱子
本站内容未经许可,禁止任何网站及个人进行转载。







