友情提示:380元/半年,儿童学编程,就上码丁实验室。
之前的课程我们完成了snake和apple的生成、重叠的部分。
也就是数据体系的调整。
今天我们来设定一下snake的移动范围。
虽然在屏幕上,snake已经可以自由移动。
但是这个移动是无限距离的,也就是说,点可以移出屏幕到我们看不见的地方。
这当然是一个很重要的问题。
因为贪吃蛇的游戏中,如果点碰到墙壁,是要判断为game over的。
我们可以很好理解,
既然是移动范围的限制,那就一定在移动数据上要作一些文章。
在这个程序中,跟移动有关的,是两部分数据。
1、按键对应的移动值
2、snake坐标的x、y轴值
理论上,这两部分数据,任何一个都能控制snake的移动范围。
但它们之间有什么区别呢?
很容易可以发现,
按键对应的变化,是一个“过程”值。
snake的横纵坐标x、y,是一个“结果”值。
而移动范围本身,其实是一个对于运算结果的约束条件。
所以,结果对应结果,我们只需要在这个上面延伸即可。
snakex和snakey变量我们如果要让她在屏幕中显示,而不跳出屏幕。明显就要设定其最大值和最小值。
根据我们之前的程序,取值范围要跟apple相同。
所以就是(0,0)~(170,120)的范围内。如下图:
首先设定snakex的最大值。
提取出已经处理完成的snakex值,进行一个比较判断。
当snakex值小于0的时候,则snakex固定值为0。
当snakex值大于0的时候,注意!且snakex大于170的时候,则snakex的值固定为170。
请注意这波操作。如下图:
这样一来snakex的取值范围就被限制住了。
而snakey值跟上面的操作其实是一样的。
这里我们大家不要被一堆模块和判断交错的流程搞得一团浆糊!
仔细理解这一团逻辑,在下图中,我已经给大家标出来了。
然后,我们要把这部分放到原来的整个程序中去。
应该放在哪个位置呢?
如上面我们所描述过的,这个部分应该放在:
按键——处理移动数据,这两部份之后。
所以,我们将他们写入到这里,完善这个程序即可。
动手试一试。
本周开始为短篇,每篇解决一个问题,每周我会保证文字数量,所以也就是会多发一篇稿子。
希望能让大家阅读起来更方便!
下次见。