此文以当代保守的华夏象棋为布景,为完结华夏象棋对弈的智能化、主动化,首要协商了一种以华夏象棋为依靠来完结智能棋盘的软硬件打算。
熟稔棋的历程中,哄骗光电管施行连续的扫描,按照每个棋子品种码施行判定,按照每个棋子场所码施行定位,而且明白棋手遵照瓜代的方法施行行棋,进而断定棋子的挪动方法的。为了断定棋子的挪动能否违规,笔者为每一类棋子特地设定了程序。在竞赛尚未发端时,就要配置好两边的行棋规章历时,若是熟稔棋的历程中起手规守时光到,就会被断定为违规,本棋盘规章当棋手落子后,对方必需在s内终了行棋(总步数不高出99步)。如此就不必棋手屡屡走完棋施行人为按压计时(计时器),采纳主动化的技巧来揣度子数,取代到人为岗亭,具备全主动成效,极大的浪费了竞赛时的人为成本。
软件打算首要为行棋程序打算,行棋程序首要由计着子数程序、计时器程序、吃棋程序、走棋程序、各棋子行棋规矩判定程序等构成。
软件打算部份要在棋局发端前终了初始化配置,以及棋盘百般棋子的编码配置。发端按键按下后,由主程序连续探测所获得的棋盘列场所的变动,按照不同的棋子的变动,转去履行响应的棋子走子或吃子等相干子程序。
行棋程序中包括行棋规矩是:①红先黑后;②棋子落定后,不得悔棋;③吃棋拿棋后,不得悔棋。
吃棋时,棋手该当先拿起我方棋子,尔后再拿起想要吃的棋子,再将自身的棋子放在被吃棋子的场所上。如“炮”吃“卒”,该当先拿起自身的“炮”,尔后去拿起对方的“卒”,着末将自身的“炮”放在对方从来的“卒”的场所上。
在三条则矩当中,第三条则矩能够施行二选一,为了满意用户操纵的须要本程序设定为先拿起自身的棋子去遮盖敌方棋子。
当一方拿起自身的棋子,落在无棋子的场所上时,即为走棋;移用走棋程序,同时要移用棋子行棋规矩判定程序,判定能否违规;如违规即报警;如无违规矩纪录该棋子的场所编码。当一方拿起自身的棋子,再拿起对方的棋子,并将自身的棋子落在该新场所上时,即为吃棋;移用吃棋程序,同时要移用棋子行棋规矩判定程序,判定能否违规;如违规即报警;如无违规矩纪录该棋子的新场所编码。
棋子的典型编码是不停稳定的,场所编码是跟着行棋的施行而变动的。在发端键按下后,连续探测棋盘数据并与初始值施行对比,直至有变动,即示意有棋子挪动。由挪动的场所码可知是甚么棋子在挪动。
软件打算过程图如图1所示。
棋盘各点的探测扫描程序此程序的成效是对棋盘初始值的探测,以及对各棋子场所变动的纪录是全部软件打算部份的中心,本部份程序如能成功终了,其余的软件部份也能瓜熟蒂落。棋子的典型编码是完结设定好的,而场所编码是跟着行棋的施行而连续改革的。在发端键按下后,连续探测棋盘数据并与初始值施行对比,当棋子场所编码产生变动时,即表明有棋手行棋。由挪动的场所码可知是甚么棋子在挪动。
键盘显示启动程序在键盘显示模块中,公有8个数码管,前四个与后四个各分为一组,前两位显示红方棋手的每步辇儿棋残余时光,三、四位显示红方棋手的着子数,五、六位显示黑方棋手每步辇儿棋残余时光,七、八位显示黑方棋手的着子数。如此就减弱了裁判员的担负,完结主动判定、计时的成效。该部份程序首要终了对走棋残余时光的显示,以及走子数的显示。
对弈子程序打算当棋手发端对弈时,对弈操纵的程序共分为:走棋程序、吃棋程序、行棋规矩。三种程序同时移用。底下以我方走马和走车离别为例施行表明。
1马行棋打算
比如,马的行棋规矩为可走日,行走界限为全棋盘。如图2,能够向中八个方位走,落名望置有对药方时能够直接吃掉,而不成向1处走,为蹩马腿。
当棋手走马时,过程图如图3所示。详细地,须要思考如下状况:
按照能否唯一一个子行为判定移用走棋程序依旧吃棋程序;
若唯一一个子行为则移用走棋程序;
再按照行棋规矩判定能否适合马的行棋规矩,判定办法为横纵坐标中有一项挪动两格另一个挪动一格,如不适合则报警;
若是没有犯规纪录则主动将马的程序编码及挪动场所施行积聚;
如有两个棋子场所产生转变,则断定移用吃棋程序,当棋手吃完棋后,再按照行棋规矩判定能否适合,假如不适合则主动报警;
若是没有犯规纪录则主动将马的程序编码及挪动场所施行积聚;
同时要提防按照当时设定的程序,吃棋时须要先拿起自身的子再去拿对方的子。
详细断定历程为,先按照马的场所编码断定行为的子为马。尔后按照行棋规矩移用马的行棋规矩,只可走日,即纵坐标挪动2,横坐标挪动1;或横坐标挪动2纵坐标挪动为1,若是不适合马的行棋规矩则报警,若是适合则断定能否存在蹩马腿景象,存在则报警,若是不存在则接续;着末断定此步为吃棋依旧行棋,完成。
2车行棋规矩
车走棋时打算程序同理:车的行棋规矩较为简明,只可直走,能够横向直走也能够纵向直走先后左右都可走,中央碰到对药方能够直接吃掉,先后左右为对药方能够直接吃掉。
首先断定车为纵向行走依旧横向行走,若是为纵向行走则纪录下纵向行走的场所编码施行积聚;
尔后再施行断定是行棋依旧吃棋,若唯一车一子施行挪动则为行棋,移用行棋程序;
若行棋完成场所再有其余子被取代则为吃棋,移用吃棋程序;
若是涌现横纵坐标都变动、或许都稳定动、或其余场所子消散等不适合行棋规矩状况涌现时则报警。
3炮行棋规矩
炮的行棋规矩较为特别,走棋时能够直行,纵横方位皆可。吃棋时中央必需隔一个子;炮可向四个方位挪动,也能够吃隔子吃子。如此程序打算时需思考如下环节:
先判定是走棋依旧吃棋,判定横纵坐标能否惟独此中一个有变动;
尔后判定宗旨场所能否有子,若是有子则移用吃棋程序,若是没有子则移用走棋程序;
将走棋的炮坐标和宗旨场所的子以代码模式积聚;
不适合行棋规矩的报警。
本文起因于科技期刊
《电子产物寰球》
年第2期第52页
↓↓↓↓点击浏览原文,