求推荐个特别变态的象棋在线人机对战战象棋软件,想突破一下自己。

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
(象棋软件经典资料,学习象棋软件的必看资料.doc 25页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:80 &&
(象棋软件经典资料,学习象棋软件的必看资料
你可能关注的文档:
··········
··········
我的水平一般,但一般大局残局还凑合看。我单位有三个服务器(x39501个x38502个),第一台,我用它联网上奕天qq实用软件对弈使用纯机或人机模式,根据形势来。另二台我用别的号进去观战,软件连线,观战分析。用不同引擎,遇到我思考的“棋势”时,让他们俩帮助分析一下,如果可行,把招法放到第一台上。这个模式一般只在下班时间用,没输过,和棋很少。我们信息中心三班倒。上班要求还是很严格的怎样成为超一流的人机高手,和大家分享笔者的心得fficeffice&/&以下观点、建议和主张纯属笔者多年来用象棋软件的一些心得,愿意写出来和大家一起分享,也是笔者反复实验的结果,笔者在下棋的过程中,在局面有利的情况下采用该战术就更有利,而多少次也在被动的局面下转危为安,甚至胜棋,下面就详细介绍一下笔这的浅学,欢迎各路棋友批评和指正:1、首先,也是最重要的一点,选择一款(或限制3款)自己比较熟悉的棋软,一般建议大家选择破解较为完整的软件,在这里我建议大家如果用一款软件下棋的话就选择象棋旋风,因为目前来说旋风破解的比较完美,如果同时选择3个软件下棋的话就选择象棋旋风\佳佳\倚天,为什么要选择三个软件下棋?这里就是笔者要说明的问题,希望给大家分享心得,错的地方希望网友给予批评(要打开3个软件下棋,你的机器最好是4核或以上,笔者不建议双核机器采取以下棋理,双核最好选择在下棋的过程中只使用一款软件):2、为什么多核的一定要打开3个软件分析会好点呢?其实道理很简单,可以说,当今棋软界,以及各大棋软开发程序商,都各有千秋,开发出的棋软都各有自己的特点和长处,举例说明,就象3个人或3位象棋大师,在同一局面的情况下,也许3个人都有不同的理解和不同的招数,当然招数多两个,就好比人多一条路,多一个选择,从而选择出最好的招来应对千变万化的局面.3、打开软件的顺序依次是:比如旋风\佳佳\倚天(你也可以选择大圣或其他)来分析局面,记得顺序别错了,是先开旋风\再开佳佳\后开倚天,不然你可能打不开其中之一的某一款,也就是说顺序错的话可能就出错了.4、当你打开3个棋软后,一定要记得,并且是切记:不能把三个棋软同时都打开分析模式,不然的话,你的机器就会被卡死,同时打开的话,你的K值也是非常低的,算不出好的局面.5、打开的3个棋软,一定要分清主次,选择一个软件作为主要分析工具(比如旋风)另外两个只能做为辅助分析工具(比如佳佳和倚天).一般下棋分为三个阶段,开局、中局和残局,正确的做法是:在打开3个棋软后,在下开局阶段,最好用旋风来下,也就是说只打开旋风的分析模式,因为旋风在这一阶段的打分相对比较准确,脱谱或到中局之后,把当前局面复制粘贴到另外2个棋软上面.中局和残局就是要辅助软件大发威力的时候了,6、下面就是很关键的了,复制粘贴完之后,接下来的工作,一定要让这3款软件充分发挥其自己的作用,这时候你最好以象棋旋风做为主分析工具,(切记:三个棋软在同时分析一个局面的时候,万不可以把三个棋软的分析模式都打开,不然你就会死机,可以先让旋风分析,旋风分析完之后,关闭旋风的分析模式,然后再打开佳佳的分析模式,让佳佳来分析,佳佳分析完招之后,关闭佳佳的分析模式,然后再让打开倚天的分析模式来分析,从中选取最好的招来应对局面,会达到非常好的效果.而在残局阶段,因为时间问题,可以适当关闭一个棋软,从而节约一定的时间.7、你过滤的招三大棋软有时候分析的都不一样,或其中的两个棋软分析的是一样的,或三个棋软分析的都一样,如果有不一样的时候,就是你要选择好招出来的时候了,举例说明,当目前局面象棋旋风算的是马4进5,而佳佳算的是马4退6,而倚天算的又是马4进3的时候,这个时候不要着急,可以把过滤的后2个招分别在象棋旋风里算一下,并适当让该招往下多走走,看哪个效果好,就可以选择哪个招,但是要注意大局观,对了辅助软件分析出来的招一定要在主要分析软件里面分析再多算,也就是说多往深层去走一下,往后多走几步,以避免出错,这样才能选择出最好的招来走棋!8、在用软件的分析模式时,软件在同一局面的情况下也许会有不同的招,这时候你可以点分析模式,点一下再适当关一下,然后再点一下,往后走几步,通常也会有好的招供自己选择,也许大家都有个误区,包括笔者,通常都会认为越往后面的招越精确,当然,什么事情都是没有绝对的,有时候前面的招不一定就是错的,有时候,恰恰前面的招是正确的,这就需要读者有一定的功底和技巧了,象棋千变万化,也许这就是其千百年来其魅力所在吧!9、就先写到这里吧,以后再有好的建议笔者再和大家一起分享,最后希望各位棋友多提宝贵意见和批评指正、一起探讨,顺祝各位棋友一切顺利、牛年大吉、步步高升!!佳佳象棋的一般设置相关搜索:象棋,设置在注册成功佳佳象棋后,一般要改一下二个设置,一个是SMP数,一个是HASH值,其它的就暂
正在加载中,请稍后...《中国象棋人机对战》_优秀范文十篇
范文一:网络人机对战中国象棋_需求设计实现说明文档需求设计实现说明书基于Windows平台的网络/单机中国象棋Based on Windows SystemNetwork/Single plane Chinese chess编 写 作 者专
业联 系 电 话 电 子 信 箱 个 人 说 明 胡友谋 软件工程
2009届本科毕业 两年工作经验目录第一章 网络/单机中国象棋需求分析 ...................................................................... 11.1 引言............................................................................................................... 11.1.1 编写目的............................................................................................ 11.1.2 项目背景............................................................................................ 11.1.3 定义.................................................................................................... 11.2 任务概述....................................................................................................... 21.2.1 目标.................................................................................................... 21.2.2 运行环境............................................................................................ 21.3 总体划分....................................................................................................... 21.3.1 系统功能划分.................................................................................... 21.3.2 端到端模式(P2P)功能详细描述 ...................................................... 31.3.3 端到端模式用例................................................................................ 41.3.4 服务器模式(C/S)功能详细描述 ....................................................... 41.3.5 服务器模式用例................................................................................ 51.3.6 人机对战模式详细功能描述............................................................ 51.3.7 服务器端功能描述............................................................................ 51.3.8 其他功能需求描述............................................................................ 6第二章 网络/单机中国象棋总体设计 ...................................................................... 72.1 软件简介及总体框架................................................................................... 72.1.1 软件简要说明.................................................................................... 72.1.2 总体框架图........................................................................................ 72.1.3 各功能模块框架图............................................................................ 82.2 系统静态模型............................................................................................... 82.2.1 定义系统对象类................................................................................ 82.2.2 分析类图.......................................................................................... 102.3 系统动态模型............................................................................................. 112.3.1 端到端(P2P)进行象棋对战 ............................................................ 112.3.2 客户/服务器(C/S)模式对战 ........................................................... 122.3.3 人机对战.......................................................................................... 13第三章 网络/单机中国象棋详细设计 .................................................................... 143.1 引言............................................................................................................. 143.2 程序系统结构............................................................................................. 143.2.1 层次方框图...................................................................................... 143.3
ChessSound模块设计说明 ........................................................................ 153.3.1 模块描述.......................................................................................... 153.3.2 模块类图.......................................................................................... 153.3.3 类详细说明...................................................................................... 163.4 ChessBoardImage模块 .............................................................................. 163.4.1 模块描述.......................................................................................... 163.4.2 模块类图.......................................................................................... 163.4.3 类详细说明...................................................................................... 173.5 ChessImage模块 ........................................................................................ 173.5.1 模块描述.......................................................................................... 173.6 ChessClasses模块 ...................................................................................... 173.6.1 模块描述.......................................................................................... 173.6.2 模块类图.......................................................................................... 183.6.3 类详细说明...................................................................................... 183.7 ChessRoomTable模块 ............................................................................... 203.7.1 模块描述.......................................................................................... 203.7.2 模块类图.......................................................................................... 213.7.3 类详细说明...................................................................................... 213.8 ComputerChessPlayer模块 ........................................................................ 223.8.1 模块描述.......................................................................................... 223.8.2 模块类图.......................................................................................... 233.8.3 类详细说明...................................................................................... 23第四章 网络对战实现.............................................................................................. 254.1 网络通信相关技术分析............................................................................... 254.1.1 端口(port) ........................................................................................ 254.1.2 套接字(socket) ................................................................................. 254.1.3 网络字节顺序.................................................................................. 264.1.4 客户机/服务器模式 ........................................................................ 264.1.5
Windows Sockets的实现 ................................................................ 264.1.6 套接字的类型.................................................................................. 274.1.7 基于TCP(面向连接)的socket编程 .............................................. 274.2 服务器通信相关技术分析........................................................................... 274.2.1 资源分配机制.................................................................................. 284.2 通信体系模式............................................................................................. 284.2.2 C/S与P2P相结合 .......................................................................... 294.3 异步I/O模式 ............................................................................................. 294.4 并发服务策略............................................................................................. 29第五章 计算机博弈实现.......................................................................................... 315.1 前言............................................................................................................. 315.2 机器博弈的基本思想................................................................................. 315.3 棋盘局面表示............................................................................................. 325.3 走法生成..................................................................................................... 335.3.1 判断棋子是否在棋盘中.................................................................. 335.3.1 判断棋子是否在九宫...................................................................... 335.3.2 走棋步长设定.................................................................................. 345.4 搜索算法..................................................................................................... 345.4.1 博弈树.............................................................................................. 345.4.2 极大极小算法.................................................................................. 355.4.3 负极大值算法.................................................................................. 355.4.4 Alpha-Beta搜索算法 ...................................................................... 355.4.5 局面评估.......................................................................................... 36第一章 网络/单机中国象棋需求分析1.1 引言1.1.1 编写目的在完成了针对网络/单机中国象棋软件的前期调查,与很多游戏玩家进行了全面深入地探讨和分析,同时参考了部分同类型软件的功能的基础上,提出了这份软件需求规格说明书。此需求规格说明书对网络/单机中国象棋软件做了全面细致的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。本说明的预期读者为用户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。1.1.2 项目背景随着网络技术的不断发展和普及,网络游戏也有了长足的发展;网络棋类游戏作为其独特的一个分支,也倍受广大网游玩家的喜欢。通过网络,人们可以在更大的范围内和他人对弈,可以增强棋艺的技术文化交流,也可以增加玩家的棋艺水平。种个企业集团或团体都有自己的局域网,大家在工作之余也很想进行些有意义的娱乐活动,下中国象棋应该是首选吧。同时计算机发展也是非常的迅速,计算机的计算速度和并行的能力都有了空前的提高,人们自然也很希望可以和计算机比比智力的高低,与计算机进行中国象棋对弈应该就是最好的方式吧。通过以上的简单分析,为了满足各种用户的需求,既可以网络对战,又可以人机对战的网络/单机中国象棋就有了开发的必要。在这样的背景下,我计划开发一款这样多功能的象棋软件。1.1.3 定义C/S:客户端/服务器模式P2P:端对端模式AI:人工智能OOD:面向对象设计1.2 任务概述1.2.1 目标开发网络/单机中国象棋软件,实现网络服务器模式对战,网络端到端模式对战,以及人机对战功能。并且软件的界面友好,操作方便。1.2.2 运行环境本软件建议运行在Windows xp 以上版本的PC机上。采用的开发工具是Visual Studio 2005开发平台,使用的开发语言为C++。1.3 总体划分1.3.1 系统功能划分图1.1 网络/单机中国象棋功能划分图A. 端到端模式:用户在选择该模式之后,进入端到端游戏模式。用户首先通过对方的地址同对方相连接,或者等待对方的连接,当连接成功以后就可以开始下棋了。B. 服务器模式:用户在选择该模式之后,进入服务器模式进行游戏。用户首先通过服务器地址同服务器相连接,连接成功以后可以看到服务器当前的房间信息,并且可以选择一个空位坐下,如果对面也有人坐下就可以开始下棋了。C. 人机对战模式:用户在选择该模式之后,进行人机对战模式。用户首先选择电脑执红或执黑,就可以开始下棋了。D. 游戏控制:控制游戏过程中的全动作。E. 外观控制:更改程序在外界,或者显示内容。1.3.2 端到端模式(P2P)功能详细描述端到端模式的特别是两个客户端程序直接通过网络相互连通进行游戏,参于中国象棋对弈的玩家只有两人。这时客户端程序也可以作为服务端,具体操作如下:a. 选择游戏模式为点对点模式。b. 作为客户端的一方点击连接按钮在弹出的对话框中输入对方的IP地址进行连接。c. 作为服务器的一方会监听客户端的连接请求,并对来到的请求进行响应。 d. 待服务端用户同意连接请求后,双方中的任意一方都可以点击开始按钮进行游戏,点击开始游戏的一方为红方。e. 游戏过程中可以悔棋、求和和认输等操作,同时程序自动判断胜负。图1.2 端到端模式用例图1.3.4 服务器模式(C/S)功能详细描述服务器模式的特别是所有的游戏玩家都集中连接服务器,在统一的平台下集中游戏。在连接好服务器之后可以在房间里选择空位,棋桌的另一方如果也有玩家占位,则可以进行游戏。功能简述如下:a. 选择服务器模式。b. 正常运行服务器程序。c. 客户端点击连接,填入服务器所在的地址,连接成功点击显示房间。 d. 双击一个空位准备游戏。e. 待对面的位置有玩家入坐就可以开始游戏,过程同端到端模式。3图1.3 服务器模式用例图1.3.6 人机对战模式详细功能描述人机对战模式是最难实现的部分,要求设计合理高效的数据结构和智能博弈搜索算法,使得计算机具有很高的棋力。功能简述如下:a. 选择人机对战模式:电脑执红或电脑执黑。b. 选择电脑水平:简单、一般、困难和超级。c. 选择电脑迭代加加深搜索。d. 点击开始游戏。e. 游戏过程中可以悔棋。1.3.7 服务器端功能描述服务器端程序是实现中国象棋服务器对战模式的必要组成部分。它使所有客户端的网络信息通信都集中在服务器上,使游戏玩家的选择更方便快捷。具体功能描述如下:a. 接受每一个客房端的连接,并维护网络资源,向客房端发送房间信息。 b. 当已经满座的棋桌双方提示可以开始下棋。c. 为已经进入对战的客房端传送下棋信息。1.3.8 其他功能需求描述软件还有其他的附加功能需求,具体描述如下:a. 选择棋子、走动棋子、吃子和判断胜负时播放不同的声音。b. 游戏过程中,可以更换棋子和棋盘的样式。游戏过程中,可以表示出信息。第二章 网络/单机中国象棋总体设计2.1 软件简介及总体框架2.1.1 软件简要说明本软件是基于端对端(P2P)、客户/服务器(C/S)和单机模式的中国象棋博弈软件,是一个综合性的棋类网络游戏软件。主要包括了网络信息传输管理,面向对象软件设计,服务器并发访问和人工智能等技术。实现了点对点网络对战,服务器网络对战和人机对战功能。2.1.2 总体框架图本系统采用端到端(P2P)、客户/服务器(C/S)和单机模式的应用软件。其框架图如下:客户端1客户端2客户端3客户端4图2.1 端到端(P2P)用例框架图图2.2 客户/服务器(C/S)模式用例框架图2.1.3 各功能模块框架图图2.3 网络/单机中国象棋各功能模块图图2.4 网络中国象棋服务器端功能模块图2.2 系统静态模型2.2.1 定义系统对象类 A. 棋盘和棋子图片资源模块为了方便软件的维护和软件界面的多样化发展,故将软件中所涉及到的棋盘和棋子图片资源都统一用单独的模块进行维护。把图片资源编译到动态连接库中,并用库中的一个导出类向外部提供资源。棋盘图片资源模块只有一个静态类:CBoardImageManager;棋子图片资源模块一个静态类:CChessImageManager。B. 声音资源模块为了方便软件的维护和软件运行时与用户互动的多样化发展,故将软件所涉及到的声音资源都统一用单独的模块进行维护。把声音资源编译到动态连接库中,并用库中的一个导出类向外部提供资源。声音资源模块只有一个静态类:CSoundManager 。C. 棋盘、棋子模块棋盘、棋子模块是程序中重要的部分,它将界面和棋子运行的逻辑分离开来。界面只要有一个棋盘的对象,使用棋盘类的接口就可以了,而不用去管棋盘内部的处理过程。这样就大大的降低了模块间的耦合程序。所有棋子的基类:CChess;CChess 类的子类:CBingzu、CJiangshuai、CJu、CMa、CPao、CShiwei和CXiang。处理下棋逻辑的部分就是棋盘类:CChessBoard。D. 棋房间、棋桌模块棋房间中有很多棋桌,每个棋桌有两个位置可以供客户连接。棋房间的信息都是用服务器管理,而客户端只是接受服务器发送过来的房间信息并进行相应的处理;客户端可以选择一个位置座下,如果对面也有人入座就可以进行对弈活动了。由于棋房间、棋桌在客户端程序和服务端程序都会用到,所以也单独做成一个模块,这样可以利用代码的复用。棋子房间类:CChessRoom;棋桌类:CChessTable。E. 网络模块网络模块是本软件进行网络对战的必要模块,主要处理网络连接,网络信息传输的。作为服务端,则有一个用于网络监听的SOCKET对象来监听客户端的连接请求,当接受了客户端的连接请求之后,就创建一个SOCKET对方与客户端的连接绑定。作为客户端,直接创建一个SOCKET对方,通过服务端的地址和端口连接。网络监听SOCKET类:CListenSocket;用于点对点客户端通信类:CClientSocket;用于服务器模式客户端通信类:CClientSocketForServer。F. 人工智能模块人工智能模块就是实现计算机博弈功能的部分,运用了现在比较流行的计算机博弈算法和数据结构,使计算机具有了一定的棋力。所用到的技术点有:棋盘表示、走法生成、搜索技术、局面评估、置换表、杀手启发和静态搜索等技术。计算机博弈类:CAIPlayer。G. 服务器模块服务器模块是整个软件的服务器部分,实现了客户端的并发访问控制,让所有的客户端玩家都在统一的平台进行游戏,只要知道服务器地址,而不用去管其他玩家所在的客户端地址。客户端与服务器的通信有两个网络连接,一个用于下棋另一个用于接受房间信息。当服务器接受到一个客户端的连接就创建一个SOCKET对方与之绑定,如果再的客户端连接就再创建。监听客户端连接的类:CListenSocket;用于同客户端连接的通信类:CClientSocket;棋房间类:CServerChessRoom(继承于CChessRoom);棋桌类:CServerChessTable(继承于CChessTable);用于向各个客户端分发房间消息的观察者类:CPostInfoThread。2.2.2 分析类图通过上一节分析得到了系统中的类,如下图所示:图2.5 网络/单机中国象棋类图图2.6 服务器类图2.3 系统动态模型2.3.1 端到端(P2P)进行象棋对战端到端进行象棋对战,是两个玩家直接进行连接游戏。首先,是作为服务端的一方创建一个网络监听端,并打开一个网络端口,等待客户端的连接。客户端则创建一个网络客户端,通过服务端的网络地址和端口进行连接。服务端同意客户端连接请求之后也创建一个网络客户商同请求连接的客户端进行绑定。这样就建立了网络连接,就可以进行游戏了。时序图如下:图2.7 端到端对弈时序图2.3.2 客户/服务器(C/S)模式对战客户/服务器模式进行对战,就需要有一个独立的服务器供客户端的连接。服务器要管理好每一个客户端的连接,并且正确处理它们之间正确的信息通信。首先服务器打开两个服务端的网络监听:一个是用来监听客户端房间信息连接,另一个是用来对客户端对弈信息连接。客户端通过服务器地址和端口与服务器进行连接。服务器监听到网络连接之后就是创建两个网络通信客户端分别与客户端的两个连接请求相绑定,并把房间信息发送到客户端。当客户端选择了一个位置坐下,那么这个客户端的对弈通信连接就被绑定到该位置,当该位置的对面也有人时,这个棋桌的双方就可以开始对弈了。时序图如下:图2.8 客户/服务器模式对弈时序图2.3.3 人机对战人机对战是本设计的一个亮点,把人工智能同中国象棋结合起来,让计算机具有了下棋的能力。用户只要选择好了电脑的执棋方,以及选择好电脑的棋力水平,就可以同电脑对弈了。时序图如下:图2.9 人机对弈时序图第三章 网络/单机中国象棋详细设计3.1 引言在使用程序设计语言编写程序之前,需要对所采用的算法的逻辑关系进行分析并设计出全部必要的过程细节,并给予清晰的表达,使之成为编码测试和测试的依据。3.2 程序系统结构采用层次方框图和系统结构图的形式列出系统内的每个模块和子程序的名称、标识符和它们之间的层次结构关系。3.2.1 层次方框图图3.1层次方框图3.2.2 系统结构图图3.2 系统结构图3.3
ChessSound模块设计说明3.3.1 模块描述此模块最终编译为一个动态连接库文件,为软件运行过程中提供所要的声音资源。模块内包涵了软件运行过程中所需的音频资源,只有一个静态类:CSoundManager。3.3.2 模块类图图3.3 ChessSound模块类图3.3.3 类详细说明表3-1
CSoundManager 详细说明表3.4 ChessBoardImage模块3.4.1 模块描述此模块为ChessClasses模板提供棋盘图片资源。模块内包涵了棋盘图片资源。模块包涵了软件运行过程中所需的棋盘图片资源,只有一个类CBoardImageManager。3.4.2 模块类图图3.4 CBoardImageManager类图3.4.3 类详细说明表3-2
CBoardImageManager 详细说明表3.5 ChessImage模块3.5.1 模块描述此模块为ChessClasses模板提供棋子图片资源。模块内包涵了棋子图片资源。模块包涵了软件运行过程中所需的棋盘图片资源,只有一个类CChessImageManager,类图和类详细说明表请参考3.4.2和3.4.3节。3.6 ChessClasses模块3.6.1 模块描述该模块是依托于ChessImage模块和ChessBoardImage模块,包涵所有的棋盘和棋子的业务处理逻辑,并使之与GUI部分完全分离。充分的利用了MVC的设计模式,提高了软件的开发效率,也有利于软件的维护。它在整个系统中占有重要的地位,实现了主程序网络对战的走法判断的算法处理。3.6.2 模块类图图3.5
ChessClasses 模块类图3.6.3 类详细说明表3-3
CChess 类详细说明表3-4 CChessBoard 类详细说明表3.7 ChessRoomTable模块3.7.1 模块描述此模块是为服务器模式下提供房间和棋桌对象而建立的。这个模块会在主程序和服务器模块中共同使用。3.7.2 模块类图图3.6 ChessRoomTable 类图3.7.3 类详细说明表3-5
CChessTable 类详细说明表表3-6
CChessRoom 类详细说明表3.8 ComputerChessPlayer模块3.8.1 模块描述此模块是中国象棋人工智能模块,使用了合理的棋盘表示数据结构,先进的走法生成算法,极大极小值搜索算法,局面加密算法,置换表和杀手启发的静态搜索算法。3.8.2 模块类图图3.7 ComputerChessPlayer 类图3.8.3 类详细说明表3-7 CAIPlayer 类详细说明表第四章 网络对战实现4.1 网络通信相关技术分析不同的计算机要在网络上进行通信,就要知道目的计算机的IP地址,所使用的通信协议,和所开通的端口(指定开通该端口的应用程序接收信息)。4.1.1 端口(port)按照OSI七层模型的描述,传输层提供进程(应用程序)通信的能力。为了标识通信实体中进行通信的进程,TCP/IP协议提出了协议端口(protocol port)的概念。端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用与某端口相绑定(binding)后,传输层传给该端口的数据被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出。端口用一个整数型标识符来表示,即端口号。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立。即基于TCP和UDP的程序可以有相同的端口号。端口使用一个16位的数字来表示,他的范围是0~6以下的端口号保留给预定义的服务。例如:http使用80端口,smtp使用25端口。4.1.2 套接字(socket)为了能够方便的开发网络应用软件,由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统调用socket(套接字)。socket的出现,使程序员可以很方便的访问TCP/IP,从而开发各种网络应用的程序。随着Unix的应用推广,套接字在编写网络软件中得到了极大的普及。后来,套接字又被引进了Windows等操作系统,成为开发网络应用程序的非常有效快捷的工具。套接字存在于通信区域中。通信区域也叫地址族,它是一个抽象的概念,主要用于将通过套接字通信的进程的共有特性综合在一起。套接字通常只与同一区域的套接字交换数据(也有可能跨区域通信,但这只在执行了某种转换进程后才能实现)。Windows Sockets只支持一个通信区域:网际域(AF_INET),这个域被使用网际协议簇通信的进程使用。4.1.3 网络字节顺序不同的计算机存放多字节值的顺序不同,有的机器在起始地址存放低字节,有的机器在起始地址存放高位字节。基于Intel的CPU,即我们常用的PC采用的是低位先存。为保证数据的正确性,在网络协议中需要制定网络字节顺序。TCP/IP协议使用16位整数和32位整数的高位先存格式。4.1.4 客户机/服务器模式客户机/服务器模式在操作过程中采取的是主动请求的方式。服务器方要先启动,并根据请求提供相应的服务:1. 打开一个通信通道并告知本地主机,他愿意在某一地址和端口上接收客户请求;2. 等待客户请求到达该端口;3. 接收到重复服务请求,处理该请求并发送应答信号了。接收到并发服务请求,要激活一个新的进程(或线程)来处理这个客户请求。新进程(或线程)处理此客户请求,并不需要对其他请求作出应答。服务完成后,关闭此新进程与客户的通信链路,并终止;4. 返回第二步,等待另一个客户请求;5. 关闭服务器。客户方:1. 打开一个通信通道,并连接到服务器所在主机的特定端口;2. 向服务器发服务请求报文,等待并接收应答;继续提出请求;3. 请求结束后关闭通信通道并终止。4.1.5
Windows Sockets的实现Windows Sockets是Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用。Windows Sockets在继承了Berkeley Sockets主要特征的基础上,又对他进行了重要扩充。这些扩充主要是提供了一些异步函数,并增加了符合Windows消息驱动特性的网络时间异步选择机制。Windows Sockets 1.1和berkeley Sockets都是基于TCP/IP协议的;windows Sockets 2从Windows Sockets 1.1发展而来,与协议无关并向下兼容,可以使用任何底层传输协议提供的通信能力,来为上层应用程序完成网络数据通讯,而不关心底层网络链路的通讯情况,真正的实现了底层网络通讯对应用程序的透明。4.1.6 套接字的类型流式套接字(SOCK_STREAM):提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送,且按发送顺序接收。数据报式套接字(SOCK_DGRAM):提供无连接服务。数据包以独立包形式发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。原始套接字(sock_raw)。4.1.7 基于TCP(面向连接)的socket编程服务器端程序:1. 创建套接字(socket);2. 将套接字绑定到一个本地地址和端口上(bind);3. 将套接字设为监听模式,准备接收客户请求(listen);4. 等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept);5. 用返回的套接字和客户端进行通信(send/recv);6. 返回,等待另一客户请求;7. 关闭套接字。客户端程序:1. 创建套接字(socket);2. 向服务器发出连接请求(connect);3. 和服务器端进行通信(send/recv);4. 关闭套接字。客户端不用绑定端口,因为当服务器接收到请求时已经记录下客户端的端口号。4.2 服务器通信相关技术分析网络中国象棋服务器同时为多个客户服务,要求服务器具有很高的稳定性,同时能够及时响应客户请求。性能的提高依赖服务器数据处理的每一个环节,而通信部分位于体系底层,显得愈为重要。系统资源的分配方式、Socket的管理、I/O模式的选择、并发服务以及负载均衡策略等都直接影响到通信的效率。4.2.1 资源分配机制服务器在接受大量客户连接请求的时,需要地向系统申请资源,如申请内存接收数据,申请线程处理业务逻辑,申请IO对数据收发进行投递等。操作系统在处理应用程序的这些请求时,不断地创建资源供应用程序使用,在应用程序释放资源后执行销毁和回收操作。图5.1 资源分配方式示意图4.2 通信体系模式4.2.1 网络协议的选择合理的选择网络协议将使游戏更加的高效、稳定和安全。常用的协议主要包括TCP/UDP协议和IP协议。在讨论哪种协议更适合网络游戏之前我想有必要简略地描述一下它们的工作方式。TCP/IP和UDP/IP是网络体系结构中非常重要的通信协议族。IP层负责网际数据包的传输。UDP或者TCP层将大的数据包传给IP,IP将数据包分割为小的子数据包,为每个数据包加上一个信封,计算出目的地的IP地址,应该如何到达那里,然后将数据包发送到你的ISP。UDP和TCP是网络体系中传输层定义两种传输协议,区别在于TCP保证数据包的传送和有序,而UDP不保证。为了确定数据包通过Internet完好无损地送到了目的方,TCP期待从目的方为它发送的每个数据包发回一个应答包(网络用语是ACK)。如果它在一定时间内没有收到ACK,它就停止发送任何新的数据包,重新发送丢失的数据包,并且将继续这样做直到收到目的方的回应。网络中国象棋所传输的是正确的下棋落子信息,需要很高的正确性,所以我选择TPC协议。4.2.2 C/S与P2P相结合客户机/服务器(Client/Server,缩写C/S)模型和端到端(Peer-to-Peer,缩写P2P)模型是网络结构中最主要的两种结构模型。C/S模型,一般客户机向服务器提出请求,而服务器则响应客户机的请求,发送客户机要求的数据。在C/S模型内,客户机和服务器承担着完全不同的角色;客户端与其它客户端不直接进行通信。网络上所有客户端的消息都必须先发送给服务器,再由服务器将消息转发给其它客户端。这种体系结构比较适用于多人在线对弈,多人在统一的服务器中选择自由对手下棋。而在P2P模型中,每个网络节点则扮演着同样的角色和对等的地位。多个玩家参与的游戏中,各个玩家之间采用Peer-to-Peer的直接通信方式,没有中心服务器来保存游戏状态,而是每个客户端保存自己的游戏状态。在网络通信服务的形式上,一般采用浮动服务器的形式,即其中一个玩家的机器既是客户端,又扮演服务器的角色,一般由创建游戏的玩家担任服务器(主机)。网络中国象棋将C/S与P2P两种模式都运用于其中,即将来可以两个客户端直接端到端对战,也可以通过一个独立的服务器进行网络对战。4.3 异步I/O模式服务器需要同时为大量客户服务,不能只为一个客户机服务而忽视别的客户机,因此必然要求能够同时接收和处理多个服务请求。I/O策略描述服务器如何发起多个I/O请求,即如何同时接收多个服务请求。异步I/O模型中,当服务器发起I/O操作时,内核在服务器处理其他请求的同时,异步地执行操作直到完成。异步I/O的优点是服务器不需要在I/O请求上阻塞,因为它们是异步完成的这使得服务器能够高效地为高I/O延迟的操作进行伸缩。网络中国象棋在传输房间信息时,会传输相对关大的数据量,故采用的是异步I/O
模式传输数据。4.4 并发服务策略考虑到网络中国象棋的实际使用情况,目前用户使用量不会太大,我采用的是一个请求一个线程(Thread-per-Request)的并发服务策略。该模式在单独线程控制中处理每个来自客户的请求。当每个请求到达时,服务器就会创建一个新线程来处理该请求。这种设计允许每个线程使用同步I/O机制来发送接受数据。Thread-per-Request优点是它的简单性和它利用多处理器平台上并行性的能力。第五章 计算机博弈实现5.1 前言计算机博弈的研究广泛而深入。早在上世纪五十年代,就有人设想利用计算机智能来实现计算机与人的对弈。国内外许多知名学者和知名科研机构都曾经涉足这方面的研究,历经半个多世纪,到目前为止已经取得了许多惊人的成就。1997年IBM的“深蓝”战胜了国际象棋世界冠军卡斯帕罗夫,惊动了世界。同样计算机博弈在中国象棋方面也有了很深入的研究,本章主要介绍本人在毕业设计中所用到的计算机博弈搜索算法等相关技术。5.2 机器博弈的基本思想计算机博弈的核心思想就是对博弈树节点的估值过程和对博弈树搜索过程的结合。在博弈过程中的任何一个阶段,站在博弈双方其中一方的立场上,可以构想出一个博弈树。这个博弈树的根节点是当前时刻的棋盘局面,它的子节点是假设再走一步棋以后的各种棋局,子节点的子节点是从子节点的棋盘局面再走一步棋的各种棋盘局面,以此类推,构造整棵博弈树,直到可以分出胜负或和棋的局面。整棵的博弈树非常庞大,且不同的棋类有所不同。图5.1 博弈树示意图博弈算法的任务就是对博弈树进行搜索找出对当前局面来讲要走的最优的一步棋。对博弈树进行极大极小搜索,可以达到这一目的。极大极小搜索,是因为博弈双方所要达到的目的相反,对一方有利的局面正好是对另一方不利的局面,所以博弈的一方总是希望下一走是子节点中取值最大者,而另一方恰恰相反。这便形成了极大极小过程。由于算法不能也没有必要做到搜索整棵博弈树的所有节点,对于一些已经确定为不佳的走法可以将以它为根节点的子树剪掉。搜索的深度也不必深入到分出胜负的棋局,只需要在一定深度范围内对局面进行评价即可。只有搜索空间缩小到一定程度,搜索才可以真正的进行。当搜索进行到一定深度,用局面评价机制来评价棋局,按照极大极小的原则选出最优,向上回溯,给出这一局面的父亲节点的价值评价,然后再继续向上回溯,一直到根节点,最优走步就是这样搜索出来的。在这个过程中,最为重要的是搜索算法,高效的搜索算法可以保证用尽量少的时间和空间损耗来达到寻找高价值的走步。但是真的想要博弈程序棋力提高,还必须有一个好的局面评价机制,即估值算法作后盾。就是说,用这个估值算法评价的局面价值必须是客观的、正确的,可以确凿的评价局面的优劣以及优劣的程度。5.3 棋盘局面表示计算机并不能像我们正常人那样通过眼睛看就知道当前棋局的形式,必须将现实当中的棋局映射到计算机理解的数据结构之中。棋盘局面表示主要探讨的就是使用什么样的数据结构来表示棋盘。通常用来描述棋盘及其棋盘上棋子信息的是一个二维数组。但是为了在以后的搜索算法中使用更高效的方式,如图6.2所示我选择用一个256个元素的一维数组中的90个元素来表示棋盘信息。图5.2棋盘表示如图5.2所示,我们用256位元素的BYTE数组来存储棋盘信息,高亮部分从第3排到第12排、第3列到11列就是棋盘信息。使用这样的数据结构的好处就是很容易判断棋子是否是在棋盘上,对棋子的走法规定也是特别的容易。5.3 走法生成走法生成就是将一个局面的所有可能走法都列举出来的部分,它显示了下一步可以有哪些走法。为了提高走法生成的效率,我事先根据棋盘表示已经把产生棋子走法的相关条件特征放在一些数组里面。5.3.1 判断棋子是否在棋盘中如图5.3所示,在生成目标走法的时候会用到这个数组,当一个棋子走一步,那么可以知道它下一步的目的位置,直接用目标位置作为下标来访问这个数组对应的元素,如果得到的值为1,则说明棋子的目的位置在棋盘上,如果得到的值为0,则说明棋子的目标位置不在棋盘上。图5.3 判断棋子是否在棋盘中的数组5.3.1 判断棋子是否在九宫如图5.4所示,在判断将帅的走法时会用到该数组,当一个将帅走一步,那么可以知道它下一步的目的位置,直接用目标位置作为下标来访问这个数组对应的元素,如果得到的值为1,则说明目的位置在九宫之内,如果得到的值为0,则说明棋目标位置不在九宫这内。图5.4 判断棋子是否在九宫的数组5.3.2 走棋步长设定如图5.2所示的棋盘,以帅(将)的步长设定举例如下。向左走一步,目标点坐标为起始点坐标减1;向右走一步,目标点坐为起始点坐标加1;向前走一步,目标点坐标为起始点坐标减16;向后走一步,目标点坐标为起始点坐标加16。则我们可以用一个数字表示棋子的起点或终点。假设sq为一个棋盘上所在的点,要知道其在二维棋盘上所在的横坐标将其右移4位再减3,即[(sq >> 4 ) – 3];要知道其在二维棋盘上所在的纵坐标将其和15按位相与再减3,即[(sq & 15) - 3]。其他种类棋子的规则与此类似。5.4 搜索算法5.4.1 博弈树进行一局象棋对弈,棋局的任务变化形式都可以用一颗树来描述,这样的树就称之为博弈树。在象棋博弈的过程中,参加博弈的是对抗性的敌我,在对棋局的判断,不是只取决于某一方的意愿,更要取决于对方所要采取的策略。博弈树把棋局所有的变化形势都收集到一起,包括了博弈双方所有的可能较量过程,有成功有失败,也有在实战中可能根本不会出现的棋局。计算机博弈就是要对这颗博弈树进行搜索,找到最好的解决当前棋局的方案。博弈树的叶子结点就是一种棋局的最终结果,但是由于计算机不可能真正搜索一个完整的博弈树,所以我们只能让其搜索尽可能大的深度,再用良好的局面评估来帮助其判断选择。图5.5 博弈树示意图5.4.2 极大极小算法极大极小算法(Minimax Algorithm)是在搜索博弈树时用到的最基本的方法。在博弈的过程中,双方要达到的目的是对立的,对红方有利的形势正好是对黑方不利的形势。我们给每一个节点都会有一个评估的值,对红方有利的值越大越好,反之对黑方有利的值越小越好。该红方下子时,会选择所有子节点中取值最大的节点;该黑方下子时,会选择所有子节点中取值最小的节点。5.4.3 负极大值算法负极大值算法是对极大极小值算法的一种优化,它将博弈双方的选择方式统一。极大值极小值算法,有一方取极大值,另一方取极小值;则在搜索过程中就要决定哪一方取极大值,哪一方取极小值,会采取不同的方法处理。Knuth和Moore在1975年提出了负极大值(Negamax)算法,消除了双方的差别,博弈的双方都取极大值。5.4.4 Alpha-Beta搜索算法单纯的使用极大极小值算法或者负极大值算法,就会在决定的深度下,搜索博弈树的每一个分支。这样做由于搜索量非常的大,会使搜索的时间大大浪费,效率低下。我们根据前一个分支所得到的结果,在对下一个分支进行搜索的过程中就可以确定这个分支有没有必要再进行下去。这样就是Alpha-Beta搜索算法的基本思想,可以减少不必要的分支搜索。图5.6 取最大值剪枝
图5.7 取最小值剪枝如图5.6所示A层是取极大值的节点,B层是取极小值的节点,已经知道B层第一个节点取值为20,C层的第一个分支取值为15,则B层第二个节点的取值最大也才为15所以A层是不可能会去选择B的第二个节点的,所以C层以后的节点也没有必要在搜索下去了。如图5.7所示取最小值时剪枝类似。5.4.5 局面评估局面评估是计算机在进行博弈树搜索时精确度的一大保证,它关系到计算机下对棋局判断的精确度。只有有了良好的局面评估方法,才能保证计算机找到最佳的走法。同时局面评估方法是对棋局的综合评估,它的好坏直接决定计算机棋力的强弱。局面评估和搜索算法一样是博弈系统的核心部分,它对博弈树的节点进行估值,然后搜索引擎根据搜索算法进行向上搜索,最终找到最佳的走法。
范文二:关于中国象棋人机对战的自学方法分析摘
要:相较国际象棋人机对战程序的开发,中国象棋人机对战的设计更具有难度,然而我国相关学者人数并不多,具备研发人机对战自学习能力的学者更为缺乏。本文探究了通过激励学习算法训练神经网络、利用有效的算法学习两种中国象棋人机对战自学习办法,以便为中国象棋人机对战的开发提供参考。关键词:中国象棋;人机对战;自学习作者简介:马麟(1966-),女,河北清河人,本科学历,陕西省体育运动学校中职讲师,国家级象棋大师,国家级象棋裁判,多次进入全国女子个人锦标赛前六名,研究方向:中国象棋。[中图分类号]:G891
[文献标识码]:A[文章编号]:(2015)-33--01自从国际象棋研发人机对战系统后,世界各国学者将研究目标转向规则、棋路更为复杂的中国象棋。中国象棋是一种将两军对战转化为利用棋子博弈的游戏,对战双方在下棋时,充分活跃自身的思维,将形象思维与逻辑思维的作用发挥到极致。一、中国象棋人机对战的自学习的具体方法(一)通过激励学习算法训练神经网络象棋对战机器的学习方法共有三种:激励学习、监督学习以及无监督学习。其中监督学习必须由导师辅助完成,导师在智能体运行状态时,告知智能体正确动作,并要求智能体记忆。无监督学习中只存在输入集,之后通过输入集之上的实例进行分组学习。激励学习是人类在智能体在接触环境过程中,通过给予智能体即时简单的奖励信号,使智能体在不断的尝试中,逐渐趋向合理的行为。激励学习有别于其他方法,区别在于人类并不告知智能体行为的对错,而是让其主动与外界接触,不断尝试,借由收到的奖惩信息,积累学习经验,以便确认哪种行为可以收到奖励信号,从而对这种行为进行学习,无限逼近最优行为。现今,棋类博弈算法多采用TD学习算法以及Q-学习算法。TD学习算法结合了蒙塔卡洛思想与动态规划思想,一方面TD算法无需借助系统模型的帮助,即可从智能体所获取的经验中进行学习。另一方面,TD算法与动态规划的运行过程相同,迭代通过预估所得的值函数。Q-学习算法与TD算法的主要区别在于,Q-在进行学习迭代时,采取状态-动作对等奖赏以及采用Q*(s,a)作为估计函数,而不同于TD函数所采用的状态奖赏和V(s),因此智能体在每次进行学习迭代时都需对行为过程进行全面考察,以保证其规范学习过程。神经网络应用广泛,各种问题均可以借助神经网络帮助解决,其作用主要有三类:分类、模式识别、函数逼近。BP神经网络得到广泛普及,成为目前非线性控制系统中使用的主流神经网络模型,因其能够解决当多层网络存在隐层时,导致学习存在障碍的问题。BP算法属监督学习,对神经网络训练而言,只能通过批量提供输入输出对的方法进行。然而许多实际应用的智能体不能识别最优策略,因此无法获取输入输出对。因此可将BP神经网络与激励网络融合为一体,形成新模型:RBP模型,该模型能够帮助BP网络从实际系统中获取学习经验,并以此作为参考改变学习策略,其过程是向最优策略无限逼近的过程,且在学习过程中无需由导师进行监督。该模型可以将所学知识用以训练精神系统,从而使网络逐渐达到最优状态。现将神经网络运用于棋类对战机器中,使其作为棋类对战的评估函数,机器通过不断地对战,利用激励学习算法对网络物产进行预测,进而训练神经网络,机器可通过误差反向传播的方法,对节点的权值进行反复的修正,从而使棋类评估函数愈发精确。(二)利用有效的学习算法学习更合理的参数无论评估函数有多复杂,都可以将其列作多项式。中国象棋的评估函数中至少含有五个方面的要点,而每一要点中又包含许多参数值,线性的将其组合在一起从而得到最终评估值。然而这样编出的程序,其棋力的高低,完全取决于编程者对象棋的理解,之后即使通过手调节,也很难提高机器的棋力。若评估函数由经验累积而得,其参数也必定是由经验的积累而产生。因此利用某种学习算法以修改评估函数中的各个参数,则能达到更为理想的效果,机器的下棋水平逐渐提升。相机对战机器可利用瞬时差分TD算法以寻求最为合适的参数组合。TD属激励学习,设计者可将全部棋子子力值配置归一,同时结合Alpha-Beta搜索方法,利用TD算法修该棋子的子力值,以达到有过中国象棋参数的目的。棋子子力值更新的具体公式如下:其中:和分别代表棋子的权值和当前局势中该棋子对己方提供的优势。设我方棋子“车”,计算时除以2,若你场上“车”的数量为二,而对方为一,则计算返还值为。先将前式的梯度与求和展开:之后让机器进行大量的游戏对战,为机器提供经验值,一定数量的练习之后,即可使机器与他人对战。二、结束语:就目前来说,中国象棋人机对战博弈技术的研究尚处于探索阶段,拥有极大的发展空间。由研究象棋机器博弈的所得的技术成果,不只可以用做娱乐,也可用做保护社会安全,模拟城市可能出现的危险,或进行军事对战模拟综合提升我国军事力量,人机对战技术的研究无论理论意义或是应用前景都有其不可替代的价值。参考文献:[1]陈业鹏. 基于Alpha-Beta搜索算法的中国象棋人机对战的设计与实现[J]. 计算机光盘软件与应用,7-199.[2]周明明. 基于专家系统和蒙特卡罗方法的计算机围棋博弈的研究[D].南京航空航天大学,2012.
范文三:中国象棋人机对奕 20:25:18|
分类: 游戏 |
标签:中国象棋人机对奕
|举报 |字号 订阅用微信
“扫一扫”将文章分享到朋友圈。用易信
“扫一扫”将文章分享到朋友圈。下载LOFTER 我的照片书
|中国象棋人机对奕,操作说明:1、点击右下角的“PLAY GAME",进入游戏。或者多等一会儿,让
自动进入。2、用鼠标点一下你想移动的棋子,3、再用鼠标点一下你想把棋子移到棋盘上的那个新位置。',1)">香水推荐阅读:
让子弹飞--精彩休闲游戏 让子弹飞--精彩休闲游戏中国象棋教程 中国象棋教程桌球
桌球21款游戏 好刺激哦 21款游戏 好刺激哦五子棋
五子棋中国象棋
中国象棋开心游戏
开心游戏进来玩玩~~五子棋
进来玩玩~~五子棋疯狂摩托游戏 疯狂摩托游戏麻将 麻将斗地主 斗地主把咪咪围住
把咪咪围住评论这张阅读(818)| 评论(1)
范文四:3中国象棋网络对战软件设计说明书中国象棋网络对战软件设计说明书吴刚学号:12级信息工程2班号1绪论........................................................................错误!未定义书签。1.1项目开发的背景及意义........................................................................错误!未定义书签。1.2研究现状及发展趋势............................................................................错误!未定义书签。1.3研究目标................................................................................................错误!未定义书签。2可行性研究..............................................................................................22.1技术可行性............................................................................................错误!未定义书签。2.1.1使用JAVA技术的优点....................................................................................................32.1.2ECLIPSE简介...................................................................................................................32.2经济可行性............................................................................................错误!未定义书签。2.3社会可行性..............................................................................................................................43需求分析及总体设计..............................................................................43.1需求分析...................................................................................................................................43.2总体设计...................................................................................................................................43.2.1总体结构设计................................................................................................................43.2.2棋子棋盘的设计............................................................................................................53.2.3服务器界面....................................................................................................................63.3类图说明...................................................................................................................................64详细设计..................................................................................................74.1程序流程设计...........................................................................................................................74.2网络连接设计...........................................................................................................................94.3功能设计...................................................................................................................................94.4界面设计.................................................................................................................................124.5走棋和吃棋规则设计.............................................................................................................135系统测试与总结....................................................................................145.1系统测试.................................................................................................................................145.1.1系统功能测试................................................................................................................145.1.2网络并发压力测试........................................................................................................165.2总结与展望.............................................................................................................................17软件设计说明书【摘要】随着社会的发展,科学技术不断提高,人们的娱乐活动不断增加,中国象棋作为中华民族的传统文化,不仅在国内深受群众喜爱,而且流传国外。开发中国象棋游戏软件,推广我们传统的象棋文化。本文通过运用java语言、软件工程的知识,参考网上一些文献资料的设计思路,开发出中国象棋对弈游戏系统,程序实现了选择玩家进行挑战、悔棋、和棋、认输、聊天等功能。通过对系统进行详细的需求分析,设计出了系统的逻辑模型,并且对各个功能进行了详细的分析,并对该程序的功能进行了测试与总结。【关键词】java、中国象棋、对弈、游戏1绪论1.1项目开发的背景及意义随着电子信息技术的不断发展以及网络技术的普及,网络能提供多样、便捷的服务,已经成为人们生产生活中不可缺少的重要组成部分。如今网络休闲游戏发展非常迅猛,它凭借健康、方便、益智、互动性强等诸多优点,成为大众休闲娱乐的首选。作为中华民族的悠久文化代表之一,中国象棋不仅源远流长,而且基础广泛,作为一项智力运动,中国象棋不仅能丰富人们文化生活,陶冶情操,而且有助于开发智力,启迪思维,培养人的品格。弈棋可磨练意志,锤炼品质,塑造性格,陶冶情操,中国象棋是中国文化的缩影,是中华民族智慧的反映。中国象棋的规则的复杂性是社会复杂性在中国象棋游戏中的一个反映。通过java技术开发中国象棋游戏系统,以便于与时俱进,将中国象棋运用于计算机等电子设备,实现中国象棋对弈系统,为象棋在网络应用平台提供多人对弈。1.2研究现状及发展趋势象棋游戏软件现在有腾讯象棋、JJ象棋、象棋巫师等游戏软件;腾讯象棋和JJ象棋是网络对弈游戏。现在的棋牌类游戏有很多,有很多游资对战平台的网络对弈软件;如腾讯QQ象棋、JJ象棋就是网络对弈象棋。但将传统的益智游戏在计算机领域推广还处于萌芽阶段。棋牌类游戏将向多平台、智能化方向发展。1.3研究目标此项目主要应用于中国象棋对弈软件,本文针对的是双人联网对弈,能够运用该软件进行象棋对弈。实现对弈、悔棋、和棋、认输、聊天等功能。2可行性研究可行性研究的目的,就是以最小的代价、在尽量短的时间内确定问题是否能够被解决。因此,必须客观的分析问题,找到主要的可能解决法,然后从系统逻辑模型出发,分析若干种主要的解法,研究每种解法的可行性,从而最终确定这项工程的可行性。2.1技术可行性Java是SunMicrosystem公司开发的编程语言,java语言具有高效性、通用性、平台移植性和安全性等特点。运用Eclipse软件进行编写,并运行编译执行。2.1.1使用java技术的优点Java是非常新的一种语言,具有面向对象、分布式、解释执行、体系结构中立、可移植、多线程、以及动态性等特点。和其他编程语言相比,它有很多优点。使用Java语言的主要优点体现在以下几个方面:(1)灵活性Java语言是非常灵活的,它支持部署和开发环境中的各种变化。因为Java是在面向对象的基础平台上构建的,故其很容易对基本的语言进行扩展和发布。(2)厂商的广泛支持采用Java有一个非常重要的原因,就是受到了厂商的广泛支持。Java不仅仅只有一个主要的供应商,有许多公司都生产、支持Java产品。(3)用户的广泛支持Java语言具有良好的用户基础,它们并不局限于某一个特定的公司。在Internet上,有许多资源以及Java示例代码。另外,Java程序员还可以使用许多免费软件或共享软件和许多应用程序代码。(4)平台独立性Java源代码和运行时的文件与操作系统无关,可以支持多个操作系统。因此,在Windows环境中创建并编译Java类文件,无需任何修改就可以将其部署到Linux环境中。Java的这种特性,也称为可移植性,这一点使得Java开发更加方便,对于那些需要一个特定操作系统、又需要支持其他操作系统的企业来说是非常重要。2.1.2Eclipse简介Eclipse是一个基于Java的可扩展开发平台。它本身只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),该组件主要是针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。Eclipse这样功能完整且成熟的开发环境,大部分的开发掌握在IBM手中,但是有一部份是由eclipse.org的软件联盟主导。Eclipse使用开放原始码许可书,即用公共公众许可书CommonPublicLicense(CPL)作为授权方式,设计上是可以容许商业利益的。CPL可以容许Eclipse和其它开放原始码软件合组时,能够用更加严谨的许可书散布软件,可以用于商业途径。CPL经过OpenSoftwareInitiative(OSI)认证,其内容符合开放原始码授权的需求。2.2经济可行性经济可行性分析是指进行成本与效益的核算分析,从经济角度判断开发该系统的预期经济效益能否超过它的开发成本。当系统开发人员接受开发任务时,首要研究开发任务,判断是否具有简单明确合理可行的解决办法。其实,有许多不可能在预期的规模内解决的问题,如果某些问题无法很好的解决,那么花费在该项工程上的任何时间、资源和经费都是浪费的。因此可行性分析必不可少。该系统的开发运用Java开发环境Eclipse来完成,参考图书及网上相关资料,由自己独立开发完成,在经济方面成本可自己承担,具有一定的经济可行性。2.3社会可行性随着计算机科技的发展,个人计算机的普及,越来越多的人们接触并使用计算机,现今普通人也能熟练地使用计算机,并习惯使用计算机通过网络进行学习工作和娱乐活动,这样更有利于人力资源的有效利用。而且该程序的简单易用,使得人们能够使用该程序进行对弈。3需求分析及总体设计3.1需求分析该程序需要实现象棋游戏的以下几个基本功能:(1)开始游戏/重新开始:开始一局新的象棋对弈;(2)连接/断开:以自己设定的昵称连接服务器或者断开服务器;(3)挑战:选择在线玩家,向玩家发出挑战;(4)接受挑战/拒绝挑战:接受玩家的挑战请求或者拒绝玩家的挑战请求;(5)悔棋:将棋子返回到之前所处的位置;(6)求和和认输:将双方协商棋局为和棋,或一方认输结束棋局;(7)退出:退出本程序;(8)提示:显示出象棋的走棋;(9)聊天:跟对弈玩家进行文字聊天。3.2总体设计3.2.1总体结构设计中国象棋软件的总体结构层次方框图如图3.1所示。图3.1层次方框图软件分客户端和服务端,客户端是程序的主体,包含游戏界面的各个部分,有信息显示区和各种功能按钮设计。在客户端里面需要定义走棋和吃棋的规则。服务端主要用来处理玩家之间信息的交互,以及各个玩家在服务端的代理线程的开辟和管理。界面比较简单,左半部分显示玩家列表,右半部分是功能区,能选择开启和关闭服务器。3.2.2棋子棋盘的设计打开客户端后显示的棋盘界面如图3.2所示。图3.2棋盘界面棋盘区是行棋主界面,能根据不同角色的玩家来布置不一样的界面,图为红棋的界面,黑棋的界面则为黑子在下面,红子在上面。信息区可以分三小块,第一小块主要是状态信息显示,能显示服务器的ip地址,系统默认给出服务器ip为127.0.0.1,这个可以在连接服务器的时候根据服务器的情况指定。本机ip显示本机在局域网内的ip地址,这是通过java自带的类的方法实现的,端口号显示与服务器连接的端口号。昵称和角色还有对方玩家显示用户的昵称和在游戏中是黑棋还是红棋,对方玩家显示的是对方玩家的昵称。状态显示信息用来给用户提示,在没有连接或者没有开始游戏的时候显示一条欢迎语句,当在走棋的时候会闪烁提示用户是黑棋走棋还是红棋走棋。第二小块区域是连接服务器时的一些选项。能指定服务ip,服务端口,可以设置在游戏中的昵称,这里默认通过java自带的类获取本地主机名作为昵称,用户可以自己取名。连接和断开按钮控制与服务器的连接和断开。在线玩家这个下拉列表用来显示当前在线玩家,并且能选择其中某个玩家进行挑战。第三部分,是选项按钮,有新游戏(和棋),用来向对方提出和棋。退出按钮退出系统,接受挑战和拒绝挑战用来接受和拒绝玩家提出的挑战请求。悔棋和认输用来悔棋和认输,悔棋和新游戏只是在玩家获得行棋权利的时候才有效。且新游戏、悔棋都要经过对方玩家同意才能行。聊天功能允许玩家在已经连接上服务器,并且已经有对方玩家的情况下和对方玩家进行聊天。3.2.3服务器界面运行服务端后显示的服务端界面如图3.3所示。图3.3服务端界面在线用户列表区用来显示当前在线用户的昵称和ip。服务ip指定服务器的ip,这一项是不允许用户手动输入的,通过java自带的类来获取主机ip作为服务ip。服务端口指定服务器的端口号,这一项用户可以自己设定,但需要在合法范围内,即0-65535,且2端口未被占用才能成功打开服务器。否则会有错误提示。在线用户数用来实时显示当前在线玩家数目。连接和断开按钮用来控制服务器的开启和关闭状态。3.3类图说明该程序所包含的类如图3.4所示。软件区别服务端和客户端分两个包,在服务端这个包里面有三个源文件:Server.java、ServerThread.java、ServerAgentThread.java。Server.java主要用来定义服务器的主界面,并给按钮添加事件监听。ServerThread.java用来监听用户的接入,当用户接入后为用户开辟在服务端的代理线程。ServerAgentThread.java是用户在服务端的代理线程,用来处理用户发来的一些消息,完成对应用户的各种请求。客户端包里面包含两个源文件:Chess.java、ChessAgentThread.java。Chess.java主要用来创建用户界面,添加各种事件监听,以及完成事件监听,并定义了游戏规则。ClientAgentThread.java是客户端在本地的与服务器端相对应的本地代理线程,客户端就是通过它来与服务端的代理线程进行通信,完成本地的各种信息发送和请求。它也是本地用户从服务端获取信息的途径。服务器端用户的代理线程将信息发送回来,ClientAgentThread接收到信息后,对信息进行判断做出处理,实现系统的主要功能。所以说,在整个系统中,ClientAgentThread和ServerAgentThread是关键部分,系统的主要功能都是这两部分来完成的,正式通过这样的机制才完成了系统需要的功能。图3.4类图4详细设计4.1程序流程设计程序的主体流程图如图4.1.1和4.1.2所示。系统的主要流程如以下两个流程图所示,客户端需要连接服务器后才可以正常实现需要的各种功能,所以整个对于整个系统运行,服务端首先需要开启。客户端连接上服务器后,服务器会将在线玩家列表发送给客户端,客户端在本地更新,然后客户端选择想要挑战的玩家,向玩家提出挑战,等待玩家的同意,对方玩家同意后游戏开始,在玩家自己行棋的时候玩家有权限执行走棋、悔棋、和棋、认输等功能,在整个对弈过程中玩家之间可以进行文字聊天。对于玩家的每一步走棋,系统会用一个集合来记录棋子移动的信息,以备悔棋的时候调用,实现悔棋。玩家执行相应的行为后,系统会将信息发送到服务器,服务器根据消息的开头的特定的标记对消息类型进行判断,并调用相应的方法来处理,并给对方玩家发送消息,对方玩家收到消息后,根据消息类型实现本地相应行为的执行,这样就实现了消息和状态的同步了。图4.1.1客户端程序流程图图4.1.2服务端程序流程图4.2网络连接设计中国象棋网络对战系统是局域网通信软件,主要的通信模式如下图4.2所示。图4.2系统通信模式图系统通过使用java程序设计语言自带的socket套接字实现通信。Socket套接字连接需要提供ip和端口号,所以根据本系统的通信模式是无法利用socket让两个对等的客户端之间实现真正的意义上的直接通信,基于这些考虑,最终决定使用代理线程来实现客户之间的通信。通过代理线程概念的引入,相当于把不同地方的客户端集中到一起一样,本系统的通信模式的设计就是把它们都用代理线程的形式集中到了服务端,然后代理线程之间相互调用,执行各个方法,实现通信了。4.3功能设计系统通信功能和棋子移动在其他版块单独介绍。(1)玩家在线列表获取在服务端,设置一个存放代理线程的集合类对象,每个新用户登录后,把用户的线程添加到线程集合中,用户在服务端的代理线程以用户昵称命名用以唯一标识,这也是为什么不允许用户名重名的原因。当用户连接上服务器后,服务器端用户服务代理线程遍历整个服务端的线程集合,得到各个线程的名字并将它们组织成字符串加上特定开头,发送给自己的客户。在客户端设置一个集合类对象用来存放玩家昵称,当客户端得到服务器发来的在线玩家列表是,客户端代理线程根据这个字符串的特定开头能识别出收到的是玩家列表,用字符串处理方法处理得到的字符串,还原得到用户昵称,并将它们存放到存放玩家昵称的集合中,然后用这个集合内容来更新在线玩家下拉列表,这样实现了玩家在线列表的实时获取。(2)连接/断开在客户端主界面的右边,玩家可以手动指定服务器ip和服务端口号,并设置一个在整个网络中唯一的昵称用来连接服务器。在用户设置好正确的ip和端口后,用户名没有重名的情况下,用户点击连接按钮,立即为用户创建客户代理线程以后与服务器的信息交互都交给客户端代理线程。并且客户代理线程的构造函数马上连接服务器,在服务器端注册本客户端,以获得服务代理线程。服务端收到客户注册请求后先暂时分配无名服务代理线程,然后判断是否重名,重名则让无名代理线程返回给客户重名提示,接着关闭这个无名代理线程。若不重名,把用户昵称设为无名代理线程的名字,并把这个代理线程加入线程集合,注册成功。服务器让线程集合里的所有线程给自己的客户端返回用户上线提示和新的在线用户列表客户端点击断开连接后,客户端代理线程向服务代理线程发离线请求,服务端代理线程收到后,关闭这条代理线程,并将它移出线程集合,并让线程集合里所有的线程给自己的客户端返回该用户的离线提示和最新的在线玩家列表。(3)挑战:选择在线玩家,向玩家发出挑战;客户端从在线列表中选中某个昵称后,点击挑战,程序会将该用户的tiaoZhanZhe变量设为选中的玩家昵称,并将请求挑战的特定标记字符和玩家昵称组成字符串发给服务代理线程。服务代理收到后找到这个昵称的用户的服务端代理线程,让它将请求挑战的消息加上发出发出挑战的玩家的昵称返回给它的客户端,这样被挑战的玩家的客户端代理线程就收到了挑战请求,客户端代理线程会判断一下tiaoZhanZhe这个变量是否是空值,若非空,返回给服务代理线程玩家正忙,服务代理线程会让提出挑战的玩家的服务代理线程返回玩家正忙的消息。若为空,则弹窗显示收到的挑战请求,这时被挑战者可以单击接受挑战或拒绝挑战按钮来相应对方的请求。并通过服务代理线程告知对方。若同意,则双方开始游戏,且分别将tiaoZhanZhe变量设为对方的昵称。拒绝则不开始游戏,且提出挑战的玩家将先前的tiaoZhanZhe变量的赋值行为取消,设为null。整个流程图如下玩家请求挑战流程图(4)悔棋/求和:将棋子返回到之前所处的位置/双方协商棋局为和棋,重新开始;玩家在轮到自己走棋的时候有请求悔棋和提和的权利,但需要对方玩家同意。玩家点击悔棋或重新开始按钮后,程序将悔棋或重新开始的特定标识加上tiaoZhanZhe变量的值组成字符串发送给服务代理线程,服务代理线程收到消息后,找到tiaoZhanZhe这个昵称的服务代理线程,并让它返回玩家的悔棋或提和消息,tiaoZhanZhe这个玩家收到后弹出选择框,玩家选择同意还是拒绝,玩家点击同意,则悔棋一步或者开始新游戏,且提出悔棋或者和棋的玩家收到消息,并也悔棋一步或重新开始新游戏,悔棋或者提和完成。若玩家拒绝,则通过服务代理线程返回给提出悔棋或和棋的玩家拒绝消息。流程图如下。悔棋/提和流程图(5)认输:一方认输结束棋局;玩家在游戏过程中可以随时点击认输按钮提出认输。玩家点击认输按钮后,程序将悔认输特定标识加上tiaoZhanZhe变量的值组成字符串发送给服务代理线程,服务代理线程收到消息后,找到tiaoZhanZhe这个昵称的服务代理线程,并让它返回玩家的认输消息,tiaoZhanZhe这个玩家收到后弹出消息框,显示对方玩家认输的信息。这时候程序设定双方都不能再走棋,认输完成。(6)聊天:跟对弈玩家进行文字聊天。玩家在游戏过程中可以随时进行文字聊天。玩家在聊天文本区输入内容后点击发送按钮后,程序将得到输入内容加上tiaoZhanZhe变量的值组成字符串发送给服务代理线程,服务代理线程收到消息后,找到tiaoZhanZhe这个昵称的服务代理线程,并让它返回玩家的消息,tiaoZhanZhe这个玩家收到后弹出消息框,显示对方玩家的消息。这样实现了聊天。(7)走棋/吃棋玩家棋子状态发生变化后程序给服务端服务代理线程发送棋子的编号、X坐标、Y坐标、棋子是否可见四项内容。棋子状态发生变化后,程序先给服务代理线程发送棋子移动的特定标识加tiaoZhanZhe构成的字符串,服务代理线程收到后调用相应的方法,等待用户这边发送棋子编号、X坐标、Y坐标、棋子是否可见四项内容,然后服务端服务代理线程找到tiaoZhanZhe的服务代理线程,让它按同样的方式,先发棋子移动标识,客户代理线程收到后调用相应方法等待服务代理线程发送棋子编号、X坐标、Y坐标、棋子是否可见四项内容,然后客户代理线程更新本地相应棋子的状态,这样实现了走棋、吃棋。流程图如下。走棋/吃棋流程图4.4界面设计对于人机交互性强的象棋对弈系统,界面的设计必不可少,也是决定系统质量的重要指标。本系统客户端和服务端都设计有界面,服务端界面比较简单,主要分两块,左边用来显示当前在线玩家的ip和昵称,用列表框实现。右边是服务端ip指定,端口指定,以及启动和关闭按钮,ip通过java自带的类提供的方法获取本机IP作为服务IP,且不允许编辑,端口自己指定但必须在0-65535的合法范围之内,否则系统会给出端口不合法提醒。客户端界面分量大部分,左边是棋盘,右边是功能按钮和信息显示。棋盘区是行棋主界面,棋盘和棋子都是已标签的形式设置的,考虑到需要跟实际使用象棋的习惯和玩家操作的便利性,需要对不同角色的游戏玩家摆放不同布局的棋子,比如,红方玩家需要界面上显示红棋在下半屏幕,黑棋在上半屏幕,对于黑方玩家刚好相反,黑棋得在下,红棋在上。这是本系统在设计之初所面临的一个不好解决的问题,后来通过算法实现坐标的变换得以实现该功能了。对于棋子和棋盘,考虑到操纵的简单,在本系统的设计里我全部都是用坐标来定位,实践证明,这样做给我后来设计走棋规则带来很大的方便。信息区可以分三小块,第一小块主要是状态信息显示,能显示服务器的ip地址,系统默认给出服务器ip为127.0.0.1,这个可以在连接服务器的时候根据服务器的情况指定。本机ip显示本机在局域网内的ip地址,这是通过java自带的类的方法实现的,端口号显示与服务器连接的端口号。昵称和角色还有对方玩家显示用户的昵称和在游戏中是黑棋还是红棋,对方玩家显示的是对方玩家的昵称。状态显示信息用来给用户提示,在没有连接或者没有开始游戏的时候显示一条欢迎语句,当在走棋的时候会闪烁提示用户是黑棋走棋还是红棋走棋。第二小块区域是连接服务器时的一些选项。能指定服务ip,服务端口,可以设置在游戏中的昵称,这里默认通过java自带的类获取本地主机名作为昵称,用户可以自己取名。连接和断开按钮控制与服务器的连接和断开。在线玩家这个下拉列表用来显示当前在线玩家,并且能选择其中某个玩家进行挑战。第三部分,是选项按钮,有新游戏(和棋),用来向对方提出和棋。退出按钮退出系统,接受挑战和拒绝挑战用来接受和拒绝玩家提出的挑战请求。悔棋和认输用来悔棋和认输,悔棋和新游戏只是在玩家获得行棋权利的时候才有效。且新游戏、悔棋都要经过对方玩家同意才能行。聊天功能允许玩家在已经连接上服务器,并且已经有对方玩家的情况下和对方玩家进行聊天。红棋角色黑棋角色不同角色玩家棋盘布局对比4.5走棋和吃棋规则设计中国象棋网络对战系统对于棋子和棋盘都是通过坐标来定位,这对于走棋和吃棋方法的设计带来很大的方便。对于棋盘上每个棋点,都用坐标来进行唯一标识,对于鼠标在棋盘上的点击,根据坐标的模糊算法来确定鼠标的行为,如果鼠标在棋点周围的一定区域内点击,则判断鼠标点击了棋点,走棋和吃棋流程图如图4.5所示。走棋和吃棋的规则按照中国象棋的游戏规则进行约定,在游戏中,当棋子移动时,我们会通过坐标判断一下其他棋子的状态,看看当前是否满足欲移动棋子的移动条件或吃棋条件。比如,红炮要吃一个黑子,我们会判断该黑子是不是跟红炮在同一条横线上或黑线上,若在一条直线上,接着会判断红炮和黑子之间是不是有且仅有一颗棋子。这都是通过坐标来判断。图4.5走棋和吃棋规则流程图5系统测试与总结5.1系统测试系统测试系统测试是软件开发过程中非常重要的一个环节,它是衡量我们所开发系统的准则。通过各种形式的测试以及相应的调试,使软件系统达到预定的要求。通过对软件测试结果的分析可以预测软件的可靠性;反之,也可以根据对软件可靠性的要求,来决定测试和调试过程什么时候可以结束。在软件生命周期中的每个阶段都无法避免的会出现差错,只有做好软件的测试工作,才能保证软件的安全可靠性。象棋游戏网络对战系统最好的测试方式是首先通过进行象棋对弈,和各个功能的执行来测试,其次要进行多用户模拟测试。5.1.1系统功能测试系统的主要功能是联机对弈,完成各个模块的正常工作是系统的系统的基础。为此我对系统的各项功能进行了测试。(1)走棋走棋是基本功能,通过多次测试,在网络连接正常情况下系统走棋正常,没有出现异常。(2)不合法情况提示系统会有一些用户不当操作的提示,为了验证此功能,首先有意让用户重名,系统能提示故意选择不合法的端口号,系统能提醒去向一个正在游戏的玩家发出挑战,系统能提示(3)常用功能发送聊天信息提出悔棋玩家认输5.1.2网络并发压力测试中国象棋网络对战是多用户的网络对战平台,经过测试本系统可支持500以上用户同时在线利用服务器完成信息的交换。为了测试服务器并发能力,我写了一个用于测试系统的小代码,测试代码流程图如图5.1.2。本系统功能要求每一个新用户登录到服务器时,服务器要向所有在线用户发送新的用户列表,所以每一次新用户登录,服务器需要与所有用户几乎同时通信,本身就是多用户的同时通信的过程,前面奇数线程给偶数线程发消息和偶数线程给奇数线程发消息这两个阶段是用来测试一下基本通信的稳定,后面用500个控制线程控制来测试服务器就足可以满足同时访问的用户在500以上了,因为每一条控制线程里面有500个线程在循环,500条控制线程的顺序都是随机的,而且每个线程有一定的持续时间,这种测试持续时间长,所以这样的测试足以证明服务器能支持500以上的用户同时访问。且在测试完成还没有关闭程序时,打开命令窗口,输入netstat-a命令可以查看到确实有500个端口与服务器的2014号端口在通信。需要注意的是,在500条控制线程里,并不是每一条控制线程都是从0号线程开始发消息的,我采用的是随机的方式。为了验证最终数据传输的稳定性,我让每一条测试线程都生成了一个自己的文本文件,用来记录收到的服务器端的数据,拿数据说话,观察数据保证用户数不低于500可以同时访问。图5.1.2测试代码流程图5.2总结与展望本次课程设计充分利用自己学的Java知识,熟练掌握有关Java语言的语法基础,面向对象,Applet的运用,还有图形的设计,有关线程的知识。对于中国象棋对弈系统,把Java知识灵活的结合了起来,让人们对Java有了一个崭新的认识。该程序实现了中国象棋双人对弈,并实现了悔棋、求和、认输等功能。本系统的设计通过多线程的引入,轻松实现预期构想的500用户同时在线。另外,在设计本系统之初,设计者一直想把该系统的代码实现模块化,以增强系统的可拓展性。系统代码编写者在编写过程中也一直很注意模块化的问题,在系统目前告一段落之际,系统已具备很强的可拓展性,编者即本系统设计者预计本系统能很轻松的实现更大规模的应用平台,能实现分区分房间进行游戏。现在网络上也有一些网络象棋对弈软件和人机对战软件,但网络上的人机对战软件只是机器运用简单的人工智能分析所有符合规则的走法,选择某种进行走棋;随着人工智能的发展,使机器拥有学习分析的能力,若把人工智能与中国象棋相结合,使得机器通过一些某人的对弈棋谱形成该人的对弈风格,并在选择人机对战时选择某一种风格,使得我们感觉如同跟真人对战一样;而且,可以选择两种风格进行机器与机器对战。如若实现,我们可以体验与古代人、世界冠军等我们无法无法接触到的人对战,而且还可以使他们的风格对战,我们从中学习提高。
范文五:中国象棋网络对战软件设计说明书中国象棋网络对战软件设计说明书吴
刚学号:12级信息工程2班号1绪论 ...................................................................... 错误!未定义书签。1.1项目开发的背景及意义 ....................................................................... 错误!未定义书签。1.2研究现状及发展趋势 ........................................................................... 错误!未定义书签。1.3研究目标 ............................................................................................... 错误!未定义书签。2可行性研究 ............................................................................................. 22.1技术可行性 ........................................................................................... 错误!未定义书签。
2.1.1使用JAVA技术的优点 .................................................................................................... 3
2.1.2 ECLIPSE 简介 .................................................................................................................. 32.2经济可行性 .................

我要回帖

更多关于 象棋人机对战软件 的文章

 

随机推荐