795|1

183

帖子

12

TA的资源

一粒金砂(高级)

楼主
 

【DigiKey创意大赛】“九子贤棋”游戏机 项目总结 [复制链接]

 

作品:“九子贤棋”游戏机

作者:nemon


一、作品简介(100-200字)
最近了解到,有一些少数民族棋类游戏,濒于失传,再不抢救一下,就得从民族文化遗产变成传说了。于是基于Maix Bit(K210)做了一个用于“九子贤棋”的游戏机。

“九子贤棋”又名LuckyStar,是中国西部的一种在五角星形棋盘上玩的益智游戏。

游戏开始时在五角星形棋盘的每个直线交叉点各放一枚棋子,然后按玩家意愿,移除一个棋子。之后,玩家可以像跳棋那样,移动一颗棋子到空白的位置,同时可以移除移动过程中跳过的棋子。移动棋子必须沿着直线,一次必须跳过一枚棋子,且只能跳过一枚棋子。当按前述规则无法移动任何棋子时,游戏结束。如果游戏结束时,棋盘上只剩下一枚棋子,则玩家获胜。 

用户可以通过“九子贤棋”游戏机试玩,在玩的过程中熟悉游戏规则,如果不知道怎么走,还可以使用提示功能获得行棋指导。


输入和控制用Grove-Dual-Button实现——一个按钮调整焦点位置,一个按钮按下去触发功能。

 

 

 
主控用Maix Bit套件。这个套件除了K210核心板及板载外设,还附有一个LCD屏和一个摄像头。核心板MCU是嘉楠堪智科技的边缘智能计算芯片K210(RISC-V架构 64位双核,带浮点运算)通过24PIN DVP摄像头接口和24PIN LCD接口与配套的外设连接。既支持MicroPython 语言开发,也提供C 语言 SDK。

 

 

 

二、系统框图
1、外设模块关系

MCU与摄像头、LCD分别通过24PIN DVP摄像头接口和24PIN LCD接口连接,Grove-Dual-Button与板子的1、2、5、6pin相连。

2、软件逻辑关系

把界面操作、控制逻辑、数据和行棋逻辑分开到不同的过程里,再通过类包装,把模块运行和功能分到不同的类中。

 

三、各部分功能说明(图文结合)
1、按钮

Grove-Dual-Button_v1_0_SCH_190916.pdf (22.59 KB, 下载次数: 0)

从模块电路图可以看出,按钮按下时,为低电平。因此应该用下降沿作为中断。

2、重置和行棋

(1)重置操作实际就是把棋局数据初始化。

(2)行棋操作,需要结合按钮中断来进行:绿色按钮用来移动焦点、红色按钮表示在当前焦点进行操作。那么在下棋的时候分为4种情况:

I.第1个棋子,就只有从棋盘去除一种操作

II.如果在一颗棋子上操作,要看是否已经持有棋子。如果没持有,那么当前棋子作为持有棋子,否则将持有的棋子放下。

III.如果在空白的交叉点操作,也要看是否已经持有棋子。如果没持有,那么不做任何事;否则检查持有的棋子是否可以这么走,如果可以持有的棋子放下,取走他路过的棋子,如果不合法就把持有的棋子放回原位置。

3、对战

对战这个事开始想的比较复杂,总觉得得加个线、弄个联网之类的。后来玩起来才发现,这个是单人游戏,不需要实时连接,那么就简单了,只要在每个游戏机上增加计时功能就可以了。

计时我用的是utime包,能统计到毫秒,主要用了3个方法:

(1)t1=utime.ticks_ms() 可以获取精确的毫秒数。

(2)di=utime.ticks_diff(t1, t0) 可以计算 t1-t0 的毫秒数

(3)utime.localtime(int(di/1000))可以把秒换算成“(年,月,日,小时,分钟,秒,工作日,晚期)”格式的的元祖,注意这个元组的起点是2000年1月1日,所以要减掉才能用。

4、行棋助手

助手这个功能,上一篇帖子讲过了用solution来实现,放到MaixBIt上,要解决的就只剩显示了。solution返回的是一个list,里面每一项是格式为“(棋子号,起点,终点)”的元组。因此只要提取出第0项,用“ 'move piece %d from %d to %d'%(tmp_soution[0]) ”生成字符串就可以了。

