中的发展是需要靠信息技术来推动的,国际象棋有两个很好的范例,一个是象棋棋谱编辑和对弈程序的公共平台——WinBoard平台,另一个是商业的国际象棋数据库和对弈软件——ChessBase,他们为国际象棋爱好者和研究者提供了极大的便利。国际象棋软件有着成功的商业运作,已发展成一种产业。然而,电脑在中国象棋上的运用还刚刚起步,尽管国内涌现出一大批中国象棋的专业网站和专业软件,但是由于缺乏必要的基础工作,电脑技术在中国象棋上的应用优势还无法体现出来。
在设计中国象棋软件过程中,国际象棋软件有很多值得借鉴的成功经验和优秀的思想。例如B. Moreland,微软(Microsoft)的程序设计师,业余从事国际象棋引擎Ferret的开发,他的一系列关于国际象棋程序设计的文章非常值得其他棋类程序设计人员借鉴。然而,中国象棋与国际象棋存在着很大的差异,因此国际象棋的某些成熟技术,无法直接应用于中国象棋,需要对其加以改进和创新。
(1)中国象棋是双方在由9条和10条横线分割而成的棋盘对弈。竖线与横线的交叉点称做棋点,每个棋子都放置在棋点上,而不是方格中。河界将棋盘分为两个等分=份,没一边都有一个由9个点组成的区域“将”,“帅”,“士”只能在“九宫”内移动,并且“将”,“帅”,的每一步只可以水平或垂直移动一个棋点。士:“士”只能在“九宫”内移动,并且每一步只可以沿对角线方向移动一个棋点。象;一步必须沿对角线方向走两个棋点。但它既不能过河,也不能跳过或穿越障碍,即象征走的过程不能被“别眼”。马:每一步只可以水平或垂直移动一个棋点。但它必须沿对角线方向,向左或向右移动,中国象棋的马不能跳过障碍,即在走的过程不能被“别腿”。车:可以沿水平或垂直方向移动任意个无障碍的点。炮:行走规则和车很类似,但它必须跳过一个棋子来吃掉对方的一个棋子。被跳过的棋子被称为桥或者屏风。兵:过河前每步只能向前移动一个棋点。过河后,它便增加了向左右移动的能力。并不允许向后移动。
(2)单击“中国象棋”菜单可以选择“制作棋谱”,“保存棋谱”和“演示棋谱”菜单项。
(3)选择“制作棋谱”,将出现相应的棋盘,该棋盘可进行实战对弈,可以随时选择“保存棋谱”,将对弈过程保存成一个棋谱文件。选择“演示棋谱”将显示打开文件对话框供用户选择以保存的棋谱文件。选择棋谱文件后,将显示用来演示棋谱的棋盘,用户可以选择自动或者手动来演示对弈过程。
在设计中国象棋打谱系统时,编写了10个Java源文件:、、、、、、、、。中国象棋打谱系统除了需要我们编写的10个Java源文件所给出的类,还需要Java系统提供的一些重要的类,如Jmenu、JtextField和Jbutton等类。中国象棋打谱系统所用到的一些重要的类以及之间的组合关系如图1所示。
类的设计
(1)ChinaChess类负责创建中国象棋打谱系统的主窗口,该类含有main方法,程序从该类开始执行。ChinaChess类的成员变量中有5种重要类型的对象:Jmenu、ChessBoard、DemoManulDialog、JtextField和Jbutton。
以下表1、表2分别是ChinaChess类的主要成员变量和方法的设计
成员变量描述
变量类型
名称
刻画棋盘
ChessBoard
board
演示棋谱
DemoManulDialog
demoManul
显示提示信息
JTextField
hintMessage
保存棋谱
JButton
saveManul
方法名
功能
备注
ChinaChess()
完成窗口初始化
无类型
actionPerformed
实现接口
void
main
程序运行入口方法
void
(2)ChessBoard类创建的对象是ChinaChess类最重要的成员之一,代表棋盘。该类的成员变量中有5种重要类型的对象:Point、ChessPiece、ChessBox、InitPieceLocation、InitCanju和HandleMouse。
以下表3、表4分别是ChessBoard类的主要成员变量和方法的设计
java课程设计--中国象棋打谱系统 来自淘豆网m.daumloan.com转载请标明出处.