多用的象棋系统-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3331|回复: 0

[项目] 多用的象棋系统

[复制链接]
发表于 2019-4-30 00:42 | 显示全部楼层 |阅读模式
[size=10.5000pt]一、设计背景
这个软件设计之初是希望不用人手,直接用语音控制,可以对局走棋。但随着设计程序的编写,逐渐偏离了初衷,变成了人机智能下象棋工具。

二、对局的双方
人:执红,可以通过触屏或者语音输入(目前语音输入这块还有点问题,可以用串口输入)
机:执黑,采用的是一块RT1052作为主控,计算局面,并且选取最优步。

三、象棋的棋子和走棋规则:
这里就不水字数了。简单说:红先黑后、轮流走棋、杀将算赢。

四、喊棋的规则:
从自己方的右手边开始算“路”分别为1~9路,棋子在哪一路上,就喊棋子名+路号,如炮二;走棋的规则有进、平、退,其中车、兵、帅、炮的进退都是以本方棋子移动步数计算,平则是走到目标的路数,如平五;马、象、士在任何时候,都是以路数为目标的。
如果同一路上有多个棋子,一般采用“前”、“后”来区分,如“前车平三”、“后马退二”。
当兵在同一纵线达到三个,用前中后来区分,达到四个,用前二三四区分,达到5个,用前二三四五区分。
当兵在两个纵线都达到两个以上,此时省略兵,举例:前九平八。

五、语音设计规则
共需要分析出的语音识别包括22个单字,具体为
棋子:
R--114
Q--113
S--115
P--112
O--111
T--116
N--110
数字:
1-49
2-50
3-51
4-52
5-53
6-54
7-55
8-56
9-57
动作:
A--97
B--98
C-退-99
方位:
X--120
Y--121
Z--122

六、AT指令集
AT+ASRADD=yi,49
AT+ASRADD=er,50
AT+ASRADD=san,51
AT+ASRADD=si,52
AT+ASRADD=wu,53
AT+ASRADD=liu,54
AT+ASRADD=qi,55
AT+ASRADD=ba,56
AT+ASRADD=jiu,57
AT+ASRADD=ju,114
AT+ASRADD=ma,113
AT+ASRADD=pao,115
AT+ASRADD=xiang,112
AT+ASRADD=shi,111
AT+ASRADD=bing,116
AT+ASRADD=jin,97
AT+ASRADD=ping,98
AT+ASRADD=tui,99
AT+ASRADD=qian,120
AT+ASRADD=hou,121
AT+ASRADD=zhong,122

[size=10.5000pt]七、工程
[size=10.5000pt]1、各种棋子的走棋规则
根据棋子类型不同,判定目标地址和本棋子之间是否可以走。以车为例,规则是横、竖都可以行进,但不能越过棋子,可以吃掉对方目标地点的棋子。
走棋规则.png
2、棋子生存
游戏开始后,棋子不被吃掉之前,都认为是生存的。可以指定这个棋子位置和类型。
初始化棋子.png
[size=10.5000pt]3、胜负
本方(红)帅被吃掉为负,吃掉对方(黑)将为胜;时间耗尽为负,对方时间耗尽为胜。
胜负判定.png
在本项目中,未考虑和局的计算。
[size=10.5000pt]
[size=10.5000pt]八、代码效果
链接:https://pan.baidu.com/s/1oB3Cy_AgsSAmZrMwO_0Sgw
提取码:8cgt

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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-9-20 22:58 , Processed in 0.075728 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表