《极速赛车》是日本游戏制造商Sidhe公司根据2008年美国华纳兄弟公司制作的同名电影改编而来,玩家可以在游戏中使用电影中登场的全部角色以及他们的爱车,并且也将完美还原电影中赛车比赛的激烈场面。这是一款操作简便的街机赛车游戏,有多条赛道供玩家挑战,但是要在限定时间将赛车开到检查点取得获胜后,才可进入下一个赛道。
作品介绍
今天给大家分享的Scratch作品是《极速赛车》,这是一款竞速避障游戏。游戏的目标是控制好自己的赛车,避开迎面高速驶来的各种车辆,看看谁的分数更高。
点击绿旗,开启游戏。4条赛道上有各种各样的车辆迎面驶来,玩家要通过按下键盘的左右方向键来切换赛道,每顺利的躲开一辆来车,就增加1分,如果不小心撞上了,游戏结束,看看谁的分数更高,赶紧来挑战吧。
核心代码解读
本作品的素材并不多,舞台背景使用默认的背景即可,角色有4个,如图所示:
其中,来车角色有4个造型,用来表示不同的车辆。针对本作品,有两个细节需要注意,也是编程创作时的难点,分别是:
- 如何精确的控制来车的出现位置
- 怎么确保我的赛车不会开出赛道
1.精确控制来车的出现位置
和之前作品有所不同的是,通过克隆生成的来车位置并不是完全随机的,尽管有4条赛道,需要使用随机,但是针对每条赛道,其位置是固定的,要保证来车是在赛道的正中间出现,其坐标分别是(-90,180)、(-30,180)、(30,180)、(90,180)、其中y坐标是相同的,都是180。不同的是x坐标,分别是-90、-30、30和90,如何随机得到这4个值呢?
首先,必须明确的一点是,肯定要使用随机数指令,但是不能直接这么使用:
这么用,得到的随机数是-90到90之间的任意整数,因为随机数指令只能获取连续范围的数字,而-90、-30、30和90这4个数字并不是连续的,中间还隔着好多数字呢。
要想解决这个问题,可以有如下两个方法:
- 使用列表
- 借助数学数学运算
第一种方法是使用列表,将4个坐标数字保存到列表中,然后再使用随机数指令随机获取列表中的项目,创建列表如图:
然后使用获取列表项指令结合随机数指令,代码如图所示:
这样就可以随机获取列表中的x坐标值了。
第二种方法,是直接使用数学运算,由于-90、-30、30和90这四个数字有一定的规律,就是依次相隔60,因此我们可以利用乘法将连续的数字放大一定倍数,从而得到不连续的数字,比如针对1、2、3、4都放大60倍,于是就变成了60、120、180和240,然后再利用加减法可以任意调整初始数字,比如我们把这4个放大的数字分别减去150,就可以得到-90、-30、60和90,对应的代码如下:
很显然,这种方法更加简单,但是对数学知识的灵活运用有着更高的要求,所以说,编程和数学关系密切,相辅相成,学习编程可以提升数学思维,反之学习数学,可以让编程变得更加的优雅高效。
2.确保赛车不离开赛道
第二个需要注意的细节就是在使用左右方向键控制赛车的时候,赛车不能离开赛道跑到草坪上去,这个又该怎么实现呢?
每切换一条赛道,坐标相应的要增加/减少60步,如果不加以限制,那么赛车必然会跑到草坪上去的,因此,需要加一个限制条件,当赛车在最左边的赛道上时,再按下左键,就不做任何处理,关键是这里的条件是什么呢?
当左移的时候,x坐标在不断的减小,当切换到最左边的车道上时,x坐标的值为-90,此时就不能再往左移动了,所以,可以继续左移的条件就是 x坐标 > -90,所以,针对左移,对应的代码如下:
相应的,右移也可以使用相同的方法处理,代码如下:
作品效果
Scratch极速赛车作品的完整效果如视频所示:
暂无评论内容