搜档网
当前位置:搜档网 › 计算机中国象棋网络对弈软件毕业设计

计算机中国象棋网络对弈软件毕业设计

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

摘要

中国象棋网络版是一款可以实现多人同时在线的网络对弈象棋软件。

中国象棋网络版采用C/S架构,由跨平台的Java语言和MySQ L数据库开发,在开发过程中使用了多线程、java swing、Socket编程以及TCP和UDP协议等技术。中国象棋网络版提供了:棋友状态列表,弈棋邀请,观看他人弈棋,棋谱记录和保存,在线交流,快速注册等功能。服务端提供了:发布系统消息提示,服务器状态显示,在线棋友管理等功能。最后,对系统进行测试表明,系统功能达到了预期的要求,实现与同类的象棋软件如QQ象棋类似的功能,具有界面友好,操作简便,运行稳定的特点,完成设计要求的功能。本系统不足之处在于没有实现人机对弈、聊天记录的本机存储,将在以后的更新版本中逐步完善。

关键词:对弈,Java,多线程

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

Abstract

Chinese chess online is a software can support multiplayer play chess online at the same time .

The chinese chess online, based on the architecture of C/S, is developed by MySQL database and Java, a cross-platform language. In the development, multi-thread, Java swing, Socket programming and TCP/UDP protocol are applied. First, the newer can fast register and then get an account in the network version. The players can invite others to join, watch others playing, communicate with others online and hold chess-playing records. Of course ,there exists a status bar to check the states of all chess players. Here the service releases the notes of the system information, displays the state of itself, and deal with chess players online, etc. The test of the system indicates, all the expected functions have been realized. It has the similar functions just like the QQ chess, an online software of kind. The interface is on good terms, and the operation is easy, and also it runs stably. However, disappointingly, the computer can't be an opponent of the players, and the users' computer can't keep the chat records itself. These are both the weak points and the improvements will be made in the new version.

Keywords: chess-playing , Java, Multithreading

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

目录

1. 前言 (1)

1.1课题的研究目的和意义 (1)

1.2开发和运行环境 (1)

1.2.1开发环境 (1)

1.2.2运行环境 (1)

2.JAVA和网络套接字技术 (2)

2.1J AVA简介 (2)

2.2J AVA图形技术 (2)

2.3J AVA事件响应技术 (4)

2.3.1鼠标事件响应 (4)

2.3.2键盘事件响应 (4)

2.4网络网络通信技术 (4)

2.4.1 TCP (4)

2.4.2 UDP (4)

2.4.3 Socket (5)

2.4.4 Java实现 (5)

3.中国象棋网络版架构设计与通信设计 (7)

3.1中国象棋网络版架构分析与设计 (7)

3.2中国象棋网络版数据通信设计与实现 (7)

3.2.1通信协议选择 (7)

3.2.2数据类型分析 (9)

3.2.3数据格式设计 (11)

3.2.4数据通信与处理伪码示例 (13)

4.中国象棋网络版客户端实现 (16)

4.1客户端基础架构 (16)

4.2客户端GUI设计 (16)

4.2.1弈棋主面板 (16)

4.2.2用户列表面板 (17)

4.2.3棋谱记录面板 (17)

4.2.4用户交流面板 (17)

4.3客户端类设计 (18)

4.3.1 chessboardP (18)

4.3.2 userP (18)

4.3.3 chessstateP (19)

4.3.4 chatP (19)

4.3.5数据处理相关类 (19)

4.4客户端主要算法伪码示例 (20)

4.4.1棋子和棋盘状态维护算法简介 (20)

4.4.2棋盘规则马规则伪码示例 (20)

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

4.4.3棋子选择和移动伪码示例 (20)

4.4.4棋谱生成部分伪码示例 (21)

4.4.5棋局结果判定伪码示例 (22)

4.4.6通信数据处理和分发算法简介 (22)

4.4.7棋子选中闪烁算法简介 (22)

5.中国象棋网络版服务器端实现 (23)

5.1服务器端基础架构 (23)

5.2服务器端GUI设计 (24)

5.3服务器端类设计 (25)

5.3.1 serverGUI (25)

5.3.2 serverListener (25)

5.3.3 chessroom (26)

5.3.4 databaseinterface (26)

5.4数据库相关开发 (26)

5.4.1数据库需求分析 (26)

5.4.2数据库表设计 (26)

5.5服务器端主要算法伪码示例 (27)

5.5.1登录注册时与数据库交互伪码示例 (27)

5.5.2弈棋聊天用户列表维护数据转发算法简介 (28)

5.5.3 MD5加密产生密匙伪码示例 (28)

5.5.4踢用户下线伪码示例 (28)

6.中国象棋网络版运行测试 (30)

6.1.客户端功能测试 (30)

6.1.1用户上线响应异常 (30)

6.1.2弈棋过程中将可以出九宫异常 (31)

6.2服务器端测试 (32)

6.2.1用户下线后服务器在线用户数统计异常 (32)

6.2.2对正在弈棋的用户强制下线异常 (33)

6.3测试总结 (33)

结束语 (34)

致谢 (35)

参考文献 (36)

附录 (37)

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

1.前言

1.1 课题的研究目的和意义

本课题的目的是采用Java语言编写实现网络象棋对弈软件,实现中国象棋的网络对弈,拥有用户列表、棋谱查看保存、在线交流等功能。

虽然现在已经有了许多网络对弈软件,其中大多数都很优秀,所以本课题不作对比性开发。通过中国象棋网络版的开发熟练掌握在Eclipse下的Java开发,详细了解Socket网络套接字技术、TCP和UDP协议,掌握MySQL应用。

1.2开发和运行环境

1.2.1开发环境

操作系统Windows7

开发平台 MyEcilpse 8.5

JDK1.6.0_17

数据库 MySQL5.1

MySQL Workbench 5.2 CE

1.2.2运行环境

Window 7、Windows xp等各类支持Java的操作系统。

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

2.Java和网络套接字技术

2.1 Java简介

Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。

Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java 应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.5,最近版本为Java1.7。

