废电脑回收:基于单片机的棋盘设计

编者按本文主要探讨了我国传统的象棋对弈与单片机技术相结合的方法,通过软件编程技术、电子技术与单片机应用技术的结合,可以更加方便有效的提升象棋对弈的乐趣和效率。

摘要本文摒弃了诸多传统象棋的弊端,减轻了下棋人员的负担,增加了下棋的趣味性,实现自动采集对局信息发送到采集服务器进行处理的功能,具体包括语音提示,计着子数,自动计时,判断行棋是否符合规则等功能。

本系统是基于嵌入式单片机技术,利用相关光电检测等技术,自主实现棋盘的裁判功能,具有价格便宜,性价比高,制作简单,易于实现功能扩展等优点。文章重点对棋子编码及程序逻辑控制方面进行了探讨。

引言

笔者进行本文章研究的目的和意义体现在这些方面将信息化技术引入到中国象棋这项运动中来,促进其参与品味的提升,在一定程度上解放棋手和裁判,使得中国象棋这项运动变得更加简单,进一步拓宽中国象棋运动的视野,吸引更多的人参与到此项运动中来。

文章的主要工作是如何在保持棋手对垒惯性思维的基础上,将先进的软硬件技术应用到象棋这一项传统运动及项目中来,利用信息技术完成记录、裁决等操作,充分发挥传感器、单片机等设备,以及C语言编程技术等电子信息专业的所学知识来完成计时、声音提示、判断行棋规则等重要功能。

此课题将改变老式象棋诸多弊端,提高比赛的品味和档次以及减轻棋手负担,提高对局质量,实现自动采集对局信息发送到采集服务器进行处理的功能,能够自动判断棋手下棋是否符合规则,做出判断,并且自动记录棋手步数。具体包括自动计时,语音报警,自动判断规则等功能。

中国象棋的每个棋子摆放的位置均为横纵交叉点上,而本次论文设计引用了文件[1-2]中的传感器技术,为每个交叉点上均采用一个光电传感器来接收棋子的移动或者变更信号,根据每个棋子的初始位置判断棋子种类,根据棋子的运动轨迹判断每个棋子是否符合行棋规则。弈棋交替进行,直到某一方的将或者帅被对方吃掉为止。

比赛时,双方轮流倒计时,即一方棋子落地开始为另一方倒计时,另一方的思考时间不能超过倒计时的时长。行棋前,智能棋盘会根据棋子所处的位置及其类型,对所有的棋子展开编码处理,任何棋手完成一步行棋后,棋盘都会再次进行扫描棋子的位置码和种类码并及时更新,直到本局对垒结束。

由于篇幅关系本文主要探讨棋盘的软件设计。

1棋盘棋子编码

为了使棋盘设计更加人性化,更加方便选手完成比赛,也为了使棋盘更加的人性化,将棋盘及棋子根据其位置进行了编码,中国的象棋棋盘如图1所示,有横9,纵10,共计90个格,交叉点为90个。红黑双方交替行棋,每人轮流走一步,可走棋、可吃棋,将帅吃掉为赢。

image.png

图1象棋初始棋盘

1.1棋盘坐标编码

为了清楚知道下棋过程中,每个棋子行走的位置,先将棋盘的每个格进行编码,本着通俗易懂,易于理解的原则,将棋盘编码。

中国象棋中共有7种棋子,红黑双方棋子对称,这样将棋子按照种类进行编码,如表1所示,这样编码的好处就是,因为红黑双方棋子初始状态完全一样,只需判断正负符号就可以判断处棋子是哪一方的,0即为无棋子,空格。

表1棋子种类编码

红帅

红车

红马

红炮

红相

红士

红兵

无棋子

1

2

3

4

5

6

7

0

黑将

黑车

黑马

黑炮

黑象

黑士

黑卒

-1

-2

-3

-4

-5

-6

-7

1.2棋子个体编码

编码完棋盘、定义完棋子种类,则需要将棋盘坐标与棋子个体进行一一对应,先将棋子个体进行编码,如表2所示,注意“0”为无棋子,其中车、马、炮、士、象双方均为两个,故占用两个编码,兵双方各占用五个。

