一种电子棋盘装置及自动行棋方法 【技术领域】
本发明涉及电子技术,特别涉及一种电子棋盘装置及自动行棋方法。背景技术 个人电脑和国际互联网的普及,为棋类爱好者提供了更多的下棋方式,例如, 可以在个人电脑中安装棋类对弈软件进行人机对弈,或者通过国际互联网与其他棋手进 行网络对弈,但是这两种方式都要求棋手在整个对弈过程中注视电脑屏幕,长时间注视 电脑屏幕会严重影响视力导致近视,尤其是青少年和儿童。
专利申请 CN101332357A 设计了一种电子围棋棋盘,专利申请 200810216691.3 设计了一种电子象棋棋盘,而专利申请 CN101380515A 设计了一种电子棋类棋盘与电 脑系统进行交互的方法。 当所设计的电子棋盘与外部电脑系统相连,并采用专利申请 CN101380515A 所设计的交互方法交换行棋命令和数据时,电子棋盘与电脑系统组成一个 电子棋盘对弈系统,该电子棋盘对弈系统可以运行在 5 种对弈模式下,这些对弈模式的 详细描述,请参见专利申请 CN101380515A。 采用这种电子棋盘对弈系统,棋手可以进 行人机对弈和网络对弈,而由于这两种电子棋盘都使用了真实的棋盘和棋子,且在对弈 过程中不需要注视电脑屏幕,因此保护了视力的同时还获得真实的下棋体验。
专利申请 CN101332357A 所设计的电子棋盘有一个特点,就是在电子棋盘上设 置有行棋位置指示灯阵列,用于指示行棋位置 ( 对于围棋,行棋位置是指某一特定的棋 位,对于象棋,行棋位置是指一特定行棋路径,即源行棋位置和目标行棋位置 ),例如 : 在人机对弈模式下,这些行棋位置指示灯用于指出电脑系统的行棋位置 ;在棋谱演示模 式下,这些行棋位置指示灯用于指出每一步演示 行棋的行棋位置 ;在网络对弈模式下, 这些行棋位置指示灯用于指示网络对端棋手的行棋位置。 行棋位置指示灯指出行棋位置 后,需要棋手代替对方在棋盘上完成行棋。
上述电子棋盘的主要缺点是 :在人机对弈模式和网络对弈模式下,本地棋手必 须根据行棋位置指示灯所指示的行棋位置,代替对方在电子棋盘上完成行棋,即帮助对 方在棋盘上操纵棋子——这导致棋手产生 “左手跟右手对弈” 的感觉,从而降低了真实 下棋的体验。
发明内容
为解决现有技术的以上问题,本发明提供一种电子棋盘装置及自动行棋方法, 用于在采用电子棋盘进行对弈活动时提高棋手的真实下棋体验。
为达到上述目的,本发明提供的一种电子棋盘装置包括电子棋盘,所述电子棋 盘装置还包括行棋装置,所述行棋装置与所述电子棋盘通信连接 ;其中,
电子棋盘,用于获取行棋命令,根据所述行棋命令向所述行棋装置发送相应的 行棋控制指令 ;
行棋装置,用于接收所述电子棋盘发送的行棋控制指令,并根据所述行棋控制指令完成行棋过程。
本发明还提供了一种自动行棋方法,所述方法运用于电子棋盘以及与所述电子 棋盘通信连接的行棋装置中,其中,所述方法包括 :
电子棋盘获取行棋命令,根据所述行棋命令向所述行棋装置发送相应的行棋控 制指令 ;
行棋装置接收所述电子棋盘发送的行棋控制指令,并根据所述行棋控制指令完 成行棋过程。
采用本发明设计的电子棋盘装置及方法进行人机对弈或网络对弈时,由行棋装 置代替对方在棋盘上完成行棋,而不再由本地棋手代替对方完成行棋,这样极大地提高 了对弈活动的真实体验。 附图说明
图 1 为本发明实施例一种电子棋盘装置的结构示意图 ; 图 2 为本发明实施例一种电子棋盘装置的逻辑结构示意图 ; 图 3 为本发明实施例一种电子中国象棋棋盘与机械臂的安装示意图 ; 图 4 为本发明实施例一种电子国际象棋棋盘与机械臂的安装示意图 ; 图 5 为本发明实施例一种电子围棋棋盘与机械臂的安装示意图 ; 图 6 为本发明实施例一种电子棋盘与机械臂建立通信连接的流程图 ; 图 7 为本发明实施例一种电子棋盘对弈系统示意图 ;具体实施方式
本发明实施例提供一种可自动行棋的电子棋盘装置,使得在使用电子棋盘进行 对弈活动时,棋手只需要完成自己的行棋,无须代替对方在电子棋盘上行棋,这样可以 使棋手获得更加真实的下棋体验。
如图 1 所示,所述电子棋盘装置,包括电子棋盘,所述电子棋盘装置还包括行 棋装置,所述行棋装置与所述电子棋盘通信连接 ;其中,
电子棋盘,用于获取行棋命令,根据所述行棋命令向所述行棋装置发送相应的 行棋控制指令 ;
行棋装置,用于接收所述电子棋盘发送的行棋控制指令,并根据所述行棋控制 指令完成行棋过程。
在电子棋盘外部配备一个行棋装置,在对弈过程中,由该行棋装置代替对方在 电子棋盘上完成行棋。 电子棋盘通过通信接口与行棋装置连接,并使用该通信接口向行 棋装置提供数据和命令,由行棋装置在电子棋盘上执行行棋。 行棋装置与电子棋盘通过 一个通信接口连接。 通信接口可采用有线方式的直连接口,例如串行接口、并行接口、 USB 接口或其他特定物理接口,也可以采用无线连接接口,例如红外线接口和无线电接 口。 当采用有线方式的直连接口时,行棋装置与电子棋盘通过物理连接线连接,例如串 行连接线、并行连接线或 USB 连接线,此时,电子棋盘上还设置有连接插口,且电子棋 盘和行棋装置都设置有 相应的接口电路,例如 RS232 串口电路、 USB 接口电路或并行接 口电路,这些接口电路属于现有成熟技术,本发明实施例不再详细描述。如图 2 所示,电子棋盘主要用于获取行棋命令,根据所述行棋命令和当前电子 棋盘上的棋子状态向所述行棋装置发送相应的行棋控制指令,具体包括 :
行棋命令获取单元,用于获取行棋命令 ;
行棋控制指令发送单元,用于在所述行棋命令符合行棋规则的条件下,根据所 述行棋命令向所述行棋装置发送相应的行棋控制指令。
可选地,所述电子棋盘还包括行棋检查单元,用于检测所述行棋命令获取单元 获取的行棋命令是否符合行棋规则。
可选地,电子棋盘还可以包括人工智能单元,指示灯状态控制、按键状态检测 等其他辅助功能。 如果电子棋盘不包括人工智能单元,则需通过接收与电子棋盘通信连 接的网络侧发送的对弈方的行棋命令,或者通过接收与电子棋盘通信连接的本地电脑通 过人工智能计算出的行棋命令等方式来获取行棋命令,此时,所述电子棋盘的行棋检查 单元也可以在与电子棋盘通信连接的网络侧或本地电脑上实现。 如果电子棋盘包括人工 智能单元,即内置有高性能 CPU,则通过执行人工智能软件直接计算行棋位置、向行棋 装置发送行棋命令。 指示灯状态控制、按键状态检测等功能可参见申请人申请的专利 CN101332357A。 所述行棋装置主要用于接收所述电子棋盘发送的行棋控制指令,并根据所述行 棋控制指令完成行棋过程,具体包括 :
行棋控制指令接收单元,用于接收所述电子棋盘发送的行棋控制指令 ;
行棋控制单元,用于根据所述行棋控制指令进行行棋控制。
可选地,行棋装置还可以包括查询单元,用于根据所述接收的行棋控制指令查 询对应的棋子物理坐标,具体为 :根据预先计算和存储的每个棋位相对于行棋装置定位 原点的相对位置来查询具体行棋棋子的物理坐标。 后面的实施例对 “如何预先计算和存 储每个棋位相对于行棋装置定位原点的相对位置” 等内容进行了详细描述。
可选地,行棋装置还可以包括行棋反馈单元,用于完成行棋后,向所述电 子棋 盘发送行棋完成反馈消息。
行棋装置每次完成行棋后,可以向电子棋盘发送一个行棋完成消息,以便电子 棋盘判断行棋装置的控制是否出现故障,例如,电子棋盘收到行棋装置发送来的行棋完 成消息,但是电子棋盘检测当前棋子状态发现并未真正完成行棋,此时则说明行棋装置 的控制出现了故障或偏差,电子棋盘可以产生告警信息,比如发出告警声音等,以便棋 手及时作出处理,比如复位机械臂或取走机械臂。
行棋装置可以具有不同的物理形态,机械臂是其中的一种形态,本领域的技术 人员完全可以采用能够完成接收行棋控制指令和进行行棋控制的其他行棋装置来实现。
下面对行棋装置的一种形态 - 机械臂的物理结构进行详细描述,一种具有多自 由度的机械臂,能够完成类似人类手臂的各种动作,它通常不具备人工智能和感官系 统,例如视觉系统、听觉系统和触觉系统,因此机械臂的实现简单,成本低廉,适合商 业应用。 机械臂的主要功能,是根据电子棋盘的命令在电子棋盘上完成行棋,即执行放 入棋子、取走棋子和移动棋子等动作。 为了使产品具有更好用户体验,也可以将机械臂 设计成类似机器人的外观和形状。 另外,机械臂也可以被机器人取代,此时,机器人不 需要执行行棋计算和人工智能,也可以不设置视觉系统和位置检测系统——即它是一个
功能简化的机器人。
机械臂一般由电源、控制系统、驱动系统、机械结构和棋子抓取装置等组成, 其中 :控制系统就是机械臂的控制电路系统,它通常由各种传感器、信号处理电路、中 央处理单元 CPU 和存储单元 RAM 等组成,控制系统通过传感器和外部接口收集各种信 号和命令, CPU 执行各种控制计算,最终将控制命令输出到驱动系统,由驱动系统驱动 机械结构完成指定的动作,例如将位于机械臂末端的棋子抓取装置移动到指定坐标位置 处 ;驱动系统,通常由一些微型动力设备组成,例如微型电机以及相应的减速机构,它 们为机械臂的各种动作提供动力和方向控制 ;机械结构,是机械臂的结构部件,包括底 座、立柱、臂杆等,也包括连接这些部件的中间部件,例如螺钉和螺拴 ;棋子抓取装置 是机械臂的一个关键部件,它用于在电子棋盘上完成棋子的抓取、放置和移动等操作, 因此通 常被安装在机械臂的末端。 例如,在棋子中嵌入磁性材料或铁片,在机械臂末端 安装一个自由垂直的圆柱体,圆柱体中设置一个电磁线圈,当机械臂末端的圆柱体到达 指定棋子位置后,控制电磁线圈通电,使电磁线圈产生磁力而将棋子吸附,然后可以移 动棋子,当棋子被移动到指定棋位处后,再控制电磁线圈断电,由于电磁线圈不再产生 磁力而使棋子自动放置在指定棋位处,从而完成棋子的抓取、移动和放置。 机械臂控制棋子抓取装置移动时,必须先准确计算起点位置和终点位置的坐 标,甚至要求计算出移动的轨迹,这样,机械臂的控制系统才能根据起点位置和终点位 置的坐标,计算出控制驱动系统的控制命令和数据,例如控制各电机转动的方向和圈 数。
下面对电子棋盘和行棋装置 ( 以机械臂为例 ) 的定位安装等进行相关说明。
图 3 描述了电子中国象棋棋盘与机械臂的安装位置,图 4 描述了电子国际象棋棋 盘与机械臂的安装位置,图 5 描述了电子围棋棋盘与机械臂的安装位置。 机械臂可以安 装在电子棋盘的 X 轴所在一侧,本发明实施例称之为 B(Bottom) 侧,也可以安装在另一 侧,本发明实施例称之为 T(Top) 侧,甚至还可以安装在其他两侧,本发明实施例仅以 B 侧和 T 侧为例进行描述。
机械臂要控制棋子抓取装置的运动轨迹,它必须设置有自己的坐标系统,例如 图 3 中的 “x-y” 坐标系统,而该坐标系统的原点,本发明实施例称之为机械臂的定位原 点。 本发明实施例假定机械臂的定位原点位于机械臂底座的中心点处,而实际产品中, 定位原点的位置与机械臂的产品设计相关。 如图 3、4 和 5 所示,安装机械臂时,要求机 械臂的定位原点与电子棋盘的轴对称线对齐。 为实现各种行棋计算,电子棋盘都设置有 坐标系统,坐标系统的设置请参见本申请人的其他专利申请 CN101332357A 和专利申请 200810216691.3 的描述,这些坐标系统是电子棋盘为了计算行棋位置而设置的虚拟坐标 系统,在电子棋盘盘面上并没有绘制出这样的坐标系统。 电子棋盘盘面上,每相邻 4 个 棋位所组成的方格的宽度为 “棋格宽度” ;在 B 侧和 T 侧,最外边的棋位到棋盘边缘的 距离为 “棋盘边距”。
为了使机械臂的安装位置与电子棋盘的轴对称线对齐,在电子棋盘和机械臂的 底座上需要设置用于安装的定位孔,或者采取其他方式实现定位,例如,一种简单方便 的安装定位方法,就是在棋盘边缘和机械臂底座的边缘的固定位置处设置磁性材料,如 图 3 所示,这样当需要使用机械臂时,只要将机械臂的底座靠近电子棋盘 B 侧或 T 侧的中
心位置处的棋盘边缘,磁性材料将吸附在一起,自动完成安装和定位,而不再使用机械 臂时,只要用力拉开机械臂即可将机械臂从电子棋盘处分离。
如图 6 所示,电子棋盘与机械臂除了必须完成物理连接外,两者还必须完成通 信连接。 电子棋盘上电启动后,周期地向通信接口发送连接请求消息,直至收到连接响 应消息。 而机械臂每次收到连接请求消息后,立即应答一条连接响应消息。 这样,一旦 机械臂接入电子棋盘,很快便收到连接请求消息,而应答连接响应消息后,双方就建立 了通信连接关系。 当然,电子棋盘与机械臂之间还可以采用其他方法来建立通信连接, 例如,由机械臂周期地发送连接请求消息,而由电子棋盘应答连接响应消息。
下面对如何预先计算和存储每个棋位相对于行棋装置 ( 以机械臂为例 ) 定位原点 的相对位置进行相关说明。
机械臂要在电子棋盘上完成行棋,必须准确计算出每个棋位相对于机械臂定位 原点的相对位置,并存储这些相对位置信息。 即需要计算出每个棋位在机械臂 “x-y” 坐标系统中的坐标,并存储这些坐标,这样,机械臂才能准确控制棋子抓取装置的移动 行程和位置。
一种可行的方法是,在机械臂安装完成并完成与电子棋盘的通信连接后,电子 棋盘向机械臂提供关键数据,由机械臂计算并在内存中存储每个棋位相对于定位原点的 位置坐标。 注 :对于不同的机械臂,它们的安装底座可能具有不同的尺寸,而且它们的 定位原点也可能不同,因此,最佳地是由机械臂根据自身的尺寸和定位原点的位置,来 计算电子棋盘上各棋位相对于定位原点的位置坐标。 其具体过程如下 :电子棋盘与机械臂建立通信连接后,电子棋盘立即向机 械臂 发送一条数据指示消息,消息中携带以下参数 :
MsgType Pos 1 字节 1 字节 消息类型。 该参数指出消息数据的所携带的消息类 型,即 “数据指示”。 安装位置。 该参数指出机械臂安装在电子棋盘的 B 侧 还是 T 侧,例如,0 表示 B 侧、1 表示 T 侧。 电子棋盘上 可以设置自动检测装置,例如,在电子棋盘的 B 侧和 T 侧中间位置设置一个光敏元件,安 装机械臂后,机械 臂会遮挡住该光敏元件,电子棋盘向机械臂提供关键 数据之前,可以通过两侧的 光敏元件检测机械臂位于 B 侧还是 T 侧。 机械臂位于电子棋盘的不同侧边,其计 算棋位的坐标的算 法略有不同。 棋盘类型。 该参数指出电子棋盘是围棋棋盘、中国象 棋棋盘还是国际象棋棋盘,例如,1 表示围棋、 2 表示 中国象棋、3 表示国际象棋。 棋盘规格。 该参数指出围棋棋盘的规格大小,即规格 线数 ( 例如 19 行、19 列 ),对于其他类型的电 子棋盘, 该参数无效。 棋格宽度。 该参数指出棋盘上相邻 4 个棋位所组成的 方格的宽度,单位为毫米 mm。 棋盘边距。 该参数指出最外侧棋位到棋盘外边缘的距 离,单位为毫米 mm。 棋盘高度。 该参数指出棋盘盘面的高度 ( 或者棋盘的 厚度 ),单位为毫米 mm。 注 :通常,棋盘的 底面与机 械臂基座的底面处于同一平面。 棋子高度。 该参数指出棋子上表面到下表面的距离 ( 或者棋子的厚度 ),单位为毫米 mm。BoardType Lines Grid Margin1 字节 1 字节 2 字节 2 字节 2 字节BoardHeight QiziHeight 2 字节
机械臂获得上述关键数据后,根据其定位原点的设置,可以计算出电子棋盘盘 面上每个棋位相对于定位原点的坐标,例如图 3 中,机械臂定位原点到电子棋盘边缘的 距离为 K,那么机械臂收到上述数据指示消息后,可立即按照下列计算式计算出电子棋盘上每个棋位相对于定位原点的坐标值,并存储在内存数组中 :
[X][Y].x = (X-4)×Grid
[X][Y].y = (K+Margin)+Y×Grid
其中,0≤X≤8、0≤X≤9。[3][4].x,表示棋位坐标为 (3,4) 的棋位在 x-y 坐标系统 中的横坐标值, [3][4].y,表示棋位坐标为 (3,4) 的棋位在 x-y 坐标系统中的纵坐标值, 如图 3 所示。 如果机械臂安装在 T 侧,则采用另外一种计算式,这里不再描述。
机械臂完成上述坐标计算后,进一步判断棋位的坐标是否超出机械臂的行程范 围,如果超出行程范围,会导致机械臂无法对超出行程范围的棋子进行操控,因此,机 械臂应进行声、光提示,以提醒用户更换合适的机械臂。
机械臂在收到行棋指令后,可以根据行棋指令指示的行棋棋位查询棋位的物理 坐标,然后再根据这些物理坐标计算出控制驱动系统的控制命令和数据,例如各电机转 动的方向和圈数,这样,就可以控制机械臂上配备的棋子抓取装置,进行取走棋子、放 下棋子和移动棋子的操作。
上述实施例是由机械臂获得关键参数后计算每个棋位相对于定位原点的位置坐 标,当然,也可以在机械臂安装完成并完成与电子棋盘的通信连接后,由电子棋盘来自 动计算每个棋位相对于定位原点的位置坐标,这种情况下,将由机械臂向电子棋盘发送 数据指示消息,并提供相应的关键数据,电子棋盘发送的行棋控制指令中将直接携带行 棋棋位的物理坐标。
若对弈过程中机械臂与电子棋盘的通信中断,只要通信连接被再次建立,电子 棋盘将再次向机械臂提供上述关键数据。 因此,在对弈过程,用户可以随时接入任何一 种能够提供行棋功能的机械臂,机械臂接入后,立即处于工作状态。
本领域的技术人员可以想到,以上所述机械臂的数量可以为一个,也可以为多 个,为了提高机械臂行棋的效率,可以设置两个或多个机械臂,特别在有 “吃子”( 对方 棋子被吃掉,需拿走 ) 的情况下,多个机械臂可以同时动作,达到提高效率的目的。 其 连接和定位方式,与一个机械臂类似,只是程序实现稍有差异,在此不详细赘述。
另外,本发明实施例提供了一种自动行棋方法,运用于与行棋装置通信连接的 电子棋盘中,具体包括 :
电子棋盘获取行棋命令,根据所述行棋命令和当前电子棋盘上的棋子状态向所 述行棋装置发送相应的行棋控制指令 ;
行棋装置接收所述电子棋盘发送的行棋控制指令,并根据所述行棋控制指令完 成行棋过程。
一局对弈过程,就是对弈双方交替行棋的过程。 电子棋盘会根据对弈模式、 当前行棋方棋子颜色和本地棋手的棋子颜色,判断当前由哪方棋手行棋,例如围棋对弈 中,在网络对弈模式下,若本地棋手使用黑色棋子,而当前由白方棋子行棋,则电子棋 盘就可以判断当前应由网络对端的棋手行棋,即由对方行棋。 当对方棋手行棋完毕后, 其行棋的位置信息将通过网络传递到本地棋手的电子棋盘,电子棋盘接收对方的行棋信 息 ( 对于围棋,就是行棋位置和被吃棋子信息,对于象棋,就是行棋路径 ),也就是行棋 命令后,电子棋盘向行棋装置发送行棋控制指令,命令行棋装置代替对方在电子棋盘上 行棋。所述自动行棋方法具体包括 :电子棋盘获取行棋命令,检测所述行棋命令是否 符合行棋规则 ;如果不符合规则,则反馈出错信息,此时电子棋盘继续等待接收下一条 行棋命令,不发送行棋控制指令给行棋装置 ;如果符合规则,则根据所述行棋命令和当 前电子棋盘上的棋子状态进一步判断是否有被吃棋子 ; 如果有,则在行棋控制指令中 指示本次行棋信息和被吃棋子信息, ;如果没有,则在行棋控制指令中指示行棋信息 ; 然后根据上述判断和计算结果,向机械臂发送相应的行棋控制指令指示行棋装置进行行 棋。
行棋装置收到行棋控制指令后,根据行棋信息以及所述存储的每个棋位相对于 定位原点的坐标来查询相关棋位的物理坐标,并根据所述行棋控制指令以及所述物理坐 标进行行棋控制。
例如 :对于围棋,每次行棋都要放入当前行棋方的一个棋子,根据围棋的行棋 规则,若有棋子被吃,所有被吃棋子需要从棋盘盘面上取走,因此,所述行棋控制指令 可以携带以下参数 :
MsgType 1 字节 消息类型。 该参数指出消息数据的所携带的消息类型, 即 “行棋命令”。 PosX 1 字节 棋位横坐标。 该参数指出行棋棋子的横坐标。 PosY 1 字节 棋位纵坐标。 该参数指出行棋棋子的纵坐标。 1 字节 被吃棋子数量。 该参数指出本次行棋中被吃棋子的数 量。 本次行棋没有棋子被吃时,该参数的值为 0。 EatedNum 可 变 字 被吃棋子信息。 该参数指出所有被吃棋子的坐标信息, 每个被吃棋子的坐标包括横坐标和纵坐标,例如奇 EatedInfo 节 数字 节记录的是横坐标,偶数字节记录的是纵坐标。
对于象棋,每次行棋都要移动当前行棋方的一个棋子,根据象棋的行棋规则, 若有棋子被吃,被吃棋子需要从电子棋盘上取走,而且被吃棋子总是位于行棋棋子被移 动后的目标棋位处因此,所述行棋控制指令可以携带以下参数 :MsgType消息参数 消息参数 消息参数 PosX1 PosY1 PosX2 PosY2 EatedInd
1 字节长度 长度 长度 1 字节 1 字节 1 字节 1 字节 1 字节消息类型。 该参数指出消息数据的所携带的消息类型,描述 描述 描述 即 “行棋命令”。 横坐标 1。 该参数指出行棋棋子的源棋位的横坐标。 纵坐标 1。 该参数指出行棋棋子的源棋位的纵坐标。 横坐标 2。 该参数指出行棋棋子的目标棋位的横坐标。 纵坐标 2。 该参数指出行棋棋子的目标棋位的纵坐标。 吃子行棋指示。 该参数指出本次行棋中是否有棋子被吃, 例如,1 表示本次行棋中有棋子被吃,0 表示无棋子被吃。
所述行棋装置,例如机械臂,收到行棋控制指令后,根据消息指示的棋位坐 标,例如图 3 中的棋位 (3,4),在上述 “预先计算和存储每个棋位相对于行棋装置定位 原点的相对位置” 中叙述的已存储的坐标对应关系中查出该棋位相对于定位原点的坐标 值,然后控制机械臂执行行棋操作。
对于围棋,机械臂将从固定位置的棋盒中取出一个棋子并放入指定的行棋位 置,若是吃子行棋,机械臂将所有被吃棋子从棋盘上取走,并放入固定位置的棋盒中 ;
对于象棋,如果 “吃子行棋指示” 指示本次行棋有棋子被吃,机械臂先将被 吃棋子 ( 即位于目标棋位处的棋子 ) 取走并放入固定位置的棋盒中,然后将行棋棋子从源 棋位移动到目标棋位 ;
至于机械臂如何根据棋位的物理坐标控制棋子抓取装置完成行棋操作,属于控 制领域的现有技术,在此不再赘述。
如果对弈活动过程中机械臂失效,例如不能完成行棋或者行棋错误,棋手可以 立即中断电子棋盘与机械臂的连接,例如拔掉机械臂与电子棋盘的通信连接线,然后由 自己代替对方完成行棋。 因此,本发明实施例中,当机械臂失效时,不会导致本局对弈 活动无法继续进行。 下面以一种电子棋盘对弈系统作为一种具体实施例来对以上方法进行详细 说 明,如图 7 所示,所述对弈系统是由电脑系统、电子棋盘以及机械臂组成的。
人机对弈时,通常棋手执红色棋子先行棋,电脑系统执黑色棋子后行棋,当然 棋手也可以使用黑色棋子,例如在启动人机对弈之前,棋手可以通过电子棋盘上的按键 或者电脑系统提供的人机界面,为自己选择黑色棋子,此时则由电脑系统先行棋。
1. 安装、启动对弈系统
棋手按图 7 连接电脑系统、电子棋盘和机械臂,然后上电启动这些设备。 电脑 系统与电子棋盘、电子棋盘与机械臂将自动建立通信连接。 电子棋盘与机械臂建立通信 连接后,立即向机械臂发送数据指示消息,将关键数据提供给机械臂。 机械臂根据这些 关键数据和自身的设计参数,计算电子棋盘上每个棋位相对于机械臂的定位原点的物理 坐标,并将计算出的坐标结果存储在一个二纬数组中,以便后续行棋控制时查询指定棋 位的物理坐标。
2. 启动人机对弈
棋手通过电子棋盘上的按键或者电脑系统提供的人机界面,将对弈模式设置为 人机对弈模式,并设置人工智能的级别。 通常电子棋盘上设置有 “开始对弈” 按键,按 下这个按键后,即启动了人机对弈活动。
3. 棋手行棋过程
对弈活动启动后,电脑系统判断当前应由黑方首先行棋,因此向电子棋盘发送 状态更新消息,消息中指出当前行棋方为红方,电子棋盘收到状态更新消息后,点亮电 子棋盘上的状态指示灯,指示棋手行棋。
棋手在电子棋盘上移动自己的棋子,完成行棋,例如将棋位 (1,2) 处的红色 “炮” 移动到棋位 (1,4)。 电子棋盘将自动检测到棋手已经完成行棋,并计算出行棋棋 子移动的路径,包括源棋位的棋位坐标和目标棋位的棋位坐标,例如 (1,2)、 (1,4), 然后,电子棋盘向电脑系统发送行棋指示消息,消息中指出棋手的行棋信息。 电脑系统
中,行棋检查单元将根据行棋信息,判断棋手的行棋符合规则,还进一步判断本次行棋 无棋子被吃,最后,电脑系统刷新内部存储的棋子状态信息,并将该棋子状态发送给电 子棋盘,然后切换到由另一 方行棋的状态,即由电脑系统行棋的状态。 电子棋盘收到所 述棋子状态后,记录该棋子状态,用于下一步行棋的检测。
4. 电脑行棋过程
由电脑系统行棋时,电脑系统首先向电子棋盘发送状态更新消息,指出当前行 棋方为黑方,电子棋盘收到状态更新消息后,点亮电子棋盘上的状态指示灯,指示当前 由电脑系统行棋。
发送完状态更新消息后,电脑系统将执行人工智能单元,计算最佳的行棋位 置,例如如图 3 所示,计算出的最佳行棋是黑色 “马” 从棋位 (3,4) 移动到棋位 (5, 5)。 同样地,行棋检查单元判断人工智能单元计算出的行棋符合规则,且进一步判断本 次行棋中有棋子被吃,例如红色 “炮” 被吃。 电脑系统向电子棋盘发送行棋控制指令, 消息中指出电脑系统的行棋路径为 (3,4) 至 (5,5),且当前有棋子被吃。
电子棋盘收到行棋控制指令后,由于当前由电脑系统行棋,因此电子棋盘向机 械臂发送行棋控制指令,消息中同样指出行棋路径为 (3,4) 至 (5,5),且当前有棋子被 吃。 电子棋盘向机械臂发送完行棋控制指令后,开始实时检测电子棋盘上的棋子状态变 化,以判断机械臂是否完成行棋。 而机械臂收到行棋控制指令后,将根据消息中携带的 棋位坐标,在上述二维数组中查找棋位 (3,4) 和 (5,5) 所对应的物理坐标。 由于当前有棋子被吃,因此机械臂控制棋子抓取装置移动到棋位 (5,5) 处,将 该位置处的红色 “炮” 吸起,然后将其移动到固定位置的棋盒处,放下红色 “炮” 这个 棋子到棋盒中。 然后,机械臂再次控制棋子抓取装置移动到棋位 (3,4) 处,吸起该棋位 处的黑色 “马”,并移动到棋位 (5,5) 的位置,放下黑色棋子 “马”。 然后,机械臂 将棋子抓取装置移动到初始位置,以便准备下一次行棋。
此时,电子棋盘将立即检测到电子棋盘上的棋子状态已经发生变化,且机械臂 已经代替电脑系统在电子棋盘上完成了行棋,于是,电子棋盘向电脑系统发送行棋完成 消息,指出电脑系统的行棋已经完成。 电脑系统刷新内部存储的 棋子状态信息,并将该 棋子状态发送给电子棋盘,然后切换到由另一方行棋的状态,即由棋手行棋的状态。 电 子棋盘收到所述棋子状态后,记录该棋子状态,用于下一步行棋的检测。
后续的处理过程,就是不断重复步骤 3 和 4 的过程,直到对弈活动结束。 对弈 活动是否结束,通常由电脑系统根据特殊的判决算法来判断,如何实现算法已经超出本 发明实施例的范围。
本实施例中,步骤 4 中移动黑色 “马” 吃掉红色 “炮” 是一个假想的行棋步 骤,在实际对弈时,第二步行棋通常不会出现 “马” 吃 “炮” 的情况,除非是残局对 弈。
可见,采用本发明实施例后,机械臂可以代替电脑系统在电子棋盘上完成行 棋,而无须棋手去帮电脑系统在电子棋盘上行棋,这样棋手可以获得更好的、真实的下 棋体验。
对于网络对弈,其行棋控制过程与人机对弈类似,差别仅仅在于 :人机对弈 时,棋手的对手是电脑系统,因此对手的行棋是电脑系统通过执行人工智能而计算出来
的 ;网络对弈时,棋手的对手是网络对端的棋手,因此对手的行棋是对方棋手思考后完 成的行棋。 网络对弈时,对方棋手完成自己的行棋后,其电脑系统将通过互联网将行棋 信息发送到本地棋手所使用的电脑系统。 行棋信息如何在互联网上传递,通常采用 IP 技 术,且属于现有技术,因此这里不再描述。
可选地 :机械臂每次完成行棋后,可以向电子棋盘发送一个行棋完成消息,以 便电子棋盘判断机械臂的控制是否出现故障,例如,电子棋盘收到机械臂发送来的行棋 完成消息,但是电子棋盘检测棋子状态发现并未真正完成行棋,此时则说明机械臂的控 制出现了故障或偏差,电子棋盘可以产生告警信息,比如发出告警声音。
上述实施例是以图 7 所示的连接方式为基础,描述人机对弈的处理过程。 电脑 系统、电子棋盘和机械臂之间还有一种连接方式,即 :电脑系统与电子棋盘连接、电脑 系统与机械臂连接。 这种连接方式下,机械臂不再连接电子棋盘, 因此,机械臂的控制 命令来自电脑系统。 对于这种连接方式,电子棋盘与电脑系统建立通信连接后,需要上 报电子棋盘的关键参数,机械臂与电脑系统建立通信连接后,也需要上报机械臂的关键 参数,而由电脑系统根据所述关键参数计算和存储电子棋盘盘面上每个棋位相对于机械 臂定位原点的坐标。 对于这种连接方式下的行棋处理与上述实施例类似,因此不再详细 描述。
采用本发明实施例设计的电子棋盘装置进行人机对弈或网络对弈时,由行棋装 置代替对方在棋盘上完成行棋,而不再由本地棋手代替对方完成行棋,这样可以极大地 提高对弈活动的真实体验,不再有 “左手跟右手对弈” 的感觉。 行棋装置作为电子棋盘 的外部辅助设备,用户可以根据自己的需要,随时使用或终止使用行棋装置,而不影响 对弈活动的正常进行——这使得行棋装置的使用更加灵活方便。