第七课 赛马

今日任务:

今天我要和同学们一起来设计一个赛马的小程序,你可以控制程序中的一匹马,然后按Xtron上的向右方向键(或其他按键),让这匹马跑起来,按下Xtron上的A键(或B键),马儿跳起来越过跑道上的蓝色线条。 当然,如果想成为第一匹冲线的小马,那就要看你的运气和按键的使用了!

任务拆解:

../../../_images/SM1.png

动手操作:

第一步:设计游戏主场景、失败场景、胜利场景。

../../../_images/SM2.png ../../../_images/SM3.png ../../../_images/SM4.png ../../../_images/SM5.png

第二步:确定主持人角色、小马角色(自己控制的小马, 通过颜色编辑的方式修改一下颜色,进行区分),将以上各个角色摆放至舞台之上,如下图:

../../../_images/SM6.png ../../../_images/SM7.png

第三步:角色全部就位,下面我们要考虑如何脚本的问题了,我们先从主持人开始, 主持人的功能是讲解游戏规则和被点击之后游戏开始,我给大家些提示:

../../../_images/SM8.png

如何实现支持人被点击后,游戏开始呢?

../../../_images/SM9.png

想想!谁要接收这个广播呢?

不要以为上面的想清楚了就结束了, 这个主持人被点击之后还能一直待在舞台上么?如果想让这个主持人被点击之后消失掉,怎么实现?

../../../_images/SM10.png

第四步:编程时,头脑一定要清晰,刚才我问了一个问题,谁应该接收start game广播呢?答案肯定是小马们了, 接下来就是比较关键的为小马编写脚本,我们这步先为陪跑的小马编写脚本,最后在为我们控制的小马编写脚本。

../../../_images/SM11.png

给小马们设定一个初始位置x和y,统一在起跑线位置出发。

../../../_images/SM12.png

这步有什么用?为什么是随机数?

../../../_images/SM13.png

这个颜色就是终点线的颜色!

../../../_images/SM14.png

陪跑的小马碰到终点线,应该有什么操作?想一想!

提示:

../../../_images/SM15.png

这个hit可以理解为撞(终点)线的意思!那么,问题又来了,谁接收这个hit广播呢?

第五步:我们为自己控制的小马(本例中蓝色小马)编写脚本。

../../../_images/SM11.png

给小马设定一个初始位置x和y,统一在起跑线位置出发。

../../../_images/SM12.png

重复执行什么?我们这匹自己控制的小马身上肩负的使命可不少啊!首先,按下右键,他可以移动;其次,按下A或B键, 他可以跳跃;然后,如果他第一个冲到终点,游戏胜利!不是第一个冲到终点,游戏失败! 还有,碰到蓝色线条游戏失败!肩负着这么多使命(判断),头脑中的脚本就成型了。

右键移动:

../../../_images/SM17.png

这步想明白了么?

../../../_images/SM18.png

终点胜利:这步你好好想想!为啥自己控制的小马到了终点就胜利呢?

../../../_images/SM19.png

A或B键跳跃:

../../../_images/SM20.png ../../../_images/SM21.png

A或B键跳跃的脚本我实现的比较笨,你自己想想有没有更好的跳跃方式,可以越过蓝色线条!

碰到蓝色线条失败:

../../../_images/SM22.png

或自己控制的小马脚本到这还么有结束,为啥?刚才我问了一个问题,为什么其他陪跑的小马碰到终点线要判断一下自己是不 是第一个过线的,那么自己控制的小马为什么不需要判断直接就认定游戏胜利呢? 原因是,那个hit的广播其实就是广播给自己控制的小马的!

../../../_images/SM23.png

这下明白了吧!

第六步:把陪跑小马的脚本依次复制给角色2、4、5、6,别忘了改一下x和y的值!这是是否细心的问题,当然,如果没改出了错,你肯定也知道哪儿错了!

第七步:别忘了我们的场景哟!

../../../_images/SM24.png

第八步:运行一下你的程序,看看有没有什么bug。

课后反思:

(1)如果一开始我不指定哪匹小马是我控制的,我在游戏中随机选择一个小马进行比赛,这个怎么实现?

(2)无论游戏胜利和失败,我想让主持人出来说胜利或失败,这个怎么实现?