这里好像有个问题,就是如果对战时,用了“Get TIP”功能,是不是不公平?答案肯定是否定的——虽然K210能跑起来深度优先搜索,但是要用户要花好几秒盯着'WAIT PLEASE'才能看到答案。这就像跨栏比赛,你一路踹倒栏也不犯规,时间依然有效,因为踹栏花的时间代价远大于跨过去。运行起来效果是这样的(现在的建议是把位置7上的棋子移动到0,也就是最上面空出的五角星的尖):

5、OneApp

这个本来是按非抢先的应用框架设计的,但是到了后期发现现有的功能在一个界面里基本能够实现,所以在这个项目里没有发挥什么作用。也许后面增加别的游戏的时候可以用起来。

整体思路有点像arduino,就是把每个应用分成setup、loop两个阶段,但是因为有界面,所以增加了一个repaint的部分。

通过每次调用子应用loop获取该应用当前的状态来决定是否阻塞。其他的就都很好理解了,直接看代码吧。

 

四、作品源码

下载地址 : https://download.eeworld.com.cn/detail/nemon/630781
7百多行也不很长,不好理解的部分都加了密集的注释,还留有很多调试代码,刚好方便各位同学验证。

 

 

五、作品功能演示视频


 

 

六、项目总结

先列一下杂七杂八的项目贴。
1、MAIX BIT KIT开箱

2、MAIX BIT KIT上手流水账

3、MAIX BIT KIT上的简单应用

4、MAIX BIT KIT上的“九子贤棋”

5、MAIX BIT KIT 的按键处理

6、MAIX BIT KIT上“九子贤棋”的核心逻辑

7、增加计时和获取提示

感谢比赛组委会给了我一次熟悉和联系MaixBit这个强大套件的机会,我在做这个项目过程中大量使用了Maixpy IDE,也对Maixpy这一micropython的sipeed发行版的多个库的功能有了深入的认识,复习了深度搜索算法。虽然项目进行的踉踉跄跄,还是终于完成了所有设计功能。以后有时间准备重构一下代码,再增加一些功能、美化一下。

 

七、其他

在此感谢主办方和工作人员以及各位群友!
 

附:word版

“九子贤棋”游戏机 项目总结.doc (458 KB, 下载次数: 2)

补充内容 (2024-1-14 22:01): 视频在沙发层

点赞 关注
 
 

回复
举报

183

帖子

12

TA的资源

一粒金砂(高级)

沙发
 

补视频
 

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
常用网络命令

常用网络命令 计算机网络的主要优点是能够实 ...

各大公司IC类免费样品申请

TPS2000系列数字存储示波器 详细资料申请 http://digital.ni.com/worldwide/china.nsf/sb/Download?OpenDocument&node=162000_zh ...

ucosii在STM32中的移植

10740

液晶1602 显示汉字研究

液晶1602显示字符研究 1602是一款最常用也是最便宜的液晶显示屏。最多可以显示两行标准字符,每行最多可以显示16个字符。 1602 ...

电容的安秒积和电感的伏秒积

  《电工学》或者《电路分析》教材中,对电容的定义是这样的,如图(01),满足图(01)式的电路元件,就是电容。式中i和u都是时间 ...

邀您参加Microchip在线研讨会——为您的IoT传感器设计节能型解决方案

Microchip将于6月29日(周二)举办题为《为您的IoT传感器设计节能型解决方案》的在线研讨会。 543966 在设计电池供电 ...

浅谈驱动芯片的绝缘安规标准

众所周知,各个行业各个领域都有其需要遵循的标准规范,一般会对其产品需要达到的使用条件提出各方面的要求。诸如电机驱动、光伏 ...

【HC32F4A0开发板测评】+I2S语音播放测试

本帖最后由 jinglixixi 于 2023-2-22 09:20 编辑 在HC32F4A0开发板上,为进行音频播放配置了I2S音频电路,所用的芯片为WM8731 ...

超声片/超声换能器/压电陶瓷片驱动波形

超声片/超声换能器/压电陶瓷片驱动波形必须用正弦波 才有良好的效果,比如电声转换效率、波形失真度、功率衰减等;很多负载必须 ...

MicroPython ESP32S3 蓝牙 每包字节大小问题求助

求助各位大佬 我用2块ESP32S3开发板(MicroPython 1.22),1块服务端1块客户端,蓝牙通信已经成功,也交换了MTU,但服务端每 ...

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表