Java分为三个体系JavaSE(Java2 Platform Standard Edition,java 平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。本软件采用的是JavaSE。

Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。

2.2 Java图形技术

Java是面向对象的语言,运用Java开发图形界面相当便捷,Java提供了JFrame、JPanel、JButton、JLabel等窗口和组件。Java采用了触发更新的方式更新界面,如果我们需要在界面上添加上自己的图形则只需要重写paint方法。

AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java 提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。

抽象窗口工具包(Abstract Windowing Toolkit) (AWT)是Java的平

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊台独立的窗口系统,图形和用户界面器件工具包。AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API。

AWT提供了Java Applet和Java Application中可用的用户图形界面GUI中的基本组件(components)。由于Java是一种独立于平台的程序设计语言,但GUI却往往是依赖于特定平台的,Java采用了相应的技术使得AWT能提供给应用程序独立于机器平台的接口,这保证了同一程序的GUI在不同机器上运行具有类似的外观(不一定完全一致)。

Java1.0的AWT(旧AWT)和Java1.1以后的AWT(新AWT)有着很大的区别,新的AWT克服了旧AWT的很多缺点,在设计上有较大改进,使用也更方便,这里主要介绍新的AWT, 但在Java1.1及以后版本中旧的AWT的程序也可运行。

抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立图形用户界面GUI (Graphics User Interface)工具集,AWT可用于Java的applet和applications中。它支持图形用户界面编程的功能包括:用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。

Java释出的时候,AWT作为Java最弱的组件受到不小的批评。最根本的缺点是AWT在原生的用户界面之上仅提供了一个非常薄的抽象层。例如,生成一个AWT的复选框会导致AWT直接调用下层原生例程来生成一个复选框。不幸的是,一个Windows平台上的复选框同MacOS平台或者各种UNIX 风格平台上的复选框并不是那么相同。

这种糟糕的设计选择使得那些拥护Java“一次编写,到处运行(write once, run anywhere)”信条的程序员们过得并不舒畅,因为AWT并不能保证他们的应用在各种平台上表现得有多相似。一个AWT应用可能在Windows 上表现很好可是到了Macintosh上几乎不能使用,或者正好相反。在90年代,程序员中流传着一个笑话:Java的真正信条是“一次编写,到处测试(write once, test everywhere)”。导致这种糟糕局面的一个可能原因据说是AWT从概念产生到完成实现只用了一个月。

在第二版的Java开发包中,AWT的器件很大程度上被Swing工具包替代。Swing通过自己绘制器件而避免了AWT的种种弊端:Swing调用本地图形子系统中的底层例程,而不是依赖操作系统的高层用户界面模块。

Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing 开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。工具包中所有的包都是以swing作为名称,例如javax.swing,javax.swing.event。

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊2.3 Java事件响应技术

Java事件响应技术采用监听事件产生组件的事件产生来响应事件。

2.3.1鼠标事件响应

鼠标操作可以产生ActionEvent,MouseEvent,MouseWheelEvent事件,我们可以创建一个继承ActionListener接口的MyActionListener类用来监听鼠标产生的ActionEvent事件,在MyActionListener中重写actionPerformed方法,在此方法中可以加入当鼠标产生ActionEvent事件时的响应操作,我们通过创建另一个继承MouseListener接口的MyMouseListener类用来监听鼠标产生的MouseEvent,在MyMouseListener中重写mouseClicked方法,在此方法中可以加入鼠标产生MouseEvent事件时的响应操作。

2.3.2键盘事件响应

键盘操作可以产生KeyEvent事件,我们可以创建一个继承KeyListener接口的MyKeyListener类用来监听键盘产生的KeyEvent事件,在MyKeyListener 中重写keyPressed方法,在此方法中可以加入键盘产生KeyEvent事件时的相应操作。

2.4 网络网络通信技术

2.4.1 TCP

TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。

TCP是TCP/IP体系中非常复杂的一个协议,TCP的最主要的特点有:

1)TCP是面向连接的运输层协议。

2)每一条TCP连接只能有两个端点,每一条连接只能是点对点的。

3)TCP提供可靠交付的服务。

4)TCP提供全双工通信。

5)面向字节流。

2.4.2 UDP

UDP 是User Datagram Protocol的简称,中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。它是IETF RFC 768是UDP的正式规范。

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。UDP的主要特点是:

1)UDP是无连接的,即发送数据之前不需要建立连接,因此减少了开

销和发送数据之前的时延。

2)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维

持复杂的连接状态表。

3)UDP是面向报文的。

2.4.3 Socket

socket的英文原义是“孔”或“插座”。作为4BDS UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。所谓socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

如何使用Socket开发一个Server-Client模型的程序。

服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。

客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket 也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。

2.4.4 Java实现

Java提供了灵活方便的类实现Socket通信,https://www.sodocs.net/doc/2319346811.html,包中拥有丰富的API,与TCP和UDP相关的有。

InetAddress:用来封装IP地址的类。

ServerSocket:用来产生服务器套接字实例的类。

Socket;用来产生客户端套接字实例的类。

DatagramPacket:用来产生数据包实例的类。

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊DatagramSocket:用来实现UDP套接字的类。

另外java.io提供了InputStream和OutputStream虚类实现对字节流操作的封装。

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

3.中国象棋网络版架构设计与通信设计

3.1 中国象棋网络版架构分析与设计

本软件要实现多用户在线弈棋,所以采用C/S架构,服务器端和客户端分别完成各自的功能。

服务器需要实现登录注册和弈棋通信两大功能模块,提供登录、注册、数据转发、在线用户数据维护、建立弈棋等服务功能。将服务器分为两大模块是因为这两个模块可以完全分离,互不影响,独立运行,保证了登录模块出现异常不会影响到已在线用户的用户体验,提高了服务器的可用性。

客户端需要实现登录、注册、弈棋、用户列表、实时交流和棋局状态记录显示六大功能,需要设计登录、注册、弈棋、用户列表维护、实时交流、棋局状态记录显示、登录注册和弈棋通信八大模块。

3.2中国象棋网络版数据通信设计与实现

3.2.1通信协议选择

经架构分析将登录注册模块与弈棋的通信模块分开设计,又根据两个模块对网络通信可靠性和即时性要求不同,所以设计登录模块的网络层通信协议为UDP 协议,弈棋通信模块的网络层通信协议为TCP协议。

效率分析:

UDP协议是无连接、不需要包检测和重传机制的,优点是网络通信效率高。而TCP协议是面向连接的,需经过三次握手,拥有包检测和重传机制,保证了数据完整和正确性,优点是可靠。

登录注册模块需要提供一个高效但不一定可靠的响应,即该模块允许在通信过程中丢包。每一次登录注册请求与响应只产生一个往返的数据报,UDP协议的无连接特性保证的数据通信的高效性。面对恶意登录请求,如果选择TCP协议,大量的建立连接会占用过多的系统资源,产生很高的服务器负载,影响服务质量,降低客户的用户体验。所以登录注册模块选择UDP协议可以带来一个高效益的服务响应。

