中国象棋网络对弈系统的设计与实现毕业论文
2020-02-16 18:59:09
摘 要
中国象棋是一种由对弈双方轮流出招进行攻防转换的棋类运动,其在复杂的关系变化中采用虚与实、整体与局部等方式来提升思维能力。一款优秀的象棋软件能让中国象棋不再受到棋盘和场地的限制,充分加深中国象棋爱好者和研究者的沟通与交流,加快了中国象棋的普及。
文中描述了一个中国象棋网络对弈系统的设计与实现的过程。本系统使用.NET框架实现,主要包括棋盘,棋子绘制功能,棋子规则限制功能,鼠标的响应功能,走棋顺序控制功能网络通信功能,及悔棋与将军检测功能。实现了用户进行中国象棋网络对战的需求。
本文从系统功能出发,重点分析了各个模块的算法,然后给出了系统的设计与实现,最后通过测试验证了该系统的功能基本完善。
关键词:网络对弈;棋子规则算法;网络通信;鼠标响应
Abstract
Chinese chess is a kind of chess game which is transformed from attack to defense by alternating tactics between two players. In the complex relationship changes, it adopts the ways of virtual and real, whole and part to enhance the thinking ability. A good chess software can make Chinese chess no longer restricted by chessboard and venue. Fully deepen the communication and communication between Chinese chess fans and researchers. The popularity of Chinese chess has been accelerated.
This thesis describes the design and implementation of a Chinese chess network game system. The system used .NET framework, mainly including chessboard, chessboard drawing function, chessboard rule restriction function, mouse response function, chessboard sequence control function, network communication function, regret chess and general detection function. It realizes the user#39;s demand for Chinese chess network warfare.
Starting from the function of the system, this paper mainly introduces the algorithm analysis of each module. Then the design and implementation of the system are given. Finally, the function of the system is basically perfect through testing.
Key Words:Network game;Chess rule algorithm;Network Communications;Mouse respons.
目录
第1章 绪论 1
1.1课题背景 1
1.2象棋对弈系统需求 2
1.3开发环境及工具 2
1.4本文的组织结构 2
第2章 网络通信概述 3
2.1 socket通信技术 3
2.2 TCPClient、TCPListener 3
第3章 系统概要设计 5
3.1系统设计目标 5
3.2总体架构设计 5
3.3模块功能 5
3.4本章小结 6
第4章 系统详细设计 7
4.1数据结构设计 7
4.1.1棋盘 7
4.1.2棋子 9
4.2图像绘制 10
4.2.1主界面 10
4.2.2棋盘的绘制 10
4.2.3棋子的绘制 12
4.2.4复盘与悔棋 14
4.3规则设置 16
4.3.1棋子规则 16
4.3.2棋子规则算法 16
4.4棋子操作 25
4.4.1鼠标操作 25
4.4.2走棋控制 27
4.4.3将军检测 28
4.5本章小结 30
第5章 系统测试 31
5.1系统的运行 31
5.2功能的实现 32
5.3本章小结 34
第6章 总结和展望 35
6.1总结 35
6.2展望 35
参考文献 36
致谢 38
第1章 绪论
1.1课题背景
在网络游戏的历史上,第一款真正意义上完成“网络”这一概念的游戏可以追溯到1969年瑞克·布罗米为PLATO(Programmed Logic for Automatic Teaching Operations)系统编写的名为《太空大战》的游戏[1],它可以支持两人远程联机游戏。由于当时的计算机硬件和软件还没有一种统一的技术标准,因此第一代网络游戏的平台、操作系统和语言各不相同,他们大多数都是作为试验品存在,仅仅在高等院校的大型主机上运行。这一类游戏具有1、具有非持续性,每次重启后都会丢失游戏的相关信息,无法模拟一个持续发展的世界;2、游戏无法跨系统运行,唯一可选的模式是在同一服务器/终端机系统内部执行的特征。
在此之后,于1978年,在英国的埃塞克斯大学,罗伊·特鲁布肖用DEC-10编写了世界上第一款MUD游戏[2]――“MUD1”,这一款网络游戏是一个纯文字的多人世界,在这个世界里拥有20个相互连接的房间和10条指令,用户登录后可以通过数据库进行人机交互,或通过聊天系统与其他玩家相互交流。
1996年至今“大型网络游戏”的概念被人们提出,网络游戏可活动的空间更大,不再依托于单一的服务商存在,而是直接接入互联网之中,在全球范围内形成了一个整体的市场。在此基础上,联众游戏成立了,并成为最早创立的棋牌平台,到2003年,联众已成为当时世界上最大的网络棋牌游戏提供者。注册用户超过了2亿,每月活跃的用户量高达1500万,占据85%市场份额。
中国象棋是一种由对弈双方依次行棋互相之间进行攻防转换的棋类运动[3]。作为一种棋类运动,其在复杂的关系变化中采用虚与实、整体与局部等方式来提升思维能力[4]。整个游戏当一方的帅或将被吃掉,或者一方无棋可走的时候,就分出了胜负[5]。中国象棋对弈的类别属于休闲的棋牌类游戏,其重点在于交互性和竞技性,当这一传统游戏与网络相结合时,一款优秀的象棋软件能让中国象棋不再受到棋盘和场地的限制,充分加深中国象棋爱好者和研究者的沟通与交流,加快了中国象棋的普及,给象棋新增了一种发展路径,促进了中国象棋的国际化发展。
1.2象棋对弈系统需求
设计程序良好的用户界面,尽可能真实模拟象棋环境,对局过程中双方显示不出现偏差;结合象棋对弈的特点,设计一套切实可行网络实时数据通信协议[6];制定出准确的棋子操作规则;制定棋盘及状态数据结构,方便实时通信及屏幕作图[7]及与用户的交互[8]。
1.3开发环境及工具
中国象棋网络对弈系统的开发环境是Visual Studio 2017,采用.NET框架,下面对开发环境和工具进行简单介绍[9]。
.NET框架通常用于多语言组件开发和执行环境,该框架提供了一种跨语言的统一编程环境。使用.NET框架的优势在于可以方便开发人员更容易地建立Web应用程序和Web服务,使互联网上的各个应用程序之间,可以使用Web服务进行沟通。从层次结构来看,.NET框架又可以由两个主要部分组成:公共语言运行时、服务框架。
WinForm可用于设计窗体和可视控件,其操作方便,提供了一套丰富的控件,可以创建丰富的基于Windows的应用程序,充分利用了公共语言运行库的安全特性。
1.4本文的组织结构
论文首先介绍了中国象棋网络对弈系统这一课题的背景,简要说明了中国象棋的相关情况,然后给出该系统的需求部分与整体思路。
第2章简要讲述了为了实现中国象棋网络对弈而需要的技术部分,这也是网络通信的基础部分。
第3章对系统进行了概要的介绍,列举了系统的设计目标以及各模块功能的实现方法。
第4章详细介绍了棋子,棋盘的绘制方法,以及其规则算法的实现过程。
第5章是对本次设计的总结和未来工作的展望。
第2章 网络通信概述
2.1 socket通信技术
socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元[10]。它可以被看作是网络通信过程中每一个端点的抽象表示。在进行网络通信的这一过程中必须有五种信息,其分别为:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。每一个Socket都由一对IP地址和其相对应的端口组成。Socket是通讯连接过程中的一个端点,每当一个程序将一段信息写入Socket中,该Socket就会将这段信息发送给另一个Socket,以便能将这段信息传输给其他程序。
应用层可以通过传输层来进行数据通信,可以想象,TCP和UDP通常会遇到同时为多个应用程序进程提供并发服务的问题。为了将不同的应用程序中的进程和连接给区分开来,计算机操作系统通常会为应用程序与TCP/IP协议交互的过程提供被称为套接字的接口,这一过程会被用以区分不同应用程序进程之间的网络通信和连接。
每当我们需要通过互联网来进行通信这一过程,就至少需要一对套接字来完成,其中一个会被运行于客户机端,我们把它称为ClientSocket,而另一个就运行于服务器端,会被称为serverSocket。根据通信连接启动的方式以及观察本地套接字将要连接的目标服务器,我们可以将套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。服务器监听:在服务器端的套接字并不会定位具体的客户端的套接字,而是将一直处于一种等待连接的状态之中,同时对网络状态进行实时监控。客户端请求:是指由客户端的套接字首先提出连接请求,其目标要连接服务器端的套接字。因此,客户端的套接字必须优先来描述它要连接的服务器的套接字,并将服务器端套接字的地址和端口号找到,最后向服务器端套接字提出连接请求。连接确认:每当服务器端套接字从客户端套接字监听到或者接收到连接请求时,就会响应客户端套接字的请求,创建新线程,并将服务器端套接字的描述发送给客户端,一旦客户端确认此描述,就建立连接。而服务器端套接字在完成了该过程后将继续处于监听状态,同时会继续接收其他客户端套接字的连接请求。
2.2 TCPClient、TCPListener
TCP/IP三层模型的中间层-应用协议层是由支持Http、Tcp和Udp的类组成的[11],将该层的类与位于最底层的Socket类相比,它提供了更高层次的抽象。封装 TCP 和 UDP 套接字的创建,该过程不需要处理在连接中的细节,通过这一点我们可以在编写套接字级别的协议时,更多地去尝试使用 TCP Client 、UDPClient和TcpListener,而不需要直接在Socket 中写。
TcpClient类是基于Socket类构建的[12],正因为如此它才能够通过更高的抽象程度来提供TCP服务的基础。许多通讯协议都位于应用程序上,比如FTP、HTTP等都位于TcpClient类之上。当TCPClient 类使用 TCP 从来自互联网的资源请求数据时,TCP 协议都会建立与远程终点的连接,然后再使用这一个连接来完成发送和接收数据包的操作。TCP 协议仅仅负责保证将数据包发送到终点,包括在到达时以正确的顺序将数据包进行组合。
TcpClient类也是创建在Socket之上的,其特点是在Tcp的服务方面提供了位于更高层次的抽象,具体体现在网络数据的发送和接受。 TcpClient使用标准的Stream流处理技术,将整个读写数据的过程变得更加方便直观[13],同时,.Net框架提供了多样的结构来负责处理流,位于整个.Net框架中的流会具有更广泛的兼容性。
.Net中的TCPListener 用于监视来自TCP 端口的传入请求[14],其过程在于通过将本机的IP地址和相应端口绑定,然后再创建TcpListener对象实例,并由Start方法来启动相应的监听过程;每当TcpListener侦听到来自用户端的连接后,将视来自客户端的不同请求方式来处理请求,这一过程通过AcceptTcpClient 方法接受传入的连接请求并创建 TcpClient,或者可以通过AcceptSocket 方法接受传入的连接请求并完成创建 Socket 的过程。
第3章 系统概要设计
3.1系统设计目标
中国象棋网络对弈系统的设计目的是:完成一个能够实现两人联机进行象棋对弈的系统。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: