Bingo游戏机03

来自Microduino Wikipedia
Yanglibin@microduino.cc讨论 | 贡献2016年10月25日 (二) 08:36的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

概述

优化检测位置程序,防止“乱拧瞎蒙”的方法刷分。

模块清单

模块

模块 数量 功能
mCookie-Core 1 核心板
电池盒 1 程序下载和供电模块
mCookie-Hub 1 传感器转接板
mCookie-OLED 1 显示
电位器 1 检测旋转
Buzzer 1 发声

其他设备

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

模块搭建

搭建

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

编程

编程思路

判断对齐成立以后,如果100毫秒后旋转电位计值无变化,则成功对齐,其他程序不变。

使用的程序块

开始编程

1、声明变量,存储数据
a变量用来存储随机数,a_random存储随机变化数,b存储文字移动范围,score变量用来储存分数,bingo变量用来存储数字对齐状态,hold变量用来存储对齐一瞬间旋转电位计的原始值。


2、 更改BINGO函数内容
如果判断到数字对齐,则将旋转电位计的值存入hold(这里用的是没经过换算的原始值,因为原始值比较精确),然后延时100毫秒之后如果旋转电位计的值等于hold(100毫秒内,旋转电位计没动过),则认为对齐,执行加分、响蜂鸣器程序。

3、开始函数和显示函数不需要做任何更改。


4、执行函数
最后执行每个函数就行了。



测试结果
上传成功后,OLED第一行显示一个与上次不同的随机数,第二行显示“1 2 3 4 5 6”, 第三行显示SCORE:0。旋转电位计“1 2 3 4 5 6”移动,当随机数与相应数字对齐时,并且保持旋转电位计100毫秒不动,第三行的分数增加,并且蜂鸣器响起。



Q:现在数字对齐后随机数才会改变,我想增加游戏难度,能隔一段时间,更换一次随机数,应该如何做呢?
A:当然可以,我们增加计时函数,如果超过一定时间,就重新生成随机数。

在生成随机数之后开始计时,计时超过3000毫秒时,蜂鸣器低音嘀、红灯闪烁一次、miss设为1(重新生成随机数)。


1、变量声明,存储数据
增加miss变量用来记录超时状态。 执行time_out函数(超时判断)。

2、更改start函数
如果bingo等于1或miss等于1(已超时),则执行重新生成随机数程序,miss变量清零,timer1计时器开始(重新计时)。

3、time_out函数内容。
如果timer1时间大于3秒(随机数已经生成3秒了,还没对齐数字), 则红灯闪烁一下、蜂鸣器发出一声低音嘀声。 miss变量设为1(通知start函数已超时)。

4、显示函数不需要更改。bingo函数不用改。

技术规范

相关案例

Q&A