一种棋谱文件的生成方法及系统 【技术领域】
本发明涉及一种棋谱文件的生成方法和系统。背景技术
随着个人电脑和互联网的普及,棋类爱好者们有了更多的下棋方式,例如,可 以在个人电脑中安装棋类对弈软件进行人机对弈,或者通过互联网与其他棋手进行网络 对弈,但是这两种方式都要求棋手在整个对弈过程中注视电脑屏幕,然而长时间的注视 电脑屏幕会严重影响视力,进而导致近视或视觉疲劳,尤其对于青少年和儿童来说,这 个问题则更为突出。 为此,本发明申请人的另外专利申请 200710076128.6 公开了一种电 子围棋棋盘,专利申请 200810216691.3 公开了一种电子象棋棋盘,棋手可以通过这两种 电子棋盘进行本地比赛、人机对弈、网络对弈和棋谱研究,由于使用了真实的棋盘和棋 子,且在对弈过程中不需要注视电脑屏幕,因此保护了视力的同时还获得真实的下棋体 验。专利申请 200710076128.6 和专利申请 200810216691.3 设计的两种电子棋盘都 采用物理接口 ( 如以太网接口、 RS232 串行接口、并行接口、红外线接口、 USB 接口 等 ) 或通信网络 ( 如局域网 LAN、无线局域网 WLAN、国际互联网等 ) 等通信接口与电 脑系统连接,共同组成电子棋盘对弈系统,且电子棋盘与电脑系统之间可采用专利申请 200710076916.5 设计的信息交换协议,实现行棋相关的命令和数据的交换。
在这种电子棋盘对弈系统中,电子棋盘主要执行的功能包括 :扫描棋盘上的棋 子状态、检测行棋、控制行棋状态指示灯、检测按键状态等,电脑系统主要执行的功能 包括 :行棋有效性检查和人工智能计算等。 这种电子棋盘对弈系统充分地利用了电脑 系统强大的计算能力、存储能力和网络访问能力,从而降低电子棋盘产品的复杂度和成 本。
这种电子棋盘对弈系统主要支持五种对弈模式,即本地对弈模式、人机对弈模 式、网络对弈模式、棋谱演示模式和技巧练习模式。 在本地对弈模式、人机对弈模式、 网络对弈模式和技巧练习模式下,电脑系统需要真实、完整地记录对弈过程而形成棋谱 文件。 当电子棋盘对弈系统运行在演示棋谱模式下时,再将这些棋谱文件所记录的对弈 过程真实、完整地演示出来。
目前的棋谱文件是一种文件格式的文件,其主要包括 :标签部分和着法部分。
其中,标签部分都是由方括号 “[]” 表示的内容,每个标签占一行,反映了棋 局的一些基本情况。 例如,中国象棋的记谱规范同国际象棋类似,基本标签有 :
(1)Game :游戏类型,国际象棋没有这个标签,中国象棋的这个标签必须放在 第一位,其值必须为 “Chinese Chess” ;
(2)Event :比赛名 ;
(3)Site :比赛地点 ;
(4)Date :比赛日期,格式统一为 “yy.mm.dd” ;
(5)Round :比赛轮次 ;
(6)Red :红方棋手,不同与国际象棋的 White ;
(7)Black :黑方棋手 ;
(8)Result :比赛结果, “红先胜” 用 “1-0” 表示, “黑先胜” 用 “0-1” 表 示,和棋用 “1/2-1/2” 表示,未知用 “*” 表示。 此外,中国象棋中还包括如下具有 中国象棋比赛特点的标签信息 :
(9)RedTeam 和 BlackTeam :即棋手所属的代表队 ( 俱乐部、棋协、省份或国 家 ),通常写在 Red 和 Black 标签的前面 ;
(10)Opening、 Variation 和 ECCO :开局名称、变例和 ECCO 编号,这些都代表 开局的信息 ;
(11)FEN :开始局面,中局、残局和排局等摆出来的局面,作棋谱记录时通常 要规定这个选项 ;
(12)Format :表示记谱方法,可以是 Chinese( 中文纵线格式 )、 WXF(WXF 纵 线格式 ) 和 ICCS(ICCS 坐标格式 ),默认为 Chinese。
棋谱部分是棋谱文件的主要内容,记录了每一回合正确行棋的着法、评注和结 果。 对于这部分内容的格式,有以下几个规定 :
(1) 棋谱部分必须在标签部分的后面,棋谱部分当中不能插入标签 ;
(2) 每一回合都由 “回合数”、 “红方着法” 和 “黑方着法” 三部分组成,回 合数后面要跟 “.” ( 句点 ),三者之间用两个分隔符隔开,回合之间也用分隔符隔开 ;
(3) 着法的表示必须和 Format 标签相统一,如果没有 Format 标签,对于中国象 棋则用中文纵线格式来表示 ;
(4) 分割符只能是空格、制表符或换行符,一个着法当中不能有分割符 ( 回合数 也一样 ) ;
(5) 评注用花括号 “{}”表示,评注内可以是除花括号以外的任何字符 ( 包括分 割符 ),评注可以插在任何着法的后面,它和着法之间必须用分割符隔开 ;
(6) 整 个 棋 局 结 束 时 必 须 用 “1-0” ( 红 方 胜 )、 “0-1” ( 黑 方 胜 )、 “1/2-1/2” ( 和棋 ) 或 “*” ( 未知 ) 表示结果,结果和着法之间必须用分割符隔开 ;
结果以后只能有评注,不能有着法 ;如果出现标签,则说明这是下一局棋。
下面是一个很经典的例子,这个例子能很好地反映现有技术中中国象棋棋谱文 件的特点 :
[Game″ Chinese Chess″ ]
[Event″许银川让九子对聂棋圣″ ]
[Site″广州″ ]
[Date″ 1999.12.09″ ]
[Red″许银川″ ]
[Black″聂卫平″ ]
[Result″ 1-0″ ]
[FEN″ rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/9/1C5C1/9/RN2K2NR r--01″ ]
{ 评注 :许银川,象棋让九子原属茶余饭后的娱乐,不意今日却被摆上赛桌,更为离奇的是 :我的对手竟是在围棋棋坛上叱咤风云的聂大帅。 }
1. 炮八平五 炮 8 平 5
{ 红方首着架中炮必走之着,聂棋圣还架中炮拼兑子力,战术对头。 }
2. 炮五进五 象 7 进 5
......
7. 车六进八
{ 红车疾点象眼,局势霎时有剑拔弩张之感。 这种对弈不能以常理揣度,红方只 能像程咬金的三板斧一般猛攻一轮,若黑方防守得法则胜负立判。 }
8. 车一进四 炮 2 平 1
......
37. 车五进一 将 6 进 1
38. 车五平七
{ 至此,聂棋圣认负。 与此同时,另一盘围棋对弈我被屠去一条大龙,已无力再 战,遂平分秋色,皆大欢喜。 }
现有技术中的这种棋谱文件格式由于能够记录的信息较少,因此无法在前述各 种电子棋盘对弈系统中用于完整地记录对弈过程而形成可演示的棋谱文件。 发明内容 有鉴于此,本发明中一方面提供一种棋谱文件的生成方法,另一方面提供一种 棋谱文件的生成系统,以得到适用于各类电子棋盘对弈系统的棋谱文件。
本发明所提供的棋谱文件的生成方法,包括 :
对弈活动开始后,对弈系统创建棋谱文件,并向所述棋谱文件中写入描述棋谱 文件整体信息的文件信息、描述一局对弈活动静态信息的对弈信息和初始的对弈结果信 息;
每次行棋结束后,对弈系统完整记录本次行棋过程的行棋信息,及本次行棋结 束后的棋子状态信息 ;
对弈活动结束后,对弈系统记录对弈结果信息,并关闭棋谱文件。
较佳地,所述棋谱文件为二进制的棋谱文件。
较佳地,所述本次行棋过程的行棋信息包括 :正确行棋信息、以及存在错误行 棋时的错误行棋信息 ;
或者包括 :悔棋行棋信息。
较佳地,所述本次行棋过程的行棋信息包括 :行棋序号、行棋时间、棋子信 息、位置信息、特殊行棋指示及存在悔棋行棋时的悔棋步骤数。
较佳地,对应一步行棋的正确行棋、以及存在错误行棋时的错误行棋,所述行 棋序号采用相同的序号。
较佳地,所述文件信息包括 :文件类型标识、文件格式版本和文件来源标识。
较佳地,所述对弈信息包括 :对弈日期、对弈时间、产品标识、棋盘规格、行 棋规则、对弈模式及对应的模式信息。
较佳地,所述对弈模式及对应的模式信息包括 :
本地对弈模式及该模式下的比赛活动名称、比赛活动地点、第一方选手信息、 第二方选手信息和初始棋子布局 ;
或者,人机对弈模式及该模式下的对弈级别、棋子颜色和初始棋子布局 ;
或者,网络对弈模式及该模式下的服务网络名称、第一方用户信息、第二方用 户信息和初始棋子布局 ;
或者,技巧练习模式及该模式下的技巧练习名称和初始棋子布局。
较佳地,所述对弈结果信息包括 :最后棋子布局和产生输赢后的赢棋方信息。
较佳地,该方法进一步包括 :对弈活动过程中,对弈系统根据当前的棋子布局 以及棋手是否执行请求终止对弈的操作实时判断对弈活动是否结束,如果结束,则执行 所述记录对弈结果信息的操作。
较佳地,所述文件信息存储在棋谱文件的起始位置,所述对弈信息存储在所述 文件信息之后,所述行棋信息存储在棋谱文件的尾部,所述对弈结果信息存储在所述对 弈信息和所述行棋信息之间。
本发明所提供的棋谱文件的生成系统,包括 :电子棋盘和电脑系统,
所述电脑系统用于在确认对弈开始后,创建棋谱文件,并向所述棋谱文件中写 入描述棋谱文件整体信息的文件信息、描述一局对弈活动静态信息的对弈信息和初始的 结果信息 ;在每次行棋结束后,接收电子棋盘上报的本次行棋过程的行棋信息,将所述 行棋信息及对应的棋子状态信息写入所述棋谱文件中 ;在确认对弈结束后,记录对弈结 果信息,并关闭棋谱文件 ;
所述电子棋盘用于在每次行棋结束后,将本次行棋过程的行棋信息上报给电脑系统。 从上述方案可以看出,本发明实施例中,由于能够完整的记录每次行棋过程的 行棋信息及每次行棋结束后的棋子状态信息,因此该棋谱文件生成方案适用于各类电子 棋盘对弈系统。
此外,由于现有技术中的棋谱文件格式是文本格式的,因此不利于电脑系统的 读写处理,而且文本文件可在任何文本编辑软件中进行修改,例如,使用 Windows 操作 系统的记事本软件便可以打开棋谱文件并直接修改棋谱的内容一一这导致棋谱文件的真 实性和完整性容易被破坏。 而本发明实施例中采用二进制的棋谱文件格式,不仅利于 电脑系统的读写处理,而且可以使得各类电子棋盘对弈系统得到的棋谱文件不容易被修 改,棋谱文件所记录的对弈过程的真实性和完整性不容易被破坏。
附图说明
图 1 为本发明实施例中棋谱文件生成方法的示例性结构图。
图 2 为本发明实施例中棋谱文件各信息的存储位置示意图。 具体实施方式
本发明实施例中,将棋类对弈活动划分为三个阶段,即对弈活动开始阶段、对 弈活动进行阶段和对弈活动结束阶段,并在每个阶段,完整地记录对弈活动所产生的信 息以及描述对弈活动过程所需要的信息。为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图, 对本发明进一步详细说明。
图 1 为本发明实施例中棋谱文件生成方法的示例性结构图。 如图 1 所示,该方 法包括如下步骤 :
步骤 101,对弈活动开始后,电子棋盘对弈系统创建二进制的棋谱文件,并向所 述棋谱文件中写入描述棋谱文件整体信息的文件信息、描述一局对弈活动静态信息的对 弈信息和初始的对弈结果信息。
实际应用中,棋谱文件也可以为其它格式的棋谱文件,本发明实施例中均以二 进制的棋谱文件为例进行描述。 因为二进制的棋谱文件格式,不仅利于电脑系统的读写 处理,而且可以使得各类电子棋盘对弈系统得到的棋谱文件不容易被修改,棋谱文件所 记录的对弈过程的真实性和完整性不容易被破坏。
步骤 102,每次行棋结束后,电子棋盘对弈系统完整记录本次行棋过程的行棋信 息,及本次行棋结束后的棋子状态信息。
步骤 103,对弈活动结束后,电子棋盘对弈系统记录对弈结果信息,并关闭棋谱 文件。 下面对上述各个步骤进行详细描述。
对于步骤 101 :
对弈活动开始,是指棋手确认电子棋盘上的初始棋子布局已经正确布置后,通 过电脑系统提供的人机界面 ( 例如 “开始对弈” 命令菜单或按钮 ) 或者电子棋盘所设置 的 “开始对弈” 按键,启动对弈活动。 如果是通过电子棋盘所设置的 “开始对弈” 按 键来启动对弈活动,电脑系统将收到一条来自电子棋盘的 “开始对弈” 消息。 注 :初始 棋子布局的定义可参见专利 200810216691.3 中的相关描述。
对弈活动开始时,电子棋盘对弈系统立即创建一个二进制棋谱文件,并对棋谱 文件名称按一定规则进行命名 ( 对棋谱文件命名的规则,可根据实际需要进行设定 ),然 后向棋谱文件写入文件信息、对弈信息和初始的对弈结果信息。 通常情况下,文件信息 存储在棋谱文件的开始部分,紧接着对弈信息和初始的对弈结果信息存储在文件信息之 后。 下面是这三种信息的详细描述。
文件信息
文件信息,就是文件头信息,用于描述棋谱文件的整体信息。 文件信息可具体 包括 :
1. 文件类型标识 (FileTypeID)
该信息可以是一个特殊的 4 字节二进制数,用来标识棋谱文件的类型,其取值 可定义如下 :
围棋棋谱文件的文件类型标识为十六进制数 “0x19740430”
中国象棋棋谱文件的文件类型标识为十六进制数 “0x19730205”
国际象棋棋谱文件的文件类型标识为十六进制数 “0x20011220”
五子棋棋谱文件的文件类型标识为十六进制数 “0x19730521”
2. 文件格式版本 (Version)
该信息用于指出棋谱文件格式的版本号。 具体实现时, Version 的高 4 位可为
大版本号、低 4 位可为小版本号,例如 :当前的版本号为 1.0,则 Version = 16(0001, 0000) ;未来升级到 1.1 版本时, Version = 17(0001,0001)。 在棋谱文件中设置文件格 式版本,是为了使对弈软件能够识别和处理不同格式的棋谱文件。
3. 文件来源标识 (Origin)
该信息用于指出棋谱文件的来源。 本实施例中,棋谱文件可有如下两种来源 :
若棋谱文件为电子棋盘对弈系统在对弈活动中创建的,则可定义 Origin = 1
若棋谱文件为棋谱处理软件转换的其它格式的棋谱文件,则可定义 Origin = 2
在棋谱文件中指出文件的来源,其目的是,在后续处理棋谱文件时,可以进行 差别对待,例如 :如果棋谱文件来源于其他棋谱文件的格式转换,那么电子棋盘对弈系 统就不会对文件中的信息进行严格检查,只重点处理棋谱文件的行棋信息部分 ;对于那 些由电子棋盘对弈系统在对弈过程中产生的棋谱文件,则需要对文件中的信息进行严格 检查,以确保文件信息的有效性和一致性。
4. 保留字段 (Reserved)
保留字段用于在以后版本中对棋谱文件的文件信息进行扩展。 保留字段的长度 为 4 个字节,每个字节被固定地设置为 “0”。 注 :具体实现时,本实施例中所述的所 有保留字段也可以不设置。
对弈信息
对弈信息,用于描述一局对弈活动的静态信息,例如对弈活动的时间和地点、 棋手信息、对弈模式以及与对弈模式相关的模式信息等。 本实施例中,对弈信息可具体 包括 :
1. 对弈日期 (Date)
该信息指出对弈活动发生的日期,它包括年、月、日。
2. 对弈时间 (Time)
该信息指出对弈活动开始时的时间,它包括时、分、秒。
3. 产品标识 (DeviceId)
该信息指出对弈活动使用的电子棋盘的产品标识,其长度为 4 个字节,其中最 高位的 1 个字节为生产商标识,其余 3 个字节为设备标识。 产品标识可以在全球范围内唯 一标识一个电子棋盘产品。 棋谱文件中的产品标识,可用于在大型比赛活动中建立棋谱 文件与比赛棋局之间的对应关系,以帮助比赛组织者高效地管理比赛活动和棋谱文件。 若棋手使用对弈软件进行对弈,或者由其他棋谱文件转换得到棋谱文件,其产品标识设 置为全 0 ;
4. 棋盘规格 (Lines)
该信息指出对弈活动中所用棋盘的大小规格 ( 即棋盘的线数 ),例如,除了 19 线 的标准围棋棋盘外,还有 17 线、15 线和 13 线等小型围棋棋盘。 电子围棋棋盘能够支持 哪些规格,取决于产品的具体实现。 该信息仅用于围棋棋谱文件。
5. 行棋规则 (Rule)
该信息指出棋谱文件记录的对弈活动采用何种行棋规则。 在不同地区、不同国 家和不同时期,会采用不同的行棋规则。 一种行棋规则包含一系列判断准则,因此它应 该是事先设置并存储在系统中的一组数据和判断方法,每种行棋规则具有一个名称或者编号,而行棋规则信息就是记录行棋规则的名称或编号。
6. 保留字段 (Reserved)
保留字段用于在以后版本中对棋谱文件的对弈信息进行扩展。 保留字段的长度 为 4 个字节,每个字节被固定地设置为 “0”。
7. 对弈模式 (Mode)
该信息指出对弈活动的对弈模式。 本发明所设计的棋谱文件支持专利申请 200710076916.5 中的 5 种对弈模式 :本地对弈模式、人机对弈模式、网络对弈模式、技 巧练习模式和棋谱演示模式。 在前 4 种对弈模式下,电子棋盘对弈系统实时地将对弈 过程记录到棋谱文件中,而在棋谱演示模式下,电子棋盘对弈系统从棋谱文件中读取数 据,逐步在电脑系统或 / 和电子棋盘上演示对弈过程。 由于在演示模式下,不需要再次 记录演示过程,因此 GameMode 的取值只包括前 4 种对弈模式 :0,表示本地对弈模式 ; 1,表示人机对弈模式 ;2,表示网络对弈模式 ;3,表示棋谱演示模式 ;4,表示技巧练 习模式。
8. 模式信息
对于不同的对弈模式 ( 棋谱演示模式除外 ),棋谱文件还需要记录与对弈模式相 关的特殊信息,例如 :本地对弈模式下,需要记录比赛活动的名称、地点和参赛选手的 姓名和段位 ;人机对弈模式下,需要记录电脑系统的对弈级别,棋手使用的棋子颜色。 由于不同对弈模式下,需要记录的信息存在差异,因此需要针对不同的对弈模式来设计 棋谱文件所记录的信息。 本发明中,将这些与特定对弈模式相关的信息称为 “模式信 息”。 下面将详细介绍上述 4 种对弈模式下,棋谱文件要记录的模式信息。
本地对弈模式的模式信息
本地对弈模式主要用于以下两种场景 :
朋友之间面对面的对弈
正式比赛活动中的对弈
对于后一种场景,电子棋盘对弈系统需要在棋谱文件中记录与比赛活动相关的 信息。 本地对弈模式的模式信息可具体包括 :
1. 比赛活动名称 (Event)
该信息指出比赛活动的名称,例如 “2008 年全国青少年冠军杯围棋大赛”。
2. 比赛活动地点 (Site)
该信息指出比赛活动的地名,通常为举行比赛活动的城市名,例如 “北京”、 “上海” 和 “青岛”。
3. 第一方选手姓名 (Name1)
该信息指出先行棋棋手的姓名。 对于围棋,使用黑色棋子的棋手为第一方选 手 ;对于中国象棋,使用红色棋子的棋手为第一方选手 ;对于国际象棋,使用白色棋子 的棋手为第一方选手。
4. 第一方选手级别 (Level1)
该信息指出第一方选手的段位或级别,以围棋为例,1 表示 1 段 ......9 表示 9 段。
5. 第二方选手姓名 (Name2)
该信息指出后行棋棋手的姓名。 与 “第一方选手姓名” 的使用相同。
6. 第二方选手级别 (Level2)
该信息指出第二方选手的段位或级别。 与 “第一方选手级别” 的使用相同。
7. 初始棋子布局 (InitMap)
该信息指出对弈开始前的棋子状态信息。 进行让子对弈时,棋谱文件需要记录 对弈前的初始棋子布局。 所谓让子对弈一一对于围棋,就是在对弈前,被让一方棋手先 行棋若干步骤,然后才开始对弈 ;对于象棋,让子对弈包括三种情况 :被让一方棋手先 行棋若干步骤,或者让棋一方棋手的若干棋子被取走,或者前两种情况的组合。 可见让 子对弈时,必须先在棋盘上布置好双方的棋子。 对于技巧练习,同样必须先在棋盘上布 置好双方的棋子,然后才能行棋。 对于象棋对弈,即使不进行让子对弈,每次对弈前也 必须布置双方的棋子。 因此,在本发明中,将这种在对弈之前必须布置的棋子状态称 为 “初始棋子布局”。 对于围棋,若采用专利申请 200710076916.5 所提供的方法,初 始棋子布局包括两个位图 :棋子位置位图和棋子颜色位图 ;对于象棋,若采用专利申请 200810216691.3 所提供的方法,初始棋子布局只有一个位图,它同时包括棋子的位置、 颜色和名称信息。 初始棋子布局的具体定义,可参见专利申请 200810216691.3。 注 :对于非正式比赛,上述比赛活动的名称、地点和选手信息,用户可以根据 实际情况进行设置,例如为朋友之间的对弈活动取一个具有纪念意义的名称等,电脑系 统通常提供有人机界面用于输入上述比赛名称、比赛地点和比赛选手信息,电脑系统还 提供人机界面用于棋手布置让子对弈时的初始棋子布局。
人机对弈模式的模式信息
人机对弈模式下,模式信息可具体包括 :
1. 对弈级别 (IntelLevel)
该信息指出人机对弈时,电脑系统的人工智能的级别,级别越高,代表电脑系 统具有更高的人工智能水平。
2. 棋子颜色 (LocalColor)
该信息指出人机对弈时,棋手使用的棋子颜色,它间接地指明了是否由棋手先 行棋。
3. 初始棋子布局 (InitMap)
该参数与本地对弈模式中初始棋子布局的定义相同。 在人机对弈模式下,也存 在让子对弈的情况,因此需要记录对弈前的初始棋子布局。
网络对弈模式的模式信息
网络对弈模式下,模式信息可包括 :
1. 服务网络名称 (NetName)
该信息指出用户所登录的服务网站名称。 在网络对弈模式下,用户必须首先登 录服务网络 ( 即提供网络对弈服务的网站 ),对弈过程中由网络服务器和 / 或电脑系统自 动记录用户每次网络对弈的棋谱。 棋谱文件中记录的服务网络名称,可以在棋谱文件传 播过程中帮助一些人向指定网站获取原始的棋谱文件或者其他相关的棋谱文件,例如 : 某棋手无意中获得一个棋谱文件,它记录了某个名人的一次网络对弈,该棋手便可以通 过棋谱文件中记录的服务网络名称,向该网站获取这个名人的其他网络对弈棋谱。
2. 第一方用户名 (Name1)
该信息指出先行棋一方棋手的网络用户名。 对于围棋,总是黑方先行棋 ;对于 中国象棋,总是红方先行棋 ;对于国际象棋,总是白方先行棋。 用户名采用字符串类 型。
3. 第一方级别 (Level1)
该信息指出第一方棋手的段位或级别。 以围棋为例,1 表示 1 段 ......9 表示 9 段。
4. 第二方用户名 (Name2)
该信息指出后行棋一方棋手的网络用户名。
5. 第二方级别 (Level2)
该信息指出第二方棋手的段位或级别。
6. 初始棋子布局 (InitMap)
该信息与本地对弈模式中初始棋子布局的定义相同。 在网络对弈模式下,也存 在让子对弈的情况,因此需要记录对弈前的初始棋子布局。
技巧练习模式的模式信息
技巧练习模式下,模式信息可包括 :
1. 技巧练习名称 (Exercise)
该信息指出棋谱文件所记录的是什么技巧练习,例如 “死活棋练习”、 “征子 练习”、 “做眼练习”,等等。 通常,在练习棋谱文件中,会明确指出该技巧练习的名 称,若没有指出,则该参数设置为空值。 注 :练习棋谱文件,是一种专门用于学棋者针 对某种特定技巧进行练习的棋谱文件,它记录有特定的行棋信息,要进行技巧练习时, 先通过电子棋盘对弈系统打开练习棋谱文件,然后与电脑系统进行对弈。 技巧练习与 人机对弈的相同点,都是人与电脑对弈,其差别在于 :技巧练习时,电脑系统不执行人 工智能来计算其行棋位置,它的行棋位置信息已经记录在练习棋谱文件中 ;而人机对弈 时,电脑系统的行棋位置,是靠执行人工智能计算出来的。 如何定义练习棋谱文件,超 出本发明的范围。
2. 初始棋子布局 (InitMap)
该信息与本地对弈模式的初始棋子布局相同。 在技巧练习模式下,虽然不存在 让子对弈的情况,但棋手需要先通过电子棋盘对弈系统打开练习棋谱文件,并按照练习 棋谱文件所记录的棋子布局在棋盘上布置双方的棋子,然后才能行棋。 练习棋谱文件所 记录的这种对弈前要布置的棋子布局,也是初始棋子布局。 可见,当棋谱文件记录的是 技巧练习过程时,棋谱文件所记录的初始棋子布局信息来源于练习棋谱文件。
描述初始的对弈结果信息之前,先对对弈结果信息进行描述。
对弈结果信息,用于指出本次对弈活动的输赢结果和最后的棋子状态,具体包 括以下信息 :
1. 赢棋方棋子颜色 (WinColor)
该信息指出对弈结果中赢棋一方的棋子颜色。 对于人机对弈模式和网络对弈模 式,若在对弈过程中棋手强制终止对弈,则请求终止对弈的那方棋手被认为是输棋方。 WinColor 的取值可定义如下 ( 具体实现时,也可以约定为其它值 ) :
0,表示先行棋的那方棋手获胜,例如,围棋中黑色棋子先行棋,则 0 表示黑方胜出 ; 255,表示后行棋的那方棋手获胜,例如,围棋中白色棋子后行棋,则 255 表示 白方胜出 ;
其他值 ( 例如 128),表示平局,没有胜出方。
2. 赢棋方胜出目数 (WinNumber)
该信息指出赢棋一方胜出对方的棋子目数。 该信息仅用于围棋的棋谱文件,对 于平局,该信息无效 ( 即可以是任意数值 ),对于非平局,该信息必须大于 0。
3. 最后棋子布局 (EndMap)
该信息指出对弈活动的最后一次行棋结束时的棋子布局。 对于非正常结束的对 弈,最后一次行棋结束时的棋子状态作为 “最后棋子布局” 记录在棋谱文件中。 棋谱 文件记录最后棋子布局信息的目的是,当用户查找某局对弈的棋谱文件时,用户通过电 脑系统打开棋谱文件,电脑系统便可以立即在人机界面上显示对弈结束时的最后棋子布 局,以方便用户快速确认打开的棋谱文件是否为自己要查找的棋谱文件。 由于最后棋子 布局描述的也是棋盘上的棋子状态,因此它采用与初始棋子布局相同的信息格式。
初始的对弈结果信息,用于指出在本局对弈活动还未结束前的对弈结果为异常 结束——例如,本实施例中可令 WinColor 等于 100,对于围棋,赢棋方胜出目数为 0,即 本实施例中可令 WinNumber 等于 0。
在创建棋谱文件时便写入初始的对弈结果信息,其目的在于通过对弈结果信息 来记录对弈活动是否为异常结束。 按照这种方法,如果系统故障、系统掉电等异常因 素导致对弈活动被终止,则本实施例的棋谱文件中的对弈结果信息记录了 WinColor 等于 100,如果对弈活动是正常结束的,则 WinColor 等于 0、128 或 255。
对手步骤 102 :
当每次行棋结束后,电子棋盘对弈系统完整地记录每次行棋的行棋信息,包括 行棋过程中的正确行棋信息、以及行棋过程中涉及到的错误行棋、悔棋行棋的行棋信 息,还记录每次行棋结束后的棋子状态信息。
对弈活动一旦开始,对弈过程就是由对弈双方交替行棋的过程。 对弈活动进行 过程中,电子棋盘实时检测棋手在棋盘上的行棋。 每次检测到一次行棋结束后,电子棋 盘将行棋信息上报给电脑系统,由电脑系统判断本次行棋是否有效。 无论行棋是否有 效,电脑系统都将记录本次行棋的行棋信息,并同时在行棋信息中记录本次行棋是否有 效。
对弈活动进行过程中,棋手可以通过电子棋盘上设置的 “悔棋请求” 按键,向 系统请求悔棋处理,电子棋盘向电脑系统发送悔棋请求消息 ;或者棋手通过电脑系统提 供的 “悔棋请求” 菜单或命令,向系统请求悔棋处理。 电脑系统将进行悔棋处理,例如 将棋子状态恢复到本次行棋之前的棋子状态,指示用户恢复棋盘上的棋子并重新行棋。
无论是正确行棋、错误行棋,还是悔棋,电子棋盘对弈系统都记录它们的行棋 信息。
每次行棋结束后,除了记录下列行棋信息外,还将本次行棋结束后的棋子状态 记录到棋谱文件中 “对弈结果信息” 的最后棋子布局 (EndMap) 中,这样,即使本局对 弈被异常结束,例如棋手认输或系统错误导致对弈活动结束,以后打开棋谱文件时,电
子棋盘对弈系统可以立即获得最后棋子布局并向用户显示最后棋子状态。 “对弈结果信 息” 和 “最后棋子布局” 的详细介绍,见前述描述。
行棋信息
行棋信息,用于记录从对弈开始到对弈结束过程中的每次行棋的信息。 为了完 整地记录一局对弈的过程,行棋信息除了记录正确的行棋,还记录错误的行棋,此外, 对弈过程中的悔棋也被记录在行棋信息中。 这样做的好处是 :对于学棋者,在对弈过 程会出现行棋错误和悔棋的情况,若棋谱文件可以真实、完整地记录对弈过程,那么可 以在以后演示棋谱时完整地再现对弈过程——这使得培训老师可以通过演示学生上交的 棋谱文件,更全面地了解学生的下棋情况,有利于教学。 此外,通过完整地记录对弈过 程,使得比赛活动的裁决更加公正。 例如,当比赛双方对比赛结果存在分歧时,可以通 过再现比赛过程来重新裁决。 例如,国际象棋中,通常三次悔棋即被认为认输,如果每 次悔棋都被准确记录,就使得重新裁决依据充分。 由于对弈过程是双方轮流行棋且在棋 盘上完成各种行棋的过程,因此一局对弈活动需要记录所有行棋的行棋信息。 行棋信息 可包括以下信息 :
1. 行棋序号 (Steps)
该信息指出本次行棋属于第几步行棋。 一步行棋是指,行棋方正确地完成一次 行棋。 行棋序号从 1 开始顺序编号。 行棋正确时,行棋序号不会出现重复,但是在行棋 错误时,行棋序号将出现重复,例如,围棋对弈中黑方棋手行棋,第一次行棋,行棋错 误,第二次行棋,仍然行棋错误,再次行棋,行棋正确——那么连续 3 条行棋信息中的行 棋序号相同,且说明该棋手正确完成一步行棋进行了 3 次行棋操作。
2. 行棋时间 (Seconds)
该信息指出棋手完成一次行棋所花费的时间,即上一次行棋完成到本次行棋完 成之间的时间间隔,单位为秒。 在围棋中,若一次行棋中有棋子被吃,那么该行棋包括 放入棋子和取走所有被吃棋子。 悔棋,是指棋手请求悔棋并正确恢复棋盘上棋子状态。
3. 特殊行棋指示 (SpecInd)
该参数指出本次行棋是否为特殊行棋。 即指出本次行棋的特点,例如攻击行 棋、提子行棋、行棋错误和悔棋等等,例如,可定义下列特殊行棋指示 :
0,表示正常行棋——正常行棋作为特殊行棋的一种特例
1,表示错误行棋——即不符合行棋规则的行棋
2,表示悔棋——即棋手反悔已经完成的行棋
3,表示攻击行棋——即本次行棋将吃掉对方的棋子
4,表示提子行棋——即本次行棋立即吃掉了对方的棋子
5,表示升变行棋——即某个棋子升变为另一个棋子,该参数值仅用于国际象 棋
6,表示王车易位——即王和车的位置互换的行棋,该参数值仅用于国际象棋
可见, “特殊行棋指示” 的设置,使得行棋信息不仅可以记录正确行棋和错误 行棋,还可以记录悔棋及其他行棋信息。
4. 棋子颜色 (Color)
该信息指出本次行棋使用的棋子颜色。 对于悔棋,该信息用于指出请求悔棋方的棋子颜色。 该参数仅用于围棋。
5. 棋子名称 (Name)
该信息指出象棋行棋中被移动棋子的颜色和名称。 该参数仅用于象棋,且在悔 棋中无效。
6. 起始位置 (StartPos)
该信息指出本次行棋中行棋棋子被移动前的的起始位置。 对于围棋,该信息也 称为 “行棋位置 (PlayPos)”,也就是新入棋子 ( 即行棋时放入棋盘的新棋子 ) 的位置 ; 对于象棋,该信息就是行棋棋子被移动前的位置。 起始位置包括行棋棋位的横坐标和纵 坐标。 该信息在悔棋中无效。
7. 终止位置 (StopPos)
该信息用于在象棋中指出本次行棋中行棋棋子被移动后的终止位置,包括横坐 标和纵座标。 该信息仅用于象棋,且在悔棋中无效。
8. 升变名称 (NewName)
该信息指出国际象棋的升变行棋中 “兵” 升变后的棋子名称。 该信息仅用于国 际象棋,且在悔棋中无效。 9. 悔棋步骤数 (Repents)
该信息指出悔棋时要返回几步行棋。 悔棋时,需要将棋盘上的棋子状态恢复到 以前的状态,由于一次可以悔棋若干行棋步骤,因此该信息就是指出要悔棋几步行棋。 该信息仅用于悔棋中。
10. 保留字段 (Reserved)
保留字段用于在以后版本中对棋谱文件的行棋信息进行扩展。 保留字段的长度 为 4 个字节,每个字节被固定地设置为 “0”。
对于步骤 103 :
对弈活动结束后,记录对弈结果信息,并关闭棋谱文件。
本实施例中,在对弈活动过程中,电子棋盘对弈系统可不断判断本局对弈是否 已经结束。 例如,对于围棋,可判断双方是否已经无棋可走 ;对于象棋,可判断某方是 否已经被将军而无棋可走。 通常,判断对弈活动结束的同时,系统还会计算输赢方,对 于围棋,还计算赢棋方胜出的棋子数目。 如果某方棋手请求终止本局对弈活动,则作为 认输处理,该方棋手为输棋方 ;如果因为系统故障导致对弈活动结束,则本局对弈活动 为平局,双方无输赢结果。
一旦对弈活动结束,电子棋盘对弈系统将对弈结果信息记录到棋谱文件的 “对 弈结果信息” 中,然后关闭棋谱文件。
可见,通过上述各步骤,从对弈活动开始到结束,电子棋盘对弈系统实时地将 对弈过程记录到棋谱文件中。
具体实现时,本发明一种实施例中的电子棋盘对弈系统中的电子棋盘和电脑系 统可分别执行如下功能 :
电脑系统用于在确认对弈开始后,创建二进制的棋谱文件,并向所述棋谱文件 中写入描述棋谱文件整体信息的文件信息、描述一局对弈活动静态信息的对弈信息和初 始的结果信息 ;在每次行棋结束后,接收电子棋盘上报的本次行棋过程的行棋信息,将
所述行棋信息及对应的棋子状态信息写入所述棋谱文件中 ;在确认对弈结束后,记录对 弈结果信息,并关闭棋谱文件。
所述电子棋盘用于在每次行棋结束后,将本次行棋过程的行棋信息上报给电脑 系统。
此外,本发明其它实施例中的电子棋盘对弈系统中的电子棋盘和电脑系统也可 分别执行其它功能,只要该电子棋盘对弈系统能运行本发明实施例中所描述的棋谱文件 生成方法即可。
下面对本发明实施例中棋谱文件的信息存储结构进行详细描述。
棋谱文件中各信息的存储位置
根据前述描述,棋谱文件记录的信息包括 :文件信息、对弈信息、对弈结果信 息和行棋信息。 其中,文件信息和对弈信息属于静态信息,即在对弈开始之前这些信息 已经明确 ;而对弈结果信息和行棋信息属于动态信息,它们将随着对弈的进行而变化。 因此,棋谱文件中各信息的存储位置可按照图 2 所示位置顺序进行存储 ( 实际应用中,也 可以有其它存储位置行式 ),即 :
1. 文件信息是棋谱文件的头信息,存储在文件起始部位 ; 2. 对弈信息是棋谱文件的静态信息,存储在文件信息之后 ;
3. 行棋信息位于棋谱文件的尾部,以方便在对弈过程中不断在文件尾部追加新 的行棋信息 ;
4. 结果信息位于对弈信息和行棋信息之间。
棋谱文件中各信息的存储结构
1. 文件信息
围棋、中国象棋和国际象棋的棋谱文件使用相同的文件信息,该文件信息的具 体存储格式可如表 1 所示 :
信息参数 FileTypeID Version Origin Reserved
信息名称 文件类型标识 文件格式版本 文件来源标识 保留字段信息长度 4 字节 1 字节 1 字节 4 字节备注保留字段的缺省值可被固定设置为 0表1
表 1 中,FileTypeID 位于棋谱文件的起始位置,即位于文件的第 1-4 字节 ;各信 息在表 1 中的相对位置,就是它们在棋谱文件中的相对位置,例如,保留字段位于棋谱 文件的 7-10 字节处。 后续的其他表格,也是描述各信息在棋谱文件中的相对位置和所需 字节长度。 由于前面已经对各个具体的参数进行了详细的描述,因此在这些表格中,不 再详细描述这些参数的用途和取值。2. 对弈信息
围棋、中国象棋和国际象棋的棋谱文件使用相同的对弈信息,但各自的初始棋 子布局信息的字节长度可以不同,其中围棋可以为 57 字节、中国象棋可以为 50 字节、国 际象棋可以为 32 字节。 对弈信息的具体存储格式可如表 2 所示 :
表2 其中,对应不同的对弈模式,分别有如下几种模式信息的存储结构。 本地对弈模式下模式信息的存储格式可如表 3 所示 :
表3 人机对弈模式下模式信息的存储格式可如表 4 所示 :
表4 网络对弈模式下模式信息的存储格式可如表 5 所示 :
表5 技巧练习模式下模式信息的存储格式可如表 6 所示 :表6
3. 对弈结果信息
围棋和象棋 ( 包括中国象棋和国际象棋 ) 分别使用不同的对弈结果信息,下面分 别对本实施例中各自的对弈结果信息的存储格式进行描述。
围棋使用的对弈结果信息的具体存储格式可如表 7 所示 :
表7 象棋使用的结果信息的具体存储格式可如表 8 所示 :表8
4. 行棋信息
在对弈活动过程中,行棋信息被不断写入棋谱文件中。 围棋、中国象棋和国际 象棋可分别使用不同的行棋信息,即各自需要记录不同的行棋信息,下面分别对本实施 例中各自的行棋信息的存储格式进行描述。
围棋使用的行棋信息的存储格式可如表 9 所示 :
表9 中国象棋使用的行棋信息的存储格式可如表 10 所示 :
表 10 国际象棋使用的行棋信息的存储格式可如表 11 所示 :
表 11 棋谱文件中各信息的数据结构 下面以围棋为例,用 Visual C++ 语言描述其棋谱文件的数据结构。 1. 文件信息的数据结构
2. 对弈信息的数据结构
3. 对弈结果信息的数据结构
4. 行棋信息的数据结构
因此,围棋的棋谱文件的数据结构为 :在实际软件开发中, PlayInfo 是可变长度,其具体的长度与实际对弈的行棋步骤 数相关,这里只是以 500 次行棋为例,描述棋谱文件的数据结构。
本发明实施例中,为了使棋谱文件的内容不易被修改,同时方便电脑系统对棋 谱文件的读 / 写,本发明实施例中的棋谱文件采用二进制文件格式。 棋谱文件可以存储 在磁盘介质中,也可以存储在 RAM 或 ROM 中。 此外,本发明所提供的技术方案,可以 真实、完整地记录围棋、中国象棋和国际象棋的对弈过程。 其中,由于五子棋与围棋采 用完全相同的棋谱记录方法和棋谱文件,因此为避免描述的繁琐,本发明中未针对五子 棋进行单独的描述。 当然,该技术方案也可以用于记录其他棋类棋谱。
可见,由于本发明实施例可以将对弈过程真实、完整地记录到棋谱文件中,例 如错误行棋、悔棋等其他特殊行棋,为以后真实、完整地演示对弈过程提供了信息基 础 ;此外,通过采用二进制格式的棋谱文件,使得该棋谱文件不容易被修改,棋谱文件 所记录的对弈过程的真实性和完整性不容易被破坏。 并且由于本发明实施例中所提供的 记录棋谱的方法,适用于五子棋、围棋、中国象棋和国际象棋,以及其他棋类,因此可 以最大程度地统一各种棋谱文件格式,有利于技术交流和软件共享。
此外,本发明实施例中,通过在棋谱文件中记录特定的信息,使棋谱文件具有 一些特殊的功能 :
a) 通过在对弈信息中设置 “对弈模式” 以及 “模式信息”,使得棋谱文件可同 时用于 4 种对弈模式记录对弈过程 ;
b) 通过在模式信息中设置 “初始棋子布局”,使得棋谱文件可用于记录让子对 弈、残局对弈和技巧练习时的棋谱 ;
c) 通过在结果信息中设置 “最后棋子布局”,并在打开棋谱文件时显示对弈 信息和结果信息,使得用户在打开棋谱文件时便可确认棋谱文件是否为自己要演示的棋 谱;
d) 通过在行棋信息中设置 “行棋序号” “行棋时间”、 “特殊行棋指示” 和 “悔棋步骤数”,使得棋谱文件可以真实、完整地记录对弈过程,以便未来能够真实、 完整地棋谱文件所记录的对弈过程。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步 详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并非用于限定本发 明的保护范围,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。