-
Notifications
You must be signed in to change notification settings - Fork 36
Sense HAT扩展板(3)
本文介绍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
完整的程序存档文件在这里(右键另存为)。