弈棋通信模块需要给客户提供一个高可靠性和稳定性的连接,即不允许在通信过程中发生数据丢失而不处理的事件。如果采用UDP协议需要在服务器应用中添加包检测与重传功能,增加了服务器负载。且弈棋通信是一个较长的数据通信过程,使用UDP协议并不能很大提供数据通信效率,而TCP协议很好的提供了包检测和重传机制,保证了数据通信的高可靠性和稳定性。

服务器与客户端的典型数据通信与处理流程图如图3.1。

┊┊┊┊┊┊┊┊┊┊

┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

图3.1 服务器与客户端网络通信流程图服务器端

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊3.2.2数据类型分析

要实现在线对弈,就需要有数据的交互,根据预设的功能需要最基础的就有登录、登出、棋子移动、聊天等数据的通信,还有其它一些如:棋子的选择、用户列表更新、棋谱的传输等数据通信。如果不加分类很容易产生混乱,所以根据数据所属的不同模块将这些数据进行分类。

数据传输方式以“UTF-8”字符编码明文传输,其消息字符串message中的第一个字符为系统消息,将第一个字符char的2个字节16bit分为4级消息

char&0xf00 char&0xf

符号位第二级消息第四级消息

将此字符进行位移运算分离各级消息

第一级消息第三级消息

char&0xf000 char&0xf0

关于棋盘的消息格式为:4字节字符串,前2个字节表示系统消息,后2个字节表示用户操作消息:

X坐标 y坐标

源x坐标源y

坐标目的x坐标目的y坐标

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

用户积分用户状态 8-16个

";"为分隔符,分割

每个用户的信息多个

服务器发送给旁观者的棋盘状态是一个由24个字符组成的字符串:第一个字符为系统消息

其余23个字符分别携带棋盘上的90个位置的棋子状态

其中空子位为0

1-7代表黑方棋子:1 车 8-14代表红方棋子:8 车

2 马 9 马

3 象 10 相

4 士 11 仕

5 将 12 帅

6 炮 13 炮

7 兵 14 卒

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊3.2.3数据格式设计

根据3.2.2节中对数据格式的分析,设计出系统消息格式(详见表3.1)。给不同的功能模块设计不同的系统命令(如表3.1中Chessboard中第一级命令格式为CHESSBOARDPANE 0x1000/0001,其中0x1000表示此命令的十六进制数值,0001表示为此命令的部分二进制数值,CHESSBORADPANE表示此命令所实现的消息内容)。

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊3.2.4数据通信与处理伪码示例

数据通信格式为系统命令类型+消息数据。

此伪码示例简要的阐述了从登录到弈棋的数据通信与处理过程。

Begin:

第一步(登录):

Client (Login): send UDP packet(登录消息+用户名+密码)

Server (Login and Register Thread): 接收Client的UDP包,解析数据内容为 command + message

if(command == 登录消息)

查询数据库中此用户名的密码

if(无此用户或密码不一致)

send UDP packet(登录失败)

else 将用户名经MD5加密

send UDP packet(登录成功+MD5加密后的密匙)

else if(command == 注册消息)

if(数据库中有此用户)

send UDP packet(注册失败)

else send UDP packet(注册成功)

else 错误消息类型,丢弃

Client(Login):接收Server的UDP响应包,解析数据内容为command +

message

if(command==登录成功) goto 第二步

else 登录失败 goto 第一步

第二步(连接弈棋服务器):

Client(UserList):send TCP request(连接服务器+用户名+密匙)

Server(ChessRoom Thread):接收Client的TCP连接,解析数据内容为

command + message

将用户名进行MD5加密生成密匙

if(客户端密匙==服务器端密匙)

send TCP packet(登录成功)

添加用户到usermanage中

生成用户交互监听进程

查询数据库用户数据

send TCP packet to全体在线用户(用户列表更新+新上

线用户信息)

send TCP packet to当前用户(用户列表初始化+全体在

线用户信息)

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

else send TCP packet(登录失败)

Client(UserList):接收Server的TCP响应包,解析数据内容为command

+ message

if(command==登录成功)

接收Server的用户列表初始化信息,初始化用户列表

goto第三步

else goto 第一步

第三步(邀请弈棋):

Client1(Userlist):send TCP request(邀请弈棋+Client2用户名) Server(ChessRoom Thread): 接收Client的TCP连接,解析数据内容为command + message

if(Client2已经被邀请或正在弈棋) send(拒绝邀请)

else send to Client2(邀请弈棋+Client1用户名)

Client2(Userlist):接收Server的TCP包,解析数据内容为command + message

if(同意Client1的弈棋邀请)

send(接收邀请)

else send(拒绝邀请)

goto第三步

Server(ChessRoom Thread): 接收Client的TCP连接,解析数据内容为command + message

if(command == 同意邀请)

send to Client1(接受邀请)

生成一个ChessDesk实例管理整个弈棋过程

send to Client1 Client2(开始弈棋+执子颜色)

send to全体用户(用户列表更新+Client1 Client2用户状态改变)

goto 第四步

else send to Client1(拒绝邀请)

Client1(Userlist):接收Server的TCP包,解析数据内容为command

+ message

if(command==接收邀请)

接收Server的TCP包,初始化棋盘,更新用户列表

goto第四步

else goto 第三步

Client2(Userlist):接收Server的TCP包,初始化棋盘,更新用户列

goto 第四步

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊第四步(弈棋过程):

ClientRedOrBlack (ChessBoard):send (选中棋子+棋子坐标) ClientRedOrBlack (ChessBoard):send (移动棋子+棋子坐标)

ClientRedOrBlack (ChessBoard):send (棋局结束) goto 第三步

Server(ChessDesk): 接收ClientOneColor的TCP包,解析数据内容为command + message

Switch(command)

case 选中棋子:send to ClientOtherColor(选中棋子+

棋子坐标)

case 移动棋子:send to ClientOtherColor (移动棋子+

棋子坐标)

记录当前棋盘状态

case 棋局结束:send to ClientOtherColor (棋局结束)

结束ChessDesk生命周期

goto第五步

ClientRedOrBlack (ChessBoard): 接收Server的TCP包,解析数据内

容为command + message Switch(command)

case 选中棋子:选中棋子

case 移动棋子:移动棋子

case 棋局结束:棋局结束 goto 第三步

第五步(用户数据更新):

Server(ChessRoom):

处理积分信息,更新数据库

send to全体在线用户(用户列表更新+用户状态改变)Client(Userlist): 接收Server的TCP包,解析数据内容为command +

message

更新用户列表

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊

4.中国象棋网络版客户端实现

4.1客户端基础架构

客户端架构设计如图4.1。

图4.1客户端架构图

4.2客户端GUI设计

客户端GUI需求分析和效果展示。

4.2.1弈棋主面板

