IRrecv可以用来定义数组吗,描述数组内容的类型为IRrecv的红外接收对象?

基本功能:WASD控制蛇移动,蛇吃到食物身长+1,蛇撞到自己或边界游戏结束。

此程序涉及到一个对象,蛇。

蛇的属性有:蛇头坐标、长度得分,运动方向,以及是否死亡。

操作属性的方法有:初始化、从键盘获取指令、根据指令移动蛇、以及判断蛇迟到食物或是否死亡。

核心过程:创建二维数组map[19][19]作为19x19的地图,通过操作二维数组中的元素从而操作蛇以及食物本身。通过for循环遍历数组每个元素,遇到0打印空白,遇到>0打印蛇,遇到-1打印食物。(算法参考自 知乎 程序员彭瑶)

1.5.2从键盘获取指令函数

注意此处要进行两个判断,目的是防止蛇的转向一次性超过180°,造成程序混乱。

1.5.4判断是否吃到食物以及蛇是否over

}//否则继续循环直到食物成功生成

1.5.5默认构造函数

障碍物对应到地图上的元素值为-2,加入初始化障碍物函数。

列举穿墙的四种情况,对应新的蛇头生成的位置。(在这里就直接枚举了,也可以用算法)

}//否则继续循环直到食物成功生成

2.LED点阵实现贪吃蛇

红外遥控器及红外接收器

图片来自佑來老师的Arduino教学视频

上图是引脚与LED灯的坐标的对应关系。如果我们想点亮第1列第4行的LED就需要让L4的引脚高电平,C1的引脚低电平。(也有可能恰好相反)我们的接线需要满足下列数组

在红外遥控器上每一个按键对应了不同的红外信号,由接收器接收后对应不同的编码值。需要在写代码前通过预实验获取编码值,在用宏定义的形式写在代码上。

使用红外遥控器及解码器需要包含头文件“IRremote.h”(需要从网上下载外部的库),其中需要用到两个类:IRrecv 和 decode_results,负责接收和解码。

2.3.1需要用到的成员函数或变量

贪吃蛇在硬件上的实现,算法不会改变,代码主要需要改变的是获取指令的方式以及打印的方式。

获取指令:可以与Arduino交互的硬件有很多种,实际上只需要两个引脚的电平状态就可以满足4种不同的蛇运动方向的指令(高高/高低/低高/低低)。在这里不推荐使用自复位按钮,灵敏度可能达不到。此设计选用的是红外遥控器及红外接收器的装置,满足灵敏度与无线传输。

打印方式:创建二维数组map[SIZE][SIZE]并操作map,用for循环遍历map,遇到蛇身和食物点亮第i行j列的LED灯。其中需要用到的函数为: digitalWrite

else{ //如果未接收到红外信号 { //分析移动的结果,当蛇撞墙或撞自己的时候返回值为1

关于闪屏的现象:这个硬件版贪吃蛇的时间比我做控制台还要早,当时还没意识到其实LED点阵屏是可以不闪屏的,因为LED点阵与控制台不同,控制台如果不清屏的话就会一直向下打印下去,但是这个不清屏,只要map改变了就可以打印。

参考资料:彭瑶.贪吃蛇(c语言).自学编程之道.知乎

}

/*需要操作的产品标识符*/ /*需要上报和订阅的两个TOPIC*/ /*根据自动计算的用户名和密码连接到Alinyun的设备,不需要更改*/ /*初始化Alinyun的配置,可自动计算用户名和密码*/ /*设置回调函数,当收到订阅信息时会执行回调函数*/

,来满足我们的各种自动化需求。

  • 配置arduino程序中的参数

FireBeetle-ESP32采用CH340串口芯片,在绝大部分的设备中,都可以免驱使用。若您发现插上设备,驱动没有自动安装,也可以自行手动安装:

更多问题及有趣的应用,可以 进行查阅或发帖。

}

我要回帖

更多关于 如何定义数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信