用scratch实现网上游戏“球球情侣2”

网上有个“球球情侣2”的游戏,游戏中有两个不同颜色的球,玩者首先用鼠标画线画出球移动的路,分别单击两个球,使两球沿线移动,如果两球碰到一起,进入下一关。外孙女喜欢这个游戏,也想用scratch自己编写一个。编写很多关是游戏公司的事,我们只编写一个最简单的一关,说明实现的方法。本程序要实现两个功能,第一,用鼠标画线,但在鼠标移出工作区时不能画线,单击球时不能画线,在红色块上不能画线。第二,球沿所画线移动。
下面三个图是运行效果图。最左图程序运行后的初始状态,中间图增加了用鼠标画的黑线,右图是单击两球后,两球分别沿线移动,最后相碰。
在这里插入图片描述
程序中共有5个角色见下图。角色1和角色2中无脚本,也可删除这2个角色,画在背景中,这样不同关可用不同背景,而其它关基本不用修改脚本。角色3用来画线。角色3的大小要合适。当点击球角色时,脚本要判断是画线还是点击球角色,首先将角色3移到所画线起点鼠标点击处,这时球和角色3发生碰撞,画线程序就知道不是画线了。角色3不能太大,画线时碰到球角色,可能发生错误。
在这里插入图片描述
角色3的画线脚本如下图。首先建立一个变量:点击球后不画线标识,初始值为0,允许画线脚本工作,当点击球后,球开始移动不再允许画线,置其为1。画线基本要求是:当鼠标按下,从鼠标按下位置开始画线,只要鼠标不抬起,沿着鼠标移动轨迹画线,当鼠标抬起画线结束。鼠标单击两个球以及scratch系统带有绿旗的运行按键、带有红色圆的停止按键和缩放按键时,不画线,碰到红色块时不画线。判断方法是,如鼠标Y坐标大于180或角色3碰到两个球时,不画线。下图第1条脚本是移动角色3到右上角,这样当球移动时不会碰到角色3。第1条判断脚本保证了只有鼠标按下且鼠标在工作区域时开始准备画线。第2条判断脚本保证了鼠标点击了球时不会画线。不碰到红色,在落笔和抬笔之间的脚本移动角色3轨迹被画在屏幕上,碰到红色时不落笔不画线。这里判断鼠标抬起脚本保证鼠标抬起时,画线结束。不知何故,画线脚本只有在全屏模式下才能画线。
在这里插入图片描述
蓝球移动脚本如下图。这里要求球不能穿过黑线和红色方块。要求所画的黑线的X坐标沿着移动方向连续增加(或减少)时,黑线的Y坐标跟着变小或保持不变,换句话说,黑线上不能有突起或坑,否则球将不能通过这个突起或坑。还要求两条黑线之间的距离要大于球的半径,否则球不能在两条线之间正确移动,可试一下,在球上下画两条间距小于球直径的线,点击球后的效果。
在单击蓝色球脚本中,第1条脚本将“点击球后不画线标识”置为1,不允许再画线。其后脚本等待鼠标抬起,避免球移动后,在鼠标点击处画不必要的线。画线可能穿过球,其后脚本首先要判断一下球是否碰到黑色,如是,球要向上离开黑线,否则球向下寻找黑线。第1个如果_那么_否则语句实现了以上功能,否则之后脚本为找到黑线,球连续下降,如果碰到红色,估计还未画黑线,提示,球移到初始位置,停止执行下边脚本。碰到黑色即碰到黑线,Y坐标增加5,使球不再碰到黑线,为下边移动脚本做好准备。下边无条件重复执行中的脚本,是球移动脚本。第一步要判断移动方向。根据前边假设,黑线是斜线,前边脚本已使球未碰到黑线,坐标X增加或减少使其左右移动,必定一边碰到黑线,一边碰不到黑线,显然球的移动方向是未碰到黑线的一侧。这里X坐标增加10,球右移10,如碰到黑色或红色,表示球移动方向是左,否则向右。下边如果_那么_否则语句中,否则之后的脚本使球向右移动,那么之后脚本使球向左移动。向左和向右脚本基本相同,这里仅解释一下向左移动脚本。首先,右移10步碰到了黑色,必须减10步(注意,向右移未碰到黑或红色,不必减10步)。下边重复执行直到碰到黑色或红色脚本是球X坐标减少左移时,是否碰到黑色或红色,不检测Y坐标减少5步碰到黑色或红色情况,因为其后的判断脚本如碰到黑色或红色时,球Y坐标增加5步,使其碰不到黑或红色。这样,球坐标X一直减少向左移,直到碰到黑或红色,退出如果_那么_否则语句,执行下一次循环。这里的所有判断颜色语句中都是是否碰到黑或红色,这是因为球也不能穿过红色的方块。这些脚本能否在更复杂的环境运行,没有进一步测试,如有人发现错误,请告知。
当绿旗被点击的脚本中,首先将球移到初始位置,再重复判断是否碰到ball2。完成角色ball脚本,可以把其所有脚本拖到本文第2图的角色ball2图标中,单击ball2图标可看到和ball完全相同的脚本,只需修改两处:初始位置和判断是否碰到ball。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值