该面板要实现弈棋的主要功能:显示棋盘、选择棋子、移动棋子实现后的效果如图4.2。

图4.2 弈棋主面板

计算机中国象棋网络对弈软件毕业设计

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 摘要 中国象棋网络版是一款可以实现多人同时在线的网络对弈象棋软件。 中国象棋网络版采用C/S架构,由跨平台的Java语言和MySQ L数据库开发,在开发过程中使用了多线程、java swing、Socket编程以及TCP和UDP协议等技术。中国象棋网络版提供了:棋友状态列表,弈棋邀请,观看他人弈棋,棋谱记录和保存,在线交流,快速注册等功能。服务端提供了:发布系统消息提示,服务器状态显示,在线棋友管理等功能。最后,对系统进行测试表明,系统功能达到了预期的要求,实现与同类的象棋软件如QQ象棋类似的功能,具有界面友好,操作简便,运行稳定的特点,完成设计要求的功能。本系统不足之处在于没有实现人机对弈、聊天记录的本机存储,将在以后的更新版本中逐步完善。 关键词:对弈,Java,多线程

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ Abstract Chinese chess online is a software can support multiplayer play chess online at the same time . The chinese chess online, based on the architecture of C/S, is developed by MySQL database and Java, a cross-platform language. In the development, multi-thread, Java swing, Socket programming and TCP/UDP protocol are applied. First, the newer can fast register and then get an account in the network version. The players can invite others to join, watch others playing, communicate with others online and hold chess-playing records. Of course ,there exists a status bar to check the states of all chess players. Here the service releases the notes of the system information, displays the state of itself, and deal with chess players online, etc. The test of the system indicates, all the expected functions have been realized. It has the similar functions just like the QQ chess, an online software of kind. The interface is on good terms, and the operation is easy, and also it runs stably. However, disappointingly, the computer can't be an opponent of the players, and the users' computer can't keep the chat records itself. These are both the weak points and the improvements will be made in the new version. Keywords: chess-playing , Java, Multithreading

中国象棋对弈软件的设计【2014java版本】

中国象棋对弈软件的设计 姓名 学科专业 指导老师

中国象棋对弈软件的设计 摘要:随着人工智能及计算机硬件的发展,计算机象棋程序的下棋水平也不断地得到提高。20世纪60年代初,麦卡锡提出了alpha-beta修剪算法,把为决定下 一个走步而需对棋盘状态空间的搜索量从指数级减少为指数的平方根,大大 地提高了机器下棋的水平。IBM的超级计算机“Deep Blue”更是一个神话, 让棋迷们神往。本文根据国际象棋程序设计的一些成功经验,提出中国象棋 程序设计的一些思路和方法。 关键词:中国象棋,位棋盘,Zobrist键值,alpha-beta搜索,置换表,局面评价Abstract:Along with the development of the Artificial Intelligence and computer hardware, the capability of computer chess program have advanced continually.At the beginning of 60s,20th century, McCaxi brought forword alpha-beta pruning algorism which made the chess program advanced more by reducing the order of magnitude of the number of searching nodes deciding next step,named ―State Space‖ from O(X n) to O(X n/2). IBM’s super-computer ―Deep Blue‖ is more like a myth for all computer chess fans. In my article, I will describe some ideas and methods of designing Chinese Chess program along with some successful experiences and cases of the Chess. Keywords: Chinese Chess, bit board, zobrist keys, alpha-beta search, transposition table, Evaluation

中国象棋人人对战

中国象棋----人人对战设计 学号: 系别: 姓名: 班级: 成员:

中国象棋--人人对战设计 1 、问题定义 中国象棋在单击游戏可执行文件进入游戏,游戏系统初始化游戏界面,进入游戏系统后,用户可能单击棋子,再点击相应棋子坐标或棋子,实现棋子移动、吃棋子功能。实现人机对弈。用户在对弈中,可以实现、新游戏、退出游戏功能。系统的用例图如下所示: 图1系统用例图 2 、可行性研究 用户进入系统,进入游戏,把自己的电脑设为主机实现人机对弈。从功能上基本能满足用户的需求。性能稳定可靠。 3、需求分析 3.1象棋棋子走法规则和功能分析 (1) 中国象棋是双方在有着9调竖线和10条横线的棋盘上对弈,竖线和横线的交叉称为棋点或对弈点,每个棋子都是在棋点上行走,而不是在方格中行走。 (2) 河界将棋盘分成两等份,每一边都有一块有9个点组成的九宫,棋子“将”,“帅”和“士”只能在九宫内移动,并且“将”和“帅”每一步只可以水平或垂直移动一个棋点;“士”只能在九宫内移动,并且它每一步只可以沿着对角线移动一

个棋点;“象”必须一次沿着对角线方向走两个棋点,但它不能过河也不能跳过或穿越障碍,即“象”不能别眼,“马”没一步只可以水平或垂直移动两个棋点,但必须按对角线向左或向右移动。中国象棋的“马”不能跳过障碍,即马不能别腿。“车”可以水平或垂直方向移动入一个无障碍的点。“炮”移动起来和车类似,但它必须跳过一个棋子来吃掉对方的一个棋子。“兵”每步只能向前移动一个棋子过河以后,它便增加了向左右移动的能力,并不允许向后移动。 3.2 系统数据流图 (1)0层数据流图 图2 0层数据流图 (2)1层数据流图 图3 1层数据流图 (3)2层数据流图 图4 2层数据流图

中国象棋网络对战平台系统

2010年度本科生毕业论文(设计) 中国象棋网络对战平台系统 学院:电子信息工程学 专业:网络工程 年级:2007 级 学生姓名: 学号: 导师及职称: 2010年6月

随着信息技术的发展,人民生活水平的不断提高。联网游戏作为一种娱乐手段,正以其独特的魅力吸引着越来越多的玩家。为了满足广大象棋爱好者也可以享受到网络所带来的便利 ,本论文完成了基于JAVA开发的中国象棋网络对战平台的设计和实现, 它主要包含以下几大模块:网络通信模块,图像绘制模块和规则设置模块。网络通信模块使得玩家可以方便的迅速建立起网络连接,从而实现联机对弈和聊天功能;图像绘制模块实现棋盘更新以及棋子动态表示等功能;规则设置模块用于约束玩家的棋步。在本系统中规定了行棋规则,以及吃棋规则。此应用程序可以实现双人的网络对战,并能进行聊天,在象棋对战过程中,对获胜的一方及对方给与相应的信息提示。相比传统的中国象棋对战平台,有功能更加齐全,操作更加简单,行棋更加人性化的优点。 关键词:JAVA 中国象棋网络对战平台

