RB29 贪食蛇·中
知识点
- 列表
- 条件嵌套
任务一:添加蛇身(双列表存储)
先从最简单的做起,制作一个蛇头加两节蛇的身体。为了避免一开始代码过于复杂,先让蛇始终在中心出现。
首先来调整一下初始化部分的脚本。
然后,用两个列表分别保存蛇身的行列位置(坐标)。方便起见,我们任选一个方向给紧挨着蛇头放置两个蛇身。(说明计算步骤)
这里的关键是列表的初始化和遍历
任务二:移动蛇身
如果蛇身每一节外观都不同,移动蛇身需要每一节的坐标逐一计算,相对会比较麻烦。 好在目前的设计,每节蛇身外观一致,我们可以用相对简单的方法来实现。
想一想,当蛇头移动,蛇身跟上时,点阵屏上的点是怎么变化的?
……
结论,操作是当蛇头移动时,将蛇头原来的坐标插入到蛇身坐标列表之前。
任务三:变长的蛇身
蛇身变化有两种情况:
- 正常移动:每次移动,插入旧蛇头位置到蛇身最前面,并删除蛇身最后一个点
- 吃到苹果:蛇身增长一节。移动的基本逻辑不变,但是省掉删除最后一个点的操作
差别在于是否删除蛇尾。因此,我们只需要将删除蛇尾的脚本移动到检测有没有吃到苹果的判断过程中去
然后,既然我们已经实现了蛇身的变化,那么最初的蛇就可以从一个点开始。修改我们的初始化过程,还是让蛇头随机出现,并为蛇身创建空列表。
同时,检查吃到苹果的判断这里,还要在删除蛇尾这里嵌套一个条件,避免蛇身列表为空时进行删除操作
完整程序
扩展任务:字符串存储蛇身
(该节内容作为速度快的同学补充,详细内容见下节)