This repository has been archived by the owner on Jul 11, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 36
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,需要启用陀螺仪和加速度计。设计几个迷宫保存在列表里,红色代表墙,绿色代表目标出口。
建立游戏初始化的函数,随机选择一个迷宫,并且初始化钢珠的位置变量。x、y代表钢珠当前坐标,new_x和new_y代表将要移动到的位置。
接着编写主程序:先调用初始化函数,然后是主循环。钢珠在maze迷宫里的位置是第8y+x+1个像素。每次钢珠移动时,先将原像素变黑,然后调用move_marble函数移动钢珠,将新位置变成白色,刷新整个迷宫的显示。如果钢珠移动到了绿色的目标位置,则游戏结束,显示胜利消息,然后按下摇杆重新开始。
最关键的是move_marble函数的编写。Sense HAT上获取的运动方向数据是以飞行器的轴系记录的字典,包含roll、pitch、yaw三个轴转动的角度。
根据pitch和roll旋转的角度选择钢珠的移动的方向:
对红色的墙壁进行检测,只有当新位置不是红色才能移动:
完整的move_marble函数如图:
程序全部编写完毕,完整的存档文件在此(右键另存为)。