网络中国象棋设计-本科毕业论文.doc
《网络中国象棋设计-本科毕业论文.doc》由会员分享,可在线阅读,更多相关《网络中国象棋设计-本科毕业论文.doc(106页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘要摘要近年来,随着互联网的高速发展和普及,越来越多的人开始通过网络来休闲娱乐。为了继承和发扬传统文化,使更多的人喜欢中国象棋这项传统的活动,本设计采用跨平台的Qt作为开发框架,以模块化的设计方法和面向对象的编程思想,通过设计合理的数据结构和网络通信方法,实现了有新建棋局、开始棋局、认输、悔棋、言和、交换红黑、显示和保存棋谱、复盘、网络对战和人机对战等众多功能的网络中国象棋游戏。关键词:中国象棋;网络对战;人机对战ABSTRACTIn recent years, with the rapid development and popularization of the Internet, mor
2、e and more people begin to spend their recreational time online. In order to carry forward the traditional culture and to make more people enjoy the traditional Chinese chess game, this design uses the cross-platform Qt as a development framework, with modular design method and object-oriented progr
3、amming ideas through the reasonable design of data structure and network communication method, a Chinese chess game which contains a number of functions, such as the creation of a new round of chess game, surrender, undo, peace-making, the exchange of red and black oriented pieces, the display and s
4、aving of chess manuals, replays, multiplayer as well as single player mode can be materialized.Key words: Chinese chess; Network war; Man-machine wari目录目 录第一章 绪论11.1 中国象棋简介11.2 项目背景和意义21.3 主要问题和关键技术31.3.1 主要问题31.3.2 关键技术41.4 开发平台和工具4第二章 需求分析52.1. 总体功能划分52.2 系统提示功能52.3 网络连接功能62.4 聊天功能62.5 游戏控制72.6 棋谱
5、82.6.1 棋谱介绍82.6.2 文本文件棋谱82.6.3 二进制文件棋谱92.7 复盘92.8 人机对战9第三章 概要设计103.1 中国象棋的模块设计103.2 系统提示功能的设计163.3 网络连接功能的设计163.4 聊天功能的设计183.5 游戏控制功能的设计183.6 棋谱功能的设计213.7 复盘功能的设计213.8 人机对战功能的设计213.9 音效功能的设计223.10 界面的设计22第四章 详细设计与编码实现234.1 象棋信息模块234.2 数据模块244.2.1 数据的表示244.2.1.1 下棋信息的编码244.2.1.2 数据的存储274.2.2 数据的操作294
6、.3 规则模块344.3.1 中国象棋规则344.3.2 规则判断354.4 音效模块404.5 棋谱模块404.6 界面模块504.6.1 显示棋谱模块504.6.2 聊天模块514.6.3 提示信息模块544.6.4 功能按钮模块554.6.5 棋盘模块624.6.6 选择界面664.6.7 主界面664.7 调度中心模块674.8 信息转发模块744.9 复盘模块754.10 服务器模块754.11 客户端模块764.12 计算机接口模块764.13 计算机模块774.13.1 人机对战的算法设计774.13.2 人机对战的实现78第五章 测试835.1 网络功能测试835.2 聊天功能
7、测试845.3 音效功能测试845.4 游戏控制功能测试855.5 输、赢、和判断的测试865.6 象棋规则测试875.7 棋谱功能测试875.8 复盘功能测试875.9 人机对战功能测试875.10 按钮状态测试875.11 总体测试88第六章 结束语89参考文献90致谢91外文资料原文92外文资料译文96第一章 绪论第一章 绪论1.1 中国象棋简介中国象棋历史悠久,关于它的起源由于资料不详,所以至今也没有一个统一的答案。但可以确定的是在唐代已经基本成型,到宋代已基本和现代无异,到了明代把一方的“将”改名为“帅”,这和现代中国象棋就一样了。中国象棋以前称作象棋或象戏等,至于现在前面为什么要加
8、“中国”两字,只是为了和国际象棋区别开来。中国象棋棋盘9纵10横共90个点,红方从右到左用汉字“一”到“九”表示,黑方另一端从右到左用数字“1”到“9”表示。 红、黑双方各有16个棋子,分别是一个帅(将)、两个士(仕)、两个相(象)、两个车、两个马、两个炮、5个兵(卒),其中括号内是黑方的不同文字表述,意思是一样的。棋盘和棋子的详细情况如图1-1所示。总的来说,中国象棋共有7种棋子,它们都有不同的走法。对于将和帅来说,只能在九宫格内移动,每次只能沿直线走一步;对于士和仕来说,也只能在九宫格内移动,但每次只能沿斜线走一步;对于相和象来说,不允许过河,只能在己方范围沿斜线走两步,且中间不能有棋子阻
9、挡;对于车来说,只要无棋子阻挡,上下左右沿直线随便走;对于马来说,走“日”字步,细分是先走长步,再走短步,若长步上有棋子阻挡,则不能走,俗称“蹩马腿”;对于炮来说,只能走直线,如果不是吃子,则和车的走法一致,否则需要和所吃棋子之间有且仅有一个棋子;对于兵和卒来说,每次只能沿直线走一步,未过界前只能前进,过界后可以平移和前进,但不能后退1。正是这种各有不同且极为有趣的走法,极大地增加了中国象棋的趣味性。对于中国象棋来说,要想获得最后的胜利,不能仅仅凭借所谓的运气。因为棋子多样,走法多样,中国象棋极大地考验着下棋者的智商,技巧、策略等在中国象棋对战中必不可少。正因为如此,它极大地锻炼着人们的大脑,
10、让双方静下心来思考该怎样走。中国象棋自古以来都是一种休闲娱乐的游戏。古时就有许多人以下棋自娱自乐,并逐渐产生了“马后炮”、“弃车保帅”等许多歇后语和成语,足见中国象棋的影响力。到了现代,中国象棋正式成为国家体育项目之一,每年都有一些全国大赛在举行,比如“全国象棋锦标赛”和“全国象棋等级赛”等。伴随着这些大赛的举行,涌现出一大批热爱象棋并棋艺高超的个人。其实还有许多人,他们并没有参加各种各样大赛,只是在茶余饭后下几盘棋自娱自乐,使生活变得不在那么无聊和寂寞。中国象棋不仅在中国国内广受欢迎,在东亚和东南亚许多国家也有许多人爱好象棋。在世界各地相继成立了一些象棋协会,教人们下象棋,并组织一些象棋赛事
11、。图 11 中国象棋1.2 项目背景和意义象棋在中国拥有悠久的历史,有着丰厚的文化底蕴,从古至今都有很多人喜欢象棋,是千年来不断发展变化的一种休闲娱乐方式。现代的中国象棋到宋代已基本成型,由于其益智、有趣、休闲,直到现在仍有许多象棋爱好者。以前人们只能当面对战,可是到了信息化的今天,因为计算机的出现以及互联网的普及,通过网络进行对战就成为一种可能,更是一种新的潮流。现在比较有名的软件就是QQ游戏中的“中国象棋”,它不仅提供了一个使千里之隔的两人能够下棋的平台,还增加了积分、等级、道具等功能,大大的增加了趣味性,使得下棋变得更方便有趣了。另外,中国象棋是一项智力游戏,千年来都是人和人下棋,可是现
12、在随着计算机技术高速发展的今天,人机对弈也成为可能。如今就已经出现了各种各样的人机对弈象棋软件,它们各有各的优缺点。比如“中国象棋大师”、“象棋旋风”和“象棋巫师”等有人机对战的功能。计算机本不会自己独立思考,只能受控于人类,但是随着人工智能技术的不断进步,计算机也有了一定的“思考”能力,而这一技术也被广泛应用于各个领域,包括游戏方面。因此,人机对弈也就成了当今象棋软件的发展趋势。当前在象棋人机对弈这一方面比较有名的算法有最大最小搜索算法、Alpha-Beta搜索算法、静态搜索算法等2。现在用许多中国象棋引擎可用,比如ElephantEye、ANITA等。引擎和界面之间的协议是中国象棋通用引擎
13、协议(Universal Chinese Chess Protocol,简称UCCI),通过这个协议界面和引擎之间就可以通信3。现在有许多人致力于象棋引擎算法的研究。当今社会已经离不开互联网了,它几乎无处不在,是现代社会近几十年的产物;而象棋则有千年历史,是传统文化的结晶。网络象棋就把传统和现代两者结合在一起了,使我们能够通过现代技术来体验古人对弈的乐趣,使得传统文化得到继承和发扬,吸引更多人投入到这项运动中来。1.3 主要问题和关键技术1.3.1 主要问题这个课题的最终目标就是完成一个具有网络对战功能的中国象棋游戏软件,并要求其界面要美观友好,交互性强,操作简单。为了完成这一任务,需要解决以
14、下主要问题:第一,要了解中国象棋的规则,知道怎么下象棋,象棋的每种棋子走法,怎么判断输赢,知道了这些才会知道该去做什么以及该怎么去做;第二,数据要存储为哪种格式,怎么交换数据,怎么通过网络传递数据,这是整个设计的基础;第三,怎么进行交互,两个人怎么通过网络可以协调的玩游戏;第四,悔棋、认输、言和、交换、棋谱、复盘等功能要如何处理,如何处理它们之间的关系,这些都需要清晰的数据结构和程序逻辑;第五,人机对战要如何实现,机器AI(人工智能)要怎么做,如何协调它与网络对战之间的关系等。1.3.2 关键技术(1)编程语言采用C+语言。一方面C+语言是自己熟悉的编程语言,另一方面C+语言也适合这个课题,因
15、其面向对象的思想和封装的特点正是本课题所需要的。(2)图形界面采用Qt编写。Qt是一个跨平台的图形界面开发库,支持Windows、Linux、Mac OS等许多的操作系统。Qt以GPL、LGPL和商业协议三种协议同时授权,正是由于这种开放性,Qt不断发展壮大,功能越来越多,支持的操作系统也越来越多,特别是加大了对嵌入式平台的支持,现在已经支持Windows CE、Symbian、Maemo 5等平台,并且在将在今年发布的Qt 5中添加对IOS和Android平台的预览支持4。(3)网络通信采用TCP协议。因为要实现网络对战功能,所以必须要通过网络传递和交换数据。对于本课题而言,传送的数据量少,
16、并对可靠性有要求,因而选择TCP协议比较合适。(4)通信采用网络连接的通信方式。鉴于网络对战只需两方进行通信,故双方直接进行通信,一方建立服务器,另一方进行连接即可,不需要额外的资源。1.4 开发平台和工具(1)操作系统:Windows 7,32位。(2)编译器:Microsoft Visual Studio 2010。(3)开发工具:Qt Creator 2.7.0。(4)运行环境:Windows XP 以及更高版本Windows。21第二章 需求分析第二章 需求分析2.1. 总体功能划分系统的功能划分如图2-1所示。图2-1 系统功能划分2.2 系统提示功能这个功能用于在界面上显示一些系统
17、提示信息,用于提示用户。这些提示信息包括一下几个方面。(1) 刚进入游戏时系统的欢迎信息;(2) 认输、悔棋、言和、交换等提示信息;(3) 赢、输、和的提示信息;(4) 网络连接状态的提示信息;(5) 聊天信息发送失败的提示信息。这些提示信息可以方便用户了解当前的一些状况,使用户可以容易地判断和处理相关问题。2.3 网络连接功能有了网络连接功能,才能进行网络对战。对战双方可以通过网络进行连接,这是实现网络对战的基础。当用户想要进行网络对战时,只要一方建立服务器,另一方进行连接,由此双方之间可以进行通信,交换数据。详细的功能描述如下所示:(1) 一方进入游戏,选择服务器模式,输入可用的端口号,然
18、后点击确定,就会在这个输入的端口号上监听连接,等待客户端的连接。此时应该把自己的IP地址和端口号告之另一方,好让对方进行连接。(2) 另一方进入游戏,选择客户端模式,然后输入服务器的IP地址和端口号,然后点击确定,双方建立连接。(3) 建立连接后,双方都点击开始,就开始游戏了。(4) 如果连接失败或者连接中断,就关闭程序并重启,检测IP地址和端口号是否有误,再次进行连接。2.4 聊天功能因为能进行网络对战,双方可以通过网络下中国象棋,如果不能进行交流,相互传递信息,遇到了问题或其它一些情况就无法告诉对方。所以,聊天功能也是十分重要的。因为上面已经说了是网络连接的通信,聊天信息可以直接发送给对方
19、而不用经过中间服务器的中转。另外,当只有选择网络对战时才有聊天功能。因为复盘和人机对战都是在本地进行,只有自己一个人,自己不需和自己聊天,也就不需要聊天功能了。关于聊天功能的详细描述如下所示:(1) 一方在聊天框里输入要发送的信息,然后点击发送。如果网络连接正常,另一方应该收到聊天信息并显示在聊天框里面。(2) 对于另一方来说,同样的道理。(3) 如果网络连接有问题,在点击发送后,系统会提示发送聊天信息失败。(4) 因为中国象棋分红黑双方,故在此设定红方发送的聊天信息字体颜色是红色,相对的,黑方发送的聊天信息的字体颜色是黑色,这样便能很好的区分是谁发的聊天信息了。另外,在显示聊天信息的时候,在
20、最前面加上当前时间,这样便知道是什么时候收到的信息。2.5 游戏控制对于中国象棋来说,一些功能是众所周知也是必须的,比如悔棋、认输、言和等。对于本系统来说,有新建、开始、悔棋、认输、言和、交换、保存、检测、退出。下面就详细说明一下这些功能。1、新建。当在一盘棋结束的时候或者在下棋的过程中,一方可以请求新建棋局的请求,只要另一方同意,即可开始新一盘棋局。具体描述如下:(1) 一方请求新建棋局,另一方同意,则开始新棋局。(2) 一方请求新建棋局,另一方拒绝,则维持当前状态不变。2、开始。当刚进入游戏或者新建棋局时,需要双方都要点击开始,一盘棋局才会开始。具体描述如下:(1) 刚进入游戏时,需要用户
21、点击开始,以表明自己已经准备就绪。当双方都准备就绪时才能开始下棋。(2) 新建棋局时,道理同上,需要用户点击开始,以表明自己已经准备就绪。当双方都准备就绪时才能开始下棋。3、悔棋。俗话说“落子无悔”,但在这里还是提供了悔棋的功能,方便用户的学习和交流。关于悔棋功能的具体描述如下:(1) 一方申请悔棋,另一方同意,则悔棋成功,棋子回到原位。(2) 一方申请悔棋,另一方不同意,则悔棋失败,维持当前状态不变。4、认输。当用户棋子无路可走或者已经明显是输的情况下可以认输,结束棋局,然后可以新建重新开始。认输不需经过对方同意,只要一方认输,即可结束棋局。5、言和。当双方谁也无法获得胜利的时候可以言和。具
22、体描述如下:(1) 一方申请言和,另一方同意,则言和成功,双方和棋。(2) 一方申请言和,另一方不同意,则言和失败,维持当前状态不变。6、交换。按照中国象棋的规则,红方先走,黑方后走。而交换功能可以让上方交换红黑,自由地选择先走或者后走。交换只能发生在双方都开始之前,若棋局已经开始就不能交换了。具体描述如下:(1) 一方申请交换,另一方同意,则双方交换红黑成功。(2) 一方申请交换,另一方不同意,则双方交换红黑失败。7、检测。检测网络连接是否正常,是否能和对方通信。当对一段时间内无动作时,可以点击检测,看网络是否通畅。若检测请求发送失败或者对方无响应都表明网络连接出现问题。8、保存。把当前的棋
23、局保存为棋谱,以供阅读(文本文件棋谱)和复盘(二进制文件棋谱)。关于棋谱的介绍请看后面的章节2.6。2.6 棋谱2.6.1 棋谱介绍中国象棋棋谱,就是把一盘棋中走的每一步棋记录下来保存。由于棋盘有9条纵线,对于红方来说用汉字“一”到“九”表示,对于黑方来说用阿拉伯数字“1”至“9”表示,以此来区分红方和黑方。棋谱中的每一步都有四个字组成,详细情况如下:(1) 第一个字一般是棋子的名字,如“炮”、“马”等。(2) 第二个字一般是棋子所在的纵线,红方用汉字表示,黑方用阿拉伯数字表示。(3) 第三个字是“平”、“进”和“退”中的一个,表示棋子的移动方向。(4) 第四个字视情况而定。棋子若是平移或是走
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 中国象棋 设计 本科毕业 论文
限制150内