zhanzr21 发表于 2022-12-11 13:33

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

本帖最后由 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;
具体代码请参见后面打包下载, 演示视频也在下面. 因为没有精雕细琢, 代码质量不是很高, 恳请高手们批评时留情.
https://v.youku.com/v_show/id_XNTkyNjA2MjcyNA==.html?spm=a2hbt.13141534.1_2.d_0&scm=20140719.manual.114461.video_XNTkyNjA2MjcyNA==






xu@xupt 发表于 2022-12-12 14:51

板子不错啊

LOVEEVER 发表于 2022-12-23 13:35

楼主的思想很好!代码可读性还可以!

tpgf 发表于 2023-1-4 15:43

不知道程序里边是否需要添加一定的算法呢

八层楼 发表于 2023-1-4 15:54

在switch语句中调用的函数能发一下出来吗

观海 发表于 2023-1-4 16:04

像这种工程 可以在后台操作相关的数据吗

guanjiaer 发表于 2023-1-4 16:21

这个游戏机需要随机数产生模块吗

heimaojingzhang 发表于 2023-1-4 16:29

非常不错啊还是第一次看见这种应用的开发

keaibukelian 发表于 2023-1-4 16:42

这种小的程序的容错率怎么样 会不会出现判定语句中没有的情况呢

Jacquetry 发表于 2023-1-5 17:09

程序里边是否需要添加一定的算法

zhanzr21 发表于 2023-1-13 00:30

LOVEEVER 发表于 2022-12-23 13:35
楼主的思想很好!代码可读性还可以!

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

zhanzr21 发表于 2023-1-13 00:31

tpgf 发表于 2023-1-4 15:43
不知道程序里边是否需要添加一定的算法呢

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

zhanzr21 发表于 2023-1-13 00:31

八层楼 发表于 2023-1-4 15:54
在switch语句中调用的函数能发一下出来吗

下载连接中包含所有代码

zhanzr21 发表于 2023-1-13 00:32

观海 发表于 2023-1-4 16:04
像这种工程 可以在后台操作相关的数据吗

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

zhanzr21 发表于 2023-1-13 00:32

guanjiaer 发表于 2023-1-4 16:21
这个游戏机需要随机数产生模块吗

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

zhanzr21 发表于 2023-1-13 00:33

heimaojingzhang 发表于 2023-1-4 16:29
非常不错啊还是第一次看见这种应用的开发

哈哈,娱乐一下

zhanzr21 发表于 2023-1-13 00:34

keaibukelian 发表于 2023-1-4 16:42
这种小的程序的容错率怎么样 会不会出现判定语句中没有的情况呢

靠代码保障, 默认情况就是不中奖{:smile:}

zhanzr21 发表于 2023-1-13 00:35

Jacquetry 发表于 2023-1-5 17:09
程序里边是否需要添加一定的算法

全套工程代码都可以下载.{:smile:}

jaredzhai 发表于 2023-1-23 14:14

我是用keilMDK 5.36 编译不了, 提示说缺文件啊比如: mm32_device.h
楼主可以提供更完整的工程文件吗?

zhanzr21 发表于 2023-1-24 20:20

jaredzhai 发表于 2023-1-23 14:14
我是用keilMDK 5.36 编译不了, 提示说缺文件啊比如: mm32_device.h
楼主可以提供更完整的工程文件吗?...

上传的压缩包包含所有经过我修改过的文件,你说的那些是设备驱动,BSP,SDK之类. 灵动支持工程师说keil自带的驱动库缺少一些内容,需要到官网下载motion sdk. 之后需要根据你的sdk的路径对工程做一些调整.
页: [1] 2
查看完整版本: 【EV Board (MM32L0136C7P)测评】+第二篇_简易游戏厅水果机