With the development of information technology, peoples standard of living have improved constantly. On-line game as a means of entertainment has a unique charm to attract more and more players. To meet chess lovers ,In this paper, we have completed the design and realization of Chinese Chess network Battle platform based on Java. It contains the following major modules: the network communication module, image rendering module and the rules set up module. Network Communication Module allows gamers can quickly set up a convenient network connection in order to achieve an online game and chat function; image rendering module to update the board as well as functional pieces, such as the dynamic that; rules binding settings module for step-by-step player's game. In this system we provide line game rules, game rules. This application can be achieved in the network between two people, and can chat, in the process,O n the winning side and the other to give the appropriate information https://www.sodocs.net/doc/2319346811.html,pared with traditional Chinese Chess Battle platform, it has a more complete function , simpler operation, the more human chess advantages. Keywords: JAVA; Chinese Chess; network; Battle platform.

中国象棋网络对战软件设计说明书

中国象棋网络对战 软件设计说明书 吴刚 学号:201242238 12级信息工程2班 2014年12月10号

1绪论 ...................................................................... 错误!未定义书签。 1.1项目开发的背景及意义....................................................................... 错误!未定义书签。 1.2研究现状及发展趋势........................................................................... 错误!未定义书签。 1.3研究目标............................................................................................... 错误!未定义书签。2可行性研究 (2) 2.1技术可行性........................................................................................... 错误!未定义书签。 2.1.1使用JA V A技术的优点 (3) 2.1.2E CLIPSE 简介 (3) 2.2经济可行性........................................................................................... 错误!未定义书签。 2.3社会可行性 (4) 3需求分析及总体设计 (4) 3.1需求分析 (4) 3.2总体设计 (4) 3.2.1总体结构设计 (4) 3.2.2棋子棋盘的设计 (5) 3.2.3服务器界面 (6) 3.3类图说明 (6) 4详细设计 (7) 4.1程序流程设计 (7) 4.2网络连接设计 (9) 4.3功能设计 (9) 4.4界面设计 (12) 4.5走棋和吃棋规则设计 (13) 5系统测试与总结 (14) 5.1系统测试 (14) 5.1.1系统功能测试 (14) 5.1.2网络并发压力测试 (16) 5.2总结与展望 (17)

中国象棋打谱系统-Java语言毕业设计(内附详细Java程序)

JAVA语言课程设计设计题目:中国象棋打谱系统 任务目标:利用自己学的java知识,灵活的运用,并且掌握有关java语言的语法基础,面向对象,Applet 的运用,还有图形的设计,有关线程的知识。对于中国象棋打谱系统,把java知识灵活的结合了起来,让人们对java有了一个崭新的认识。进行有关步骤后,把它编译成jar形式,进行运行,完成任务。 学院软件学院 班级 姓名 学号 日期

目录 JA V A语言课程设计 目录 1 设计 (1) 1.1 设计内容 (1) 1.2 设计要求 (1) 1.3 总体设计 (2) 2 具体设计 (3) 2.1运行效果和程序设计 (3) 2.2 主类Chess (5) 2.3对弈棋盘ChessBoard (9) 2.4 棋子ChesePiece (19) 2.5棋点ChessPoint (21) 2.6 走棋规则Rule (23) 2.7步骤MoveStep………………………………………….2 3. 2.8记录棋谱MakeChessManual…………………………..24. 2.9棋谱演示Demon (24) 3课程总结 (25)

1.1 设计内容 中国象棋打谱系统使用户能够将对弈过程保存成文件,并能够重新演示对弈过程,即复盘。 1.2 设计要求 1.中国象棋是双方在由9条和10条横线分割而成的棋盘对弈。竖线与横线的交叉点称做棋点,每个棋子都放置在棋点上,而不是方格中。河界将棋盘分为两个等分=份,没一边都有一个由9个点组成的区域“将”,“帅”,“士”只能在“九宫”内移动,并且“将”,“帅”,的每一步只可以水平或垂直移动一个棋点。 士:“士”只能在“九宫”内移动,并且每一步只可以沿对角线方向移动一个棋点。 象;一步必须沿对角线方向走两个棋点。但它既不能过河,也不能跳过或穿越障碍,即象征走的过程不能被“别眼”。 马:每一步只可以水平或垂直移动一个棋点。但它必须沿对角线方向,向左或向右移动,中国象棋的马不能跳过障碍,即在走的过程不能被“别腿”。 车:可以沿水平或垂直方向移动任意个无障碍的点。 炮:行走规则和车很类似,但它必须跳过一个棋子来吃掉对方的一个棋子。被跳过的棋子被称为桥或者屏风。 兵:过河前每步只能向前移动一个棋点。过河后,它便增加了向左右移动的能力。并不允许向后移动。 2.单击“中国象棋”菜单可以选择“制作棋谱”,“保存棋谱”和“演示棋谱”菜单项。 3.选择“制作棋谱”,将出现相应的棋盘,该棋盘可进行实战对弈,可以随时选择“保存棋谱”,将对弈过程保存成一个棋谱文件。选择“演示棋谱”将显示打开文件对话框供用户选择以保存的棋谱文件。选择棋谱文件后,将显示用来演示棋谱的棋盘,用户可以选择自动或者手动来演示对弈过程。

中国象棋人机对弈游戏的设计与实现 简单参考

中国象棋人机对弈游戏的设计与实现 摘要 象棋程序的实现可以被分为人工智能和界面程序辅助两大部分。人工智能部分主要体现计算机的下棋思路,既计算机如何进行思考并以最佳走法完成下一步,先由相应的搜索算法进行搜索,并对各种可能的走法进行估值,从中选择胜利面最大的一步;而界面及程序辅助部分主要便于用户通过以前的下棋步骤,更好地调整下棋思路,着法显示使用户能够清楚地知道下棋过程,更准确地把握整个局面。 本文首先研究了中国象棋在计算机中的表示问题,接着讨论如何产生着法一系列相关内容。其次研究了博弈树的极小极大搜索技术及在此基础上发展起来的Alpha-Beta剪枝算法,使用MFC文档视图体系结构和Visual C++开发工具,实现了一个具有一定棋力的中国象棋人机对弈程序。 关键词:中国象棋;人工智能;博弈树;Alpha-Beta搜索 The Design and Implementation of Chinese Chess Abstract The implementation of a chess program can be decomposed into two major parts: the artificial intelligence and the user interface and program assist. The part of artificial intelligence shows the way of computer thinking, and which step is the best step would be decided by it. Firstly, the computer uses search algorithms to search, and then evaluates every impossible step, finally choses the best one, the other part is used for the player to adjust his thought to the currently phases. The display of step list makes player know the process of chess distinctly, and let player make a better choice. This paper firstly studies how to represent a chess board in computer, then discusses how to generate legal moves. Secondly, this paper studies the mini-max searching procedure of Game Tree, and the Alpha-Beta pruning algorithm. A Chess-playing system is designed and developed, which is built on the integrated computer MFC SDI document view architecture by using Visual C++. Key words: Chinese chess; Artificial Intelligence; Game tree; Alpha-Beta searching 象棋设计研究方法 对于象棋来说,核心设计主要包括人工智能算法的以及整个游戏中界面及程序辅助部分的实现,主要用Visual C++ 进行开发,里面的MFC类库,使游戏开发更加方便,并利用人工智能相关搜索算法实现人工智能的着法生成,从而完善整个游戏的功能。 本文的目标是实现一款有着一定下棋水平且交互友好的中国象棋人机对弈程序。 该程序功能包括: *人机对弈; *搜索深度设定; (电脑棋力选择) *悔棋、还原; *着法名称显示;