表2棋子个体编码

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

无棋子

黑将

黑车

黑马

黑炮

黑士

黑象

黑兵

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

红帅

红车

红马

红炮

红士

红象

红卒

1.3棋盘索引数组

棋盘索引数组是将棋子种类编码与棋盘坐标编码有机的结合在一起,能够完成根据棋手走的每步棋子进行调用修改,并储存到单片机程序当中去,这里的数组代表的是棋子的位置以及移动的位置,数组的编码即表示棋子的实际位置。

这里引用的为一维数组,此数组简单方便,运算较少、方便调用,并且比较直观。中国象棋的初始局面下,棋盘索引数组如下所示

Boardlndex[90]={-2,-3,-6,-5,-1,-5,-6,-3,-2

0,0,0,0,0,0,0,0,0,

0,-4,0,0,0,0,0,-4,0,

-7,0,-7,0,-7,0,-7,0,-7,

0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,

7,0,7,0,7,0,7,0,7,

0,4,0,0,0,0,0,4,0,

0,0,0,0,0,0,0,0,0,

2,3,6,5,1,5,6,3,2,}

棋盘使用之前还要经过下面三个步骤[3]。

1)使用前先将所有棋子初始化

voidInitchessman();//初始化所有棋子,以及坐标

2)然后定义象棋棋子的结构体

structChessman

{

charname[10];

ID3DXMesh*mesh;

D3DXVECTOR3pos;

BoolAlive;

IDirect3DTexture9*texture;

POINTcoord;

};

Coored为棋子在数组中的坐标,数组Chessman*ary[10][9]为相应棋盘所在的位置,pos为空间位移,alive是棋子存活,mesh为每个棋子指向的指针,name是名字;其他除了chessman指针以外的部分为空格null。

3)规则设定绘制

在使用时,为了正确的选取棋子,让棋子能够按照规则正确的行走,调取了如下函数

①RayGetPickRay(int,int);//获得选取射线;

②voidInitChessman();//初始化所有棋子,以及坐标,

③boolIsMovingOk(int,int);//是否能行走到某一个点上;

④boolGetPlanePickPoint(D3DXVECTOR3,D3DXVECTOR3,Ray);//通过拾取射线与棋盘,从而得到拾取点;

⑤boolPickChessman(Ray);//是否拾取棋子;

2下棋子程序设计

当棋手开始下棋时,下棋使用的程序共分为走棋程序、吃棋程序、行棋规则。三种程序同时调用,下面以我方走马和走车分别为例进行说明。

2.1帅行棋设计

帅的行棋规则实现方法与前面车和马类似。首先是否符合行棋规则,行棋范围为九宫格内部,帅每步只能走一步,可上可下可左可右。然后判断走棋还是吃棋,中间出现不符合行棋规则的地方则报警,如图2所示。

image.png

图2帅行棋图

帅与将行棋规则一样编程原理如图3所示。

image.png

图3将和相行棋程序框图

程序如下

if(toY>2||toX<3||toX>5){//出了九宫格

Returnfalse;

}

if((Math.abs(fromY-toY)+Math.abs(toX-fromX))>1){//只能走一步

returnfalse;

}

2.2象行棋规则

象的行棋规则与士和马类似,象不能过河,存在蹩象眼的情况,象行走田字,即象只能够跨格走斜线,象只能走到田字格对角线三个位置上,而不能走到其他位置[4-5]。当棋手走象时,步骤如下。

1)根据是否仅有一个子动作判断调用走棋程序还是吃棋程序。

2)若仅有一个子动作则调用走棋程序。

3)再根据行棋规则判断是否符合象的行棋规则,判断方法为横纵坐标中横和纵向分别移动两格,如不符合则报警。

4)如果没有犯规记录则自动将象的程序编码及移动位置进行储存。

5)若有两个棋子位置发生改变,则判定调用吃棋程序,当棋手吃完棋后,再根据行棋规则判断是否符合,如若不符合则自动报警。

