Bingo游戏机05

来自Microduino Wikipedia
跳转至: 导航搜索

概述

完善游戏机,实现储存最高纪录的功能。

模块清单

模块

模块 数量 功能
mCookie-Core 1 核心板
电池盒 1 程序下载和供电模块
mCookie-Hub 1 传感器转接板
mCookie-OLED 1 显示
电位器 1 检测旋转
Buzzer 1 发声
ColorLED 1 彩色灯
摇杆 1 相当于游戏手柄,输入控制

其他设备

  • USB数据线*1
  • 传感器连接线*4
  • 传感器外壳
  • 乐高或其它固定结构

模块搭建

搭建

  • 将模块和传感器组装起来:
    • 将红色的核心模块,电池底座、OLED与绿色的扩展模块吸在一起;
    • 将蜂鸣器连接在Hub的8/9管脚;
    • 将旋转电位计连接在Hub的A0管脚;
    • 将全彩LED连接在Hub的6/7管脚;
    • 将摇杆连接在Hub的A2管脚。
    • 将USB连接线一端插入电池底座,另一端连接电脑。

编程

编程思路

其他程序思路与上堂课一样,需要加上最高纪录的存储和比较程序。游戏开始时显示最高纪录,当游戏结束后,判断是否打破最高纪录,如果是则更新最高纪录。

使用的程序块


开始编程

1、声明变量,存储数据
top变量用来储存最高纪录。


2、 初始化函数
初始化函数改为:将EEPROM地址0中的值存入top。将top显示到OLED。

3、win函数
win函数内容改为: 如果分数达到15,则将完成时间time和最高纪录top进行对比,如果time小于top(破纪录),则OLED屏幕显示“you are best”和成绩。 将time存入EEPROM的0地址中(刷新纪录),并播放音乐庆祝。 否则只显示成绩、绿灯亮1秒。


4、start函数无更改。

5、display函数无更改。

6、BINGO函数无更改。

7、time_out函数无更改。



测试结果
上传成功后,OLED显示本机最高纪录,按下摇杆后游戏开始,OLED第一行显示随机数每隔3秒变一次,第二行显示“1 2 3 4 5 6”, 第三行显示SCORE:0。旋转电位计“1 2 3 4 5 6”移动,当对齐一段时间后才得分,第三行的显示得分会改变,当得分超过15时,如果用时更短(破纪录)则OLED屏幕显示“you are the best”和成绩,并播放音乐庆祝,否则只显示成绩、绿灯亮1秒。等待摇杆按下重新开始游戏。



Q:EEPROM里我们存储最高纪录的地址中,可能有很久以前存入的数据,我们还需要在游戏中加入直接清除最高纪录的功能。
A:我们可以写入一个时间比较大的值,替换时间最少的就可以。

其他程序思路与一样Bingo 04一样,需要加上清除最高纪录的程序。


增加clear函数
如果摇杆左摇,在EEPROM的0地址中写入99(99秒,极慢的纪录。如果把纪录写为0,那么将再也不会被打破),在OLED屏幕上显示“clear top”, 蓝灯点亮1秒

执行函数。

技术规范



相关案例

Q&A