基于QT的中国象棋算法设计与实现论文

基于QT的中国象棋算法设计与实现 摘要 中国象棋发展至今已有数千年的历史了,它是中华民族智慧的结晶。在我国,中国象棋的普及程度是其它棋类无法比拟的,大至国际、国内比赛,小至社区街道。 本文章在研究分析对局树的基础上,先后运用极大极小查找和α-β修剪对查找下一步的算法进行了改进,并对中国象棋的对弈过程进行了有益的探讨。 最后在此基础上,运用面向对象的技术,综合结构化程序设计方法,将所有的操作逻辑封装于类,实现基于对局树算法的中国象棋游戏系统。系统使用QT开发工具,实现了一个具有一定棋力的中国象棋人机对弈和双人对战程序。 关键词:中国象棋人工智能博弈树Alpha-Beta搜索

With the implementation of Chinese chess algorithm design based on QT Abstract Chinese chess development has been several thousand years of history, and it is the wisdom of the Chinese nation. In China, the popularity of Chinese chess board is unmatched by other large to international and domestic competitions, small community streets。 This article is based on research and analysis on the game tree, has to find and use Minimax α-β pruning algorithm for finding the nex t improvement, the process of Chinese chess and chess for a useful discussion. Finally, on this basis, the use of object-oriented technology, integrated structured programming method, all of the operating logic encapsulated in a class-based system to achieve Chinese chess game game tree algorithm. The system uses QT development tools to achieve human-computer chess and Chinese chess program that has a double battle of chess. Key words: Chinese chess; artificial intelligence;game tree;Alpha-Beta search

python中国象棋课程设计

python中国象棋课程设计 Python中国象棋课程设计 引言: 中国象棋是一种古老而充满智慧的棋类游戏,它不仅能够锻炼思维能力和战略思考能力,还具有丰富的文化内涵。本文将介绍一个基于Python语言的中国象棋课程设计,旨在帮助学习者更好地理解和学习中国象棋。 一、课程设计目标 本课程设计的目标是通过编写一个简单的中国象棋程序,让学习者了解中国象棋的规则和基本操作,掌握Python编程的基本知识和技巧,并培养学习者的逻辑思维和问题解决能力。 二、课程设计内容 1. 中国象棋规则介绍 在本节课中,我们将介绍中国象棋的基本规则,包括棋盘、棋子、走法、吃子等内容。学习者将通过文字和图示的形式了解每个棋子的特点和限制,以及如何进行有效的棋局布局。 2. Python基础知识回顾 在本节课中,我们将回顾Python语言的基本知识,包括变量、数据类型、条件语句、循环语句等。学习者将通过编写简单的Python程序来巩固对这些知识的理解和应用。

3. 中国象棋程序设计 在本节课中,我们将一步步地编写一个简单的中国象棋程序。学习者将学会如何使用Python语言来表示棋盘、棋子和操作,以及如何实现有效的走棋算法。通过编写程序,学习者可以更好地理解中国象棋的规则和战术。 4. 程序测试与优化 在本节课中,我们将对编写的中国象棋程序进行测试,并进行必要的优化。学习者将学会如何调试程序,发现并修复错误,提高程序的性能和稳定性。 5. 拓展应用与思考 在本节课中,我们将探讨中国象棋的一些拓展应用,如人机对战、网络对战等。学习者将思考如何进一步优化和扩展已有的程序,以满足不同需求和场景下的应用。 三、课程设计方法 1. 理论讲解与示范 通过讲解和示范的方式,向学习者介绍中国象棋的规则和基本操作,引导学习者理解和掌握相关知识。 2. 编程实践与练习 学习者将通过实际编写代码的方式,将所学的知识应用到实际问题中,锻炼编程能力和解决问题的能力。

毕业设计档案

本科生毕业设计档案材料 题目:多功能象棋对弈系统的设计 与实现 学生姓名:学号 系部: 专业年级: 指导教师: 湖南人文科技学院教务处制 一、毕业设计开题报告书

(一)选题的根据: 1)本选题的理论、实际意义 中国象棋游戏流传至今已经有数千年的历史了,是一种古老的文化,它集文化、科学、艺术、竞技于一体,有利于开发人的智慧,锻炼人的思维,培养人的毅力,增强人的竞争意识。自从计算机发明,向各个领域发展,到成为我们现在每天工作和生活必不可少的一部分的这个过程中,电子游戏也逐步渗入我们每个人的娱乐活动中。在计算机已经普及的今天,对于可以用计算机进行程序编辑的人来说,开发属于自己的游戏,已经不再是梦想,中国象棋历史悠久不仅源远流长,而且基础广泛,作为一项智力运动更成为我们游戏开发的首选对象。 中国象棋是一项智力游戏,以往都是人和人下棋,现在有了计算机我们可以和计算机竞技,人可以与计算机进行对弈。控制计算机的是人类,而人工智能是综合性很强的一门边缘学科,它的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作。因此,对游戏开发过程中的人工智能技术的研究自然也就成了业界的一个热门研究方向。 2)综述国内外有关本选题的研究动态和自己的见解 和国际象棋博弈系统相比,中国象棋博弈系统的研究起步比较晚,是八十年代开始的。在这个时候计算机国际象棋取得重大突破,1983年美国贝尔公司的电脑参加美国人类比赛,取得了不错的成绩,被授予大师称号。于是有专家学者想如何将国际象棋电脑技术移植到中国象棋上来,以带动中国象棋电脑较快的发展;同时中国象棋技术研究进入理论研究,有关开局、中局、残局理论以及象棋对策相继建立起来,为中国象棋计算机博弈提供了理论基础。1981年张耀腾发表的《人造智慧在电脑象棋上得应用》,他提出审局函数为静态子力值,棋子位置值,棋子灵活值,威胁与保护等四项之和。但该文主要以残局做实验,缺乏完整对局的考虑。1982年廖嘉成发表的《利用计算机象棋的实验》就进了一步,包括开局、中局、残局。1983年黄少龙、周玉龙合作制成《象棋排局》系列软盘专家系统与人对弈。 到了90年代,中国象棋计算机博弈的应用开始发展起来,人们研究出了各种博弈软件。比较著名的软件有台湾的吴身润的《中国象棋》、光谱公司出品的《将族III》、晟业编制的《象棋水浒战》、《象棋武林帖》。而且涉足这个领域比

