Skip to content
This repository has been archived by the owner on Jul 11, 2024. It is now read-only.

Sense HAT扩展板(3)

alienzhangyw edited this page Apr 25, 2020 · 2 revisions

贪吃蛇

本文介绍Sense HAT上运行的贪吃蛇程序的编写。

绘制蛇

用一个列表保存蛇头的坐标,一个二维列表保存蛇身的所有像素坐标。蛇头显示为绿色,蛇身为蓝色,方便区分蛇的运动方向。

效果如图:

让蛇动起来

用一个direction变量保存蛇头运动的方向,next变量代表蛇头要前往的像素。如果蛇头向右移动,则蛇头X坐标加一(超出7则变为0),Y坐标不变。原蛇头像素变为蛇身的第一个,蛇身的末尾被移除,新的蛇头坐标为next。循环移动并更新绘制蛇就能让蛇在点阵屏上动起来了。

运行效果如视频:

https://www.zhihu.com/video/1222903128753917952

摇杆控制运动方向

按照上面的思路补全move函数中蛇头向其他三个方向运动的代码,然后在主程序中加入摇杆控制改变direction变量。

运行的效果如视频:

https://www.zhihu.com/video/1222903425219928064

生成苹果

建立draw_apple函数,在随机位置生成一个红色的苹果,注意苹果不能生成在蛇头或者蛇身的位置。如果蛇头碰到苹果,苹果会重新刷新位置。

蛇吃苹果长大

score变量记录蛇吃到苹果的数量。修改move函数,当蛇头前方是苹果时,将score加1,每吃5个苹果,蛇身长度就增加1(不移除尾巴),否则不变(移除尾巴)。

运行效果如视频:

https://www.zhihu.com/video/1222903602823741440

提高难度

主循环里的等待时间间隔越短,蛇运动越快。可以把时间间隔变成pause变量,每吃25个苹果,就将时间缩短一次:

游戏结束

dead标志来判断游戏是否结束。正常游玩时dead为假;在move函数中,如果蛇头碰到了蛇身,则游戏结束,dead变为真。然后显示玩家得分,并将游戏各变量初始化,重新开始。

效果如视频:

https://www.zhihu.com/video/1222903845682139136

完整程序

完整的程序存档文件在这里(右键另存为)。