(完整版)java毕业课程设计---中国象棋java源码

Java语言程序设计实验报告

实验项目名称:中国象棋对弈系统

作者姓名与单位:李明 数学与应用数学专业 数学081班 摘要:

本文主要是运用java实现具有一定功能的中国象棋对弈系统软件,主要功能如下:

a、

象棋对弈:红方先走,然后黑方再走,红黑交替,直到一方获

胜。 b、

新游戏:任何时候可以重新开始一盘新的对弈。

c、 悔棋:当走错棋的时候可以悔棋。 d、

信息提示:提示当前信息状态。

e、 简单的帮助文档:象棋规则介绍、软件的简单介绍和编制说明

关键词:java、中国象棋对弈系统

正文:

一 程序设计说明

1.1程序的设计及实现

本系统主要有以下4个模块,每个模块对应一个程序包: 1、engine:搜索引擎包,系统的核心部分。

2、message:网络对战过程中各种消息及其传递机制的类实现包。 3、main:主界面实现包。

4、pieces:棋子及其相关类实现包。 现就各个包中的要点给与说明。 1.1.1 搜索引擎的实现(engine包)

(1) BitBoard.java:位棋盘的实现,见2.4节。 (2) CCEvalue.java:评价函数知识类。

本程序使用开源软件“梦入神蛋”的快速评价函数。该函数包含子力价值和棋子所在位置的奖励值。子力价值分别是:帅-0, 仕- 40, 象

-40, 马-88, 车-200, 炮-96, 兵-9。帅是无价的,用0表示。以马为例,位置的奖励值如下:

0, -3, 5, 4, 2, 2, 5, 4, 2, 2, -3, 2, 4, 6,10,12,20,10, 8, 2, 2, 4, 6,10,13,11,12,11,15, 2, 0, 5, 7, 7,14,15,19,15, 9, 8, 2,-10, 4,10,15,16,12,11, 6, 2, 0, 5, 7, 7,14,15,19,15, 9, 8, 2, 4, 6,10,13,11,12,11,15, 2, -3, 2, 4, 6,10,12,20,10, 8, 2, 0, -3, 5, 4, 2, 2, 5, 4, 2, 2

上面的每行代表棋盘的一条纵线。其中,-10所在的位置是“窝心马”,所以要罚10分。

(3) ChessPosition.java:动态局面类

包含对局过程中的动态信息,主要实现的是2.4节的各类位棋盘和移子函数。

(4) MoveStruct.java:着法表示类。

(5) PreMove.java:伪合法着法生成模块,见4.1。

(6) MoveSortStruct.java:合法着法的生成及其排序算法,见4.2。 (7) SearchMove.java:搜索算法,实现如下功能:

1)主置换表及开局库 2)Alpha-Beta搜索算法 3)针对吃子着法的静态搜索算法

4)适应性空着裁剪算法:见5.5.2,根据不同情况来调整R值的做法,称为“适应性空着裁剪”(Adaptive Null-Move Pruning),它

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4