本科毕业论文:基于C#的五子棋毕业论文

本科毕业论文:基于C#的五子棋毕业论文 毕业设计(论文) 题目基于C#的五子棋游戏的设计 与开发系别软件与服务外包学院专业软件技术(游戏设计) 班级*** 学生姓名******学号 *********** 指导教师 **** 2012年 4月基于C#的五子棋游戏的设计与开发 摘要:随着人们的生活节奏的变快,游戏已经成为人们生活中不可缺少的一部分,它不仅能使人娱乐,放松人们的心情,也能够开发人的智力。所以说休闲游戏的开发将会是大势所趋,本文主要是通过对五子棋游戏的开发来提高自己的编程能力。 五子棋游戏是一种简单大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,现在流行的五子棋游戏软件大多缺乏美观的界面,和容易的操作方法,电脑的AI值也不是很高。本文通过C#语言在计算机图形方面的编程,设计了五子棋游戏软件,使该软件具有美观友好的截面,在人机对弈时,使电脑具有较高的智商。本游戏是以C#语言作为开发工具,采用搜索算法设计最优落子点开发的游戏软件。本文详细地介绍了五子棋游戏软件设计的全过程,描述了该软件的功能,以及和其它五子棋程序的一些比较。 关键词:五子棋、C#语言、软件 Based on the C # Gobang Development and Design

Abstract:With the faster pace of life, the game has become an indispensable part of life, which not only makes fun, relax the mood, but also to the development of human intelligence. So the development of casual games will be the trend, this paper is on the development of Gobang to improve their programming skills. Gobang game is a simple and popular game, since the computer to achieve, by the love of computer players, but now most popular game soft gobang lack aesthetic interface, and easy method of operation, the value of the computer AI is not high. The adoption of the C# programming language in computer graphics, designed gobang game software to enable the software with a beautiful and friendly interface in both game, the computer has a higher IQ. The game is based on C# language, using searching algorrithm to design best gobang. The detailed presentation of the whole process of gobang game software design, describes the software functions and procedures and other gobang other gobang some more. Key Words:Gobang、C# language、Software 目录前言 1 第一章需求分析 2 1.1本课题研究的意义 2 1.2五子棋发展史 2 1.3五子棋特点及规则 2

局域网的象棋对战

说明 本系统是一款基于Eclipse平台开发的局域网象棋对战游戏,采用Java GUI技术绘制界面,面向连接的Socket实现局域网联机,多线程同步用户信息数据。 系统分为服务器端和客户端,服务器端起到处理用户联网信息并转发数据的作用,客户端主要实现象棋对弈。 该象棋游戏界面友好,操作方便,能满足广大象棋爱好者的日常对弈需求。 目录

摘要................................................................ I Abstract........................................................... I I 1引言.. (1) 1.1课题背景 (1) 1.2中国象棋发展现状 (1) 2 开发环境与相关技术 (1) 2.1 Java语言 (1) 2.2 开发工具 (2) 2.3 技术 (3) 2.3.1 面向对象设计 (3) 2.3.2 Java GUI技术 (3) 2.3.3 JAVA多线程技术 (5) 2.3.4 点对点通信 (6) 2.3.5 TCP/IP协议 (7) 3需求分析 (8) 3.1 任务概述 (8) 3.2 需求分析 (8) 3.2.1 联机操作功能 (8) 3.2.2 象棋对弈功能 (8) 4总体设计 (9) 4.1 系统结构图 (9) 4.2 类框架设计 (9) 4.2.1 服务器端 (9) 4.2.2 客户端 (10) 4.3 需要解决的问题 (11) 5系统实现 (13) 5.1 棋盘设计 (13) 5.2 规则制定 (16) 5.2.1 规则说明 (16) 5.2.2 规则算法 (17) 6运行测试 (23) 6.1 服务端 (23) 6.2 客户端 (24) 7 总结 (27) 致谢 (27) 参考文献 (27)

毕业设计(论文)-计算机五子棋游戏对弈系统设计[管理资料]

目录 1绪论 (1) 选题背景 (1) 计算机博弈介绍 (1) 五子棋基本知识介绍 (3) 开发及运行环境 (3) 开发环境 (3) 运行环境 (3) 本文结构 (3) 2系统总体设计 (5) 系统架构 (5) 系统功能划分 (5) 系统总体逻辑流程 (5) 关键技术点 (5) AI算法 (6) 界面生成 (6) 网络连接 (6) 系统交互性 (6) 3人机对弈中AI的实现 (7) 数据结构 (7) 走法产生 (7) 搜索算法及增强 (8) 传统Alpha-Beta算法介绍 (8) NegaScout算法及Minimal Window (10) 置换表(Transposition Table) (11) 历史启发(History Heuristic) (12) 估值函数 (16) 4界面的设计与实现 (18) 设计思想 (18) 主要类及其关系 (18) 用户界面设计的6个核心类 (18) 消息消息传递图 (18) 主体界面 (19) 5联机功能的实现 (24) 消息机制的架构 (24) 各种消息说明 (24) 6总结和展望 (29) 总结 (29) 未来展望 (29) 参考文献 (29) 翻译部分 (32)

英文原文 (32) 中文译文 (42) 致谢 (49)

