6.8 基于Arduino的俄罗斯方块游戏
6.8.1 实现的功能
本节将使用LabVIEW及Arduino设计实现一个“俄罗斯方块”的游戏。玩家通过摇杆控制方块左移、右移、旋转及快速下移。可以记录玩家分数,随着玩家分数及游戏等级的增加,游戏难度也将逐渐加大。
6.8.2 所需硬件
Arduino Uno R3板、摇杆模块。使用摇杆进行俄罗斯方块游戏的控制,摇杆上的左右键控制方块左右移动;摇杆上的向上键为方块旋转;摇杆上的向下键为加速下移。
6.8.3 程序设计及实现
本示例设计的游戏前面板如图6-44所示。主界面游戏区域使用一个15行10列的二维布尔数组控件实现,运动图块使用4行3列的二维布尔数组控件实现。程序可以显示玩家的分数及游戏的等级。游戏的程序框图如图6-45所示。程序框图中主要包含三个子VI,分别是improveKey.vi、HumanInteraction.vi和GameFlow.vi。improveKey.vi主要是用来实现消除抖动,避免误操作;HumanInteraction.vi主要是根据用户的输入来对运动块进行控制,比如向右移动运动块、向左移动运动块、旋转运动块等。HumanInteraction.vi的程序框图如图6-46所示,该VI中还包括另外一个子VI即drawBlocks.vi,该子VI的作用主要是对游戏区前界面进行更新,drawBlocks.vi程序框图如图6-47所示。
GameFlow.vi用来控制整个游戏的流程,该子VI内实现了流程控制的状态机,该状态机包含以下几个状态:MAKENEWBLOCK、SHOWNEWBLOCK、CHECKING、SCORING、WAITING、SLIDING。通过该子VI实现整个游戏流程的控制,GameFlow.vi的程序框图如图6-48所示。