打印
[MM32软件]

【EV Board (MM32L0136C7P)测评】+第二篇_简易游戏厅水果机

[复制链接]
887|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanzr21|  楼主 | 2022-12-11 13:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhanzr21 于 2022-12-11 13:39 编辑

#申请原创#
首先声明一下子, 赌博有害, 本人有亲身的惨痛教训, 选择做这个测试只是为了学习交流.

拿到开发板子后, 在官方例子的帮助下, 陆续搞清楚了板子上大多数外设的用法. 现在再写外设也没有多大必要. 于是利用LCD, 按键, LED, 蜂鸣器这些做了一个游戏厅水果机的小例子. 聊博一笑.这种应用, 本质上就是一个状态机. 我把他分为初始化,下氵主界面,告警界面,抽奖界面. 复杂度其实也不高,如果是产品的话,最主要是界面好看, 还有能让游戏厅老板可以控制中奖比率, 且不易为有心人作弊为最佳.因为是测试作品, 这几点上开发板子上都没法做到, 只是一个原型, 旨在技术交流之用.先看看状态机切换.

按键, LCD,蜂鸣器, LED这些外设都是参考官方例子,没啥好说的.LED一共有4个, 从上到下, 分别为2倍,5倍, 15倍, 0倍的选项. 当然只有前面三个可以下氵主.初始的余额为一个吉利数字: 188.
第一个按键是菜单键,在不同选项切换
第二个是下氵主键, 如果余额大于10,那么下氵主10,否则1. 满足虚拟贝者彳走心理.
第三个是开始键, 如果下氵主额不为0,就开始抽奖,否则告警.下完氵主后,会生成一个随机数字, 这个随机数决定了是否中奖. 这里要特别强调, 板子上的芯片无真随机数发生器, 所以产生的中奖结果是可以预测的. 事实上早期真实的水果机上, 大多数我估计也是没有真随机数发生器的. 但是只要序列周期够长, 没有多少人去攻击那个而已.中奖比率由自己随意设定:

本来是想把第四个按键设定为扌是王见的, 即Withdraw, 把赢得游戏币拿走, 但是这个按键与LCD的引脚冲突, 每次按键都会影响LCD显示, 影响整体使用体验,所以取消了.