1 绪论 选题背景 人工智能是一门正在迅速发展的新兴的综合性很强的边缘科学。它与生物工程、空间技术一起被并列为二十一世纪三大尖端技术。它的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作。目前,各发达国家都把人工智能任务重点列入本国的高科技发展计划当中,投入巨大的人力和物力。作为一门边缘学科,它有诸多的研究领域:专家系统、决策支持系统、机器学习、机器视觉、自然语言理解等等,计算机博弈也是其中之一,博弈就是对策,这是自然界中的普遍现象,它不仅存在于游戏、下棋之中,而且存在于政治、经济、军事和生物竞争中,博弈的参加者可以是个人、集体、一类生物和机器,他们都力图用自己的智力去击败对手。 作为人工智能研究的一个重要分支,计算机博弈是检验人工智能发展水平的一个重要方面。它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影响[14]。 本文以计算机五子棋博弈系统作为研究课题。主要是考虑到当前网络上流传的五子棋游戏功能并不尽善尽美,其中最主要的问题就是人机对战和网络对战没有结合在一起实现;同时还存在游戏界面简单、计算机智能水平不足、也没有诸如保存棋谱和背景音乐等极有用的附加功能,所以不能吸引玩家兴趣。现在每一款成功的商业软件都越来越向功能多元化和界面简单友好化方向发展,所以我决定开发一个能够进行人机、网络对战,同时又具备许多附加功能的五子棋系统。 计算机博弈介绍 计算机五子棋对弈是一种完备信息博弈[15](Games of Perfect Information),意思是指参与双方在任何时候都完全清楚每一个棋子是否存在,位于何处。只要看看棋盘,就一清二楚。象棋、围棋等都属于完全知识博弈。要想实现人和计算机双方对弈,不妨假设人是甲方,计算机是乙方,人和计算机对弈的过程可以如下表达:假设首先由甲方走棋,他面对的是一个开始局面1,从这个局面可以有M种走法分别形成了局面2,3,……,M+1。。假设甲选择了形成局面2的走法,轮到乙下棋。乙面对局面2,又可以有N种可能的走法,形成N种新的局面K+1,K+2,……K+N,。

中国象棋(CS版)

中国象棋(C/S版) 1.设计内容及要求 1.1 中国象棋的基本要求 设计C/S网络版中国象棋,也就是客户端与服务器端都是java应用程序。具体要求如下: (1)中国象棋是双方在有着9调竖线和10条横线的棋盘上对弈,竖线和横线的交叉称为棋点或对弈点,每个棋子都是在棋点上行走,而不是在方格中行走。 (2) 河界将棋盘分成两等份,每一边都有一块有9个点组成的九宫,棋子“将”,“帅”和“士”只能在九宫内移动,并且“将”和“帅”每一步只可以水平或垂直移动一个棋点;“士”只能在九宫内移动,并且它每一步只可以沿着对角线移动一个棋点;“象”必须一次沿着对角线方向走两个棋点,但它不能过河也不能跳过或穿越障碍,即“象”不能别眼,“马”没一步只可以水平或垂直移动两个棋点,但必须按对角线向左或向右移动。中国象棋的“马”不能跳过障碍,即马不能别腿。“车”可以水平或垂直方向移动人一个无障碍的点。“炮”移动起来和车类似,但它必须跳过一个棋子来吃掉对方的一个棋子,被跳过的那个棋子称为桥或者屏风。“兵”每步只能向前移动一个棋子过河以后,它便增加了向左右移动的能力,并不允许向后移动。 (3) 用户开始运行程序后,进入用户登录界面,用户输入正确的用户名和密码才可以进入中国象棋主界面。 (4) 用户进入主界面后,单击“建立主机”按钮,就把该计算机作为主机,等待其他用户登录到这台主机后,才可以进行对弈。 (5) 当有用户登录到这台主机上士,用户单击“开始”按钮就可以开始想起对弈了,在对弈过程中,用户可以单击“悔棋”按钮,就可以实现悔棋,用户还可以单击“认输”按钮,向对方认输。 (6) 如果用户赢了,用户的积分就会增加。 (7) 用户在对弈过程中可以聊天。 1.2 需实现的主要功能 (1) 用户登录验证功能。 (2) 每一个用户可以把自己的计算机做为主机。 (3) 每一个用户可以寻找主机,并且与主机建立连接。 (4) 用户在对弈过程中,可以悔棋,而且可以认输。 (5) 没一个用户都用积分,当赢了比赛后,用户的积分就会增加。 (6) 有聊天室功能,即用户在对弈过程中可以与对方聊天。

中国象棋博弈系统的设计与实现

****大学 本科毕业论文(设计、创作) 题目:中国象棋博弈系统的设计与实现 学生姓名:***学号:*********** 院(系):计算机科学与技术学院专业:***** 入学时间:年月导师姓名:职称/学位: 导师所在单位:计算机科学与技术学院 完成时间:年月

中国象棋博弈系统的设计与实现 摘要 机器博弈被认为是人工智能领域最具挑战性的研究方向之一.国际象棋的计算机博弈已经有了很长的历史,并且经历了一场波澜壮阔的搏杀,“深蓝”计算机的胜利也给人类留下了难以忘怀的记忆.中国象棋博弈系统是将计算机知识和中国象棋知识结合起来并在此基础上实现人与机器的对弈。 作为软件工程专业的本科毕业生,能够结合自己大学所学并且完成自己喜欢的象棋游戏的人机博弈一直是我的梦想与追求。将自己的想法实现在电脑上,一直是我学习不懈的动力。本文结合在中国象棋机器博弈方面的实践经验,立足于象棋规则,棋局数据结构,走法产生器,局面评估函数和博弈树搜索策略,设计并实现了基于历史启发排序的Alpha-Beta剪枝搜索算法的中国象棋博弈系统。一种事物,当它具有丰富而独特的表现力时,当它能给人们带来由衷的欢愉时,当它表现为许许多多鲜明生动的形象时,它就是一种艺术。正犹如机器博弈,搜索策略,人工智能。 关键词:计算机博弈; alphaBeta 剪枝;中国象棋;历史启发

Intelligent Chinese Chess System Design and Implementation Abstract Machine game is considered to be the most challenging field of artificial intelligence research direction of the computer game. Chess has a long history, and experience a mammoth adventurous, dark blue computer victory also give human left unforgettable memory. Chinese chess game system combines with the computer knowledge and Chinese chess knowledge ,on the basis of it completes the game between human and machine. As a software engineering graduate, to combine my university learned and finish the man-machine game chess game has always been my dream to pursue, realized my ideas in my computer is my study unremitting power.This article combine Chinese chess machine game experience,based on chess rule, data structures, game moves generator, the situation assessment function and game tree search strategy, design and realized Chinese chess game system which based on historical inspire sort of Alpha-Beta pruning search algorithm.With the practical experience in Chinese chess computer game, a detailed analysis and research has been done .Based on those, I designed and implemented the Intelligent Chinese Chess System . A kind of things, when it has rich and unique expressive, when it can give people bring heartfelt joy, when it is shown as many vivid image, it is a kind of art . Just as the machine game, search strategy, artificial intelligence. Key Words: computer game;search tecniques alpha-beta pruned;Chinese chess; historical inspiration

相关主题