6)如果没有犯规记录则自动将象的程序编码及移动位置进行储存。

7)同时要注意根据事先设定的程序,吃棋时需要先拿起自己的子再去拿对方的子。

所以其程序如下所示

if(toY>4){//不能过河

returnfalse;

}

if((Math.abs(fromX-toY)!=2||Math.abs(fromY-toY)!=2){//象走田字

returnfalse;

}

if(qizi[(fromY+toY)/2][(fromX+toX)/2]!=0){

returnfalse;//象眼处有棋子

}

2.3兵行棋规则

兵的行棋规则比较简单,与帅类似,每次只能走一步。同时也要判断行棋还是吃棋。行走范围不同过河之前只能直走,而过河之后可以走到任意一格。过河之前只能向前走,过河之后可以向左右前三个方向行走,不过不可回头。

兵与卒行棋规则相同,不再累述。

3结语

本次智能棋盘设计,可在硬件上选用较为常见的单片机进行配置,并且性能稳定,操作简单,方便,整体电路搭配较为完善。

由于篇幅的限制笔者并没有给出所有棋子的编译程序和逻辑图,仅列出了帅士相三种棋子的行棋程序,本论文作为一项智能系统的研究的理论与尝试,想投入实际的应用还有一些技术难点。随着软件设计技术,微电子技术,和相关技术的发展。此课题还会不断完善,不断改进,最终实现功能上的不断更新。

泊祎回收网遵循行业规范,任何转载的稿件都会明确标注作者和来源;

发布者:泊祎回收网,转载请注明出处:https://www.huishou5.net/dianzi/165075.html

(0)
打赏 微信扫一扫 微信扫一扫
泊祎回收网泊祎回收网
上一篇 2021年9月10日
下一篇 2021年9月10日

相关推荐

  • Haswell的新体验,华硕Z87主板京东独家首发

    随着英特尔全新Haswell处理器降临,新一代8系列芯片组主板正式与大家见面。日前华硕与京东商城进行合作,“傲·由芯生华硕Z87系列主板京东独家首发”活动正式启动(http://s…

    2021年7月7日 电子产品
    214
  • 具有集成式驱动器和自我保护功能的GaN FET如何实现下一代工业电源设计

    氮化镓(GaN)半导体的物理特性与硅器件不相上下。传统的电源供应器金属氧化物半导体场效应晶体管(MOSFET)和绝缘栅极双极晶体管(IGBT)只有在牺牲效率、外形尺寸和散热的前提下…

    2021年7月27日
    217
  • 高校仪器设备购置管理办法

    严格执行招投标规定提高仪器设备购置质量以国家及学校有关招投标的法律法规为依据,在仪器设备配置计划的执行过程中,项目建设单位及采购人员本着对学校、对国家负责的主人翁精神,严把质量关,…

    2021年5月4日
    262
  • ThinkPad E455有读卡器吗?ThinkPad E455有什么配件?

    ThinkPadE455有读卡器吗 ThinkPadE455内置读卡器。 屏幕方面,ThinkPadE455采用了一块14英寸全高清显示屏,分辨率为1920×1080。分辨率是消费…

    2021年7月2日
    215
  • 试验机概述及主要种类浅谈

    什么是试验机?它包括哪些产品?对材料、零件、构件进行力学性能和工艺性能试验机仪器和设备为材料试验机。试验机包括:金属材料试验机、非金属材料试验机、工艺试验机、测力(扭矩)机、平衡机、振动台、无损检测仪器

    2021年4月27日
    232
  • 奇来富G-708耳机拆解

    耳机是我们熟悉不过的产品,它已成为我们生活和工作中不可缺少的工具之一。不过如果提到耳机领域的工业设计大奖,我想绝大多数用户都会想到进口品牌。除了漫步者获得过Cebit2008IF设…

    2021年5月10日 电子产品
    228
电话

联系我们

1388-0022-916

在线咨询:点击这里给我发消息

邮件:1395700887@qq.com

工作时间:周一至周日,9:30-18:30,节假日无休

微信
微信
分享本页
返回顶部