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

Sense HAT扩展板(4)

alienzhangyw edited this page Apr 25, 2020 · 2 revisions

重力钢珠迷宫

本文介绍在Sense HAT上利用重力感应玩钢珠迷宫游戏的教程。BlockPi软件需要更新到v1.1.1以上版本。

演示视频如下:

https://video.zhihu.com/video/1226591380837199872

首先初始化Sense HAT,需要启用陀螺仪和加速度计。设计几个迷宫保存在列表里,红色代表墙,绿色代表目标出口。

建立游戏初始化的函数,随机选择一个迷宫,并且初始化钢珠的位置变量。xy代表钢珠当前坐标,new_xnew_y代表将要移动到的位置。

接着编写主程序:先调用初始化函数,然后是主循环。钢珠在maze迷宫里的位置是第8y+x+1个像素。每次钢珠移动时,先将原像素变黑,然后调用move_marble函数移动钢珠,将新位置变成白色,刷新整个迷宫的显示。如果钢珠移动到了绿色的目标位置,则游戏结束,显示胜利消息,然后按下摇杆重新开始。

最关键的是move_marble函数的编写。Sense HAT上获取的运动方向数据是以飞行器的轴系记录的字典,包含roll、pitch、yaw三个轴转动的角度。

根据pitchroll旋转的角度选择钢珠的移动的方向:

对红色的墙壁进行检测,只有当新位置不是红色才能移动:

完整的move_marble函数如图:

程序全部编写完毕,完整的存档文件在此(右键另存为)。