单个项目上下氵主最高50, 余额最高额度999. 这些跟LCD显示长度有关, 但跟实际产品的限制差不多的.
因为只是一个简易演示Demo,没有增加音乐,闪烁等效果,但是这个板子资源很足, 比如在Flash中存放音乐,利用I2S或者蜂鸣器播放音乐, 是完全可行的.
代码结构上也没有应用RTOS,中断驱动之类, 只用了简易的定时器和状态机来驱动整个应用运行, 感兴趣的同学可以根据代码做出自己的改动.
主函数状态切换非常简单:
while (1) {

switch (g_state) {
case STATE_INIT:
g_state = STATE_BET;
break;

case STATE_BET:
state_bet_proc();
break;

case STATE_RUNNING:
state_running_proc();
break;

case STATE_WARNING:
state_warning_proc();
break;

具体代码请参见后面打包下载, 演示视频也在下面. 因为没有精雕细琢, 代码质量不是很高, 恳请高手们批评时留情.







bet_machine_simple_demo.zip

4.49 MB

代码工程

使用特权

评论回复
沙发
xu@xupt| | 2022-12-12 14:51 | 只看该作者
板子不错啊

使用特权

评论回复
板凳
LOVEEVER| | 2022-12-23 13:35 | 只看该作者
楼主的思想很好!代码可读性还可以!

使用特权

评论回复
地板
tpgf| | 2023-1-4 15:43 | 只看该作者
不知道程序里边是否需要添加一定的算法呢

使用特权

评论回复
5
八层楼| | 2023-1-4 15:54 | 只看该作者
在switch语句中调用的函数能发一下出来吗

使用特权

评论回复
6
观海| | 2023-1-4 16:04 | 只看该作者
像这种工程 可以在后台操作相关的数据吗

使用特权

评论回复
7
guanjiaer| | 2023-1-4 16:21 | 只看该作者
这个游戏机需要随机数产生模块吗

使用特权

评论回复
8
heimaojingzhang| | 2023-1-4 16:29 | 只看该作者
非常不错啊  还是第一次看见这种应用的开发

使用特权

评论回复
9
keaibukelian| | 2023-1-4 16:42 | 只看该作者
这种小的程序的容错率怎么样 会不会出现判定语句中没有的情况呢

使用特权

评论回复
10
Jacquetry| | 2023-1-5 17:09 | 只看该作者
程序里边是否需要添加一定的算法

使用特权

评论回复
11
zhanzr21|  楼主 | 2023-1-13 00:30 | 只看该作者
LOVEEVER 发表于 2022-12-23 13:35
楼主的思想很好!代码可读性还可以!

哈哈,时间紧张,只能说逻辑简单,没有精雕细琢.

使用特权

评论回复
12
zhanzr21|  楼主 | 2023-1-13 00:31 | 只看该作者
tpgf 发表于 2023-1-4 15:43
不知道程序里边是否需要添加一定的算法呢

下载连接中包含所有的代码(除了开发工具配套的库文件之外).

使用特权

评论回复
13
zhanzr21|  楼主 | 2023-1-13 00:31 | 只看该作者
八层楼 发表于 2023-1-4 15:54
在switch语句中调用的函数能发一下出来吗

下载连接中包含所有代码

使用特权

评论回复
14
zhanzr21|  楼主 | 2023-1-13 00:32 | 只看该作者
观海 发表于 2023-1-4 16:04
像这种工程 可以在后台操作相关的数据吗

没有后台, 哈哈, 不过要作弊很简单

使用特权

评论回复
15
zhanzr21|  楼主 | 2023-1-13 00:32 | 只看该作者
guanjiaer 发表于 2023-1-4 16:21
这个游戏机需要随机数产生模块吗

对的, 不然很容易就被人猜出来了. 示例中只是用于演示,不能用于生产环境. 不然老板亏惨

使用特权

评论回复
16
zhanzr21|  楼主 | 2023-1-13 00:33 | 只看该作者
heimaojingzhang 发表于 2023-1-4 16:29
非常不错啊  还是第一次看见这种应用的开发

哈哈,娱乐一下

使用特权

评论回复
17
zhanzr21|  楼主 | 2023-1-13 00:34 | 只看该作者
keaibukelian 发表于 2023-1-4 16:42
这种小的程序的容错率怎么样 会不会出现判定语句中没有的情况呢

靠代码保障, 默认情况就是不中奖

使用特权

评论回复
18
zhanzr21|  楼主 | 2023-1-13 00:35 | 只看该作者
Jacquetry 发表于 2023-1-5 17:09
程序里边是否需要添加一定的算法

全套工程代码都可以下载.

使用特权

评论回复
19
jaredzhai| | 2023-1-23 14:14 | 只看该作者
我是用keilMDK 5.36 编译不了, 提示说缺文件啊  比如: mm32_device.h  
楼主可以提供更完整的工程文件吗?

使用特权

评论回复
20
zhanzr21|  楼主 | 2023-1-24 20:20 | 只看该作者
jaredzhai 发表于 2023-1-23 14:14
我是用keilMDK 5.36 编译不了, 提示说缺文件啊  比如: mm32_device.h  
楼主可以提供更完整的工程文件吗?  ...

上传的压缩包包含所有经过我修改过的文件,你说的那些是设备驱动,BSP,SDK之类. 灵动支持工程师说keil自带的驱动库缺少一些内容,需要到官网下载motion sdk. 之后需要根据你的sdk的路径对工程做一些调整.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天都進步

91

主题

1011

帖子

34

粉丝