欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    网络中国象棋设计-本科毕业论文.doc

    • 资源ID:91617544       资源大小:1.64MB        全文页数:106页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    网络中国象棋设计-本科毕业论文.doc

    摘要摘要近年来,随着互联网的高速发展和普及,越来越多的人开始通过网络来休闲娱乐。为了继承和发扬传统文化,使更多的人喜欢中国象棋这项传统的活动,本设计采用跨平台的Qt作为开发框架,以模块化的设计方法和面向对象的编程思想,通过设计合理的数据结构和网络通信方法,实现了有新建棋局、开始棋局、认输、悔棋、言和、交换红黑、显示和保存棋谱、复盘、网络对战和人机对战等众多功能的网络中国象棋游戏。关键词:中国象棋;网络对战;人机对战ABSTRACTIn recent years, with the rapid development and popularization of the Internet, more 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 programming 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 saving 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 棋谱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.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 聊天功能测试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 中国象棋简介中国象棋历史悠久,关于它的起源由于资料不详,所以至今也没有一个统一的答案。但可以确定的是在唐代已经基本成型,到宋代已基本和现代无异,到了明代把一方的“将”改名为“帅”,这和现代中国象棋就一样了。中国象棋以前称作象棋或象戏等,至于现在前面为什么要加“中国”两字,只是为了和国际象棋区别开来。中国象棋棋盘9纵10横共90个点,红方从右到左用汉字“一”到“九”表示,黑方另一端从右到左用数字“1”到“9”表示。 红、黑双方各有16个棋子,分别是一个帅(将)、两个士(仕)、两个相(象)、两个车、两个马、两个炮、5个兵(卒),其中括号内是黑方的不同文字表述,意思是一样的。棋盘和棋子的详细情况如图1-1所示。总的来说,中国象棋共有7种棋子,它们都有不同的走法。对于将和帅来说,只能在九宫格内移动,每次只能沿直线走一步;对于士和仕来说,也只能在九宫格内移动,但每次只能沿斜线走一步;对于相和象来说,不允许过河,只能在己方范围沿斜线走两步,且中间不能有棋子阻挡;对于车来说,只要无棋子阻挡,上下左右沿直线随便走;对于马来说,走“日”字步,细分是先走长步,再走短步,若长步上有棋子阻挡,则不能走,俗称“蹩马腿”;对于炮来说,只能走直线,如果不是吃子,则和车的走法一致,否则需要和所吃棋子之间有且仅有一个棋子;对于兵和卒来说,每次只能沿直线走一步,未过界前只能前进,过界后可以平移和前进,但不能后退1。正是这种各有不同且极为有趣的走法,极大地增加了中国象棋的趣味性。对于中国象棋来说,要想获得最后的胜利,不能仅仅凭借所谓的运气。因为棋子多样,走法多样,中国象棋极大地考验着下棋者的智商,技巧、策略等在中国象棋对战中必不可少。正因为如此,它极大地锻炼着人们的大脑,让双方静下心来思考该怎样走。中国象棋自古以来都是一种休闲娱乐的游戏。古时就有许多人以下棋自娱自乐,并逐渐产生了“马后炮”、“弃车保帅”等许多歇后语和成语,足见中国象棋的影响力。到了现代,中国象棋正式成为国家体育项目之一,每年都有一些全国大赛在举行,比如“全国象棋锦标赛”和“全国象棋等级赛”等。伴随着这些大赛的举行,涌现出一大批热爱象棋并棋艺高超的个人。其实还有许多人,他们并没有参加各种各样大赛,只是在茶余饭后下几盘棋自娱自乐,使生活变得不在那么无聊和寂寞。中国象棋不仅在中国国内广受欢迎,在东亚和东南亚许多国家也有许多人爱好象棋。在世界各地相继成立了一些象棋协会,教人们下象棋,并组织一些象棋赛事。图 11 中国象棋1.2 项目背景和意义象棋在中国拥有悠久的历史,有着丰厚的文化底蕴,从古至今都有很多人喜欢象棋,是千年来不断发展变化的一种休闲娱乐方式。现代的中国象棋到宋代已基本成型,由于其益智、有趣、休闲,直到现在仍有许多象棋爱好者。以前人们只能当面对战,可是到了信息化的今天,因为计算机的出现以及互联网的普及,通过网络进行对战就成为一种可能,更是一种新的潮流。现在比较有名的软件就是QQ游戏中的“中国象棋”,它不仅提供了一个使千里之隔的两人能够下棋的平台,还增加了积分、等级、道具等功能,大大的增加了趣味性,使得下棋变得更方便有趣了。另外,中国象棋是一项智力游戏,千年来都是人和人下棋,可是现在随着计算机技术高速发展的今天,人机对弈也成为可能。如今就已经出现了各种各样的人机对弈象棋软件,它们各有各的优缺点。比如“中国象棋大师”、“象棋旋风”和“象棋巫师”等有人机对战的功能。计算机本不会自己独立思考,只能受控于人类,但是随着人工智能技术的不断进步,计算机也有了一定的“思考”能力,而这一技术也被广泛应用于各个领域,包括游戏方面。因此,人机对弈也就成了当今象棋软件的发展趋势。当前在象棋人机对弈这一方面比较有名的算法有最大最小搜索算法、Alpha-Beta搜索算法、静态搜索算法等2。现在用许多中国象棋引擎可用,比如ElephantEye、ANITA等。引擎和界面之间的协议是中国象棋通用引擎协议(Universal Chinese Chess Protocol,简称UCCI),通过这个协议界面和引擎之间就可以通信3。现在有许多人致力于象棋引擎算法的研究。当今社会已经离不开互联网了,它几乎无处不在,是现代社会近几十年的产物;而象棋则有千年历史,是传统文化的结晶。网络象棋就把传统和现代两者结合在一起了,使我们能够通过现代技术来体验古人对弈的乐趣,使得传统文化得到继承和发扬,吸引更多人投入到这项运动中来。1.3 主要问题和关键技术1.3.1 主要问题这个课题的最终目标就是完成一个具有网络对战功能的中国象棋游戏软件,并要求其界面要美观友好,交互性强,操作简单。为了完成这一任务,需要解决以下主要问题:第一,要了解中国象棋的规则,知道怎么下象棋,象棋的每种棋子走法,怎么判断输赢,知道了这些才会知道该去做什么以及该怎么去做;第二,数据要存储为哪种格式,怎么交换数据,怎么通过网络传递数据,这是整个设计的基础;第三,怎么进行交互,两个人怎么通过网络可以协调的玩游戏;第四,悔棋、认输、言和、交换、棋谱、复盘等功能要如何处理,如何处理它们之间的关系,这些都需要清晰的数据结构和程序逻辑;第五,人机对战要如何实现,机器AI(人工智能)要怎么做,如何协调它与网络对战之间的关系等。1.3.2 关键技术(1)编程语言采用C+语言。一方面C+语言是自己熟悉的编程语言,另一方面C+语言也适合这个课题,因其面向对象的思想和封装的特点正是本课题所需要的。(2)图形界面采用Qt编写。Qt是一个跨平台的图形界面开发库,支持Windows、Linux、Mac OS等许多的操作系统。Qt以GPL、LGPL和商业协议三种协议同时授权,正是由于这种开放性,Qt不断发展壮大,功能越来越多,支持的操作系统也越来越多,特别是加大了对嵌入式平台的支持,现在已经支持Windows CE、Symbian、Maemo 5等平台,并且在将在今年发布的Qt 5中添加对IOS和Android平台的预览支持4。(3)网络通信采用TCP协议。因为要实现网络对战功能,所以必须要通过网络传递和交换数据。对于本课题而言,传送的数据量少,并对可靠性有要求,因而选择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 系统提示功能这个功能用于在界面上显示一些系统提示信息,用于提示用户。这些提示信息包括一下几个方面。(1) 刚进入游戏时系统的欢迎信息;(2) 认输、悔棋、言和、交换等提示信息;(3) 赢、输、和的提示信息;(4) 网络连接状态的提示信息;(5) 聊天信息发送失败的提示信息。这些提示信息可以方便用户了解当前的一些状况,使用户可以容易地判断和处理相关问题。2.3 网络连接功能有了网络连接功能,才能进行网络对战。对战双方可以通过网络进行连接,这是实现网络对战的基础。当用户想要进行网络对战时,只要一方建立服务器,另一方进行连接,由此双方之间可以进行通信,交换数据。详细的功能描述如下所示:(1) 一方进入游戏,选择服务器模式,输入可用的端口号,然后点击确定,就会在这个输入的端口号上监听连接,等待客户端的连接。此时应该把自己的IP地址和端口号告之另一方,好让对方进行连接。(2) 另一方进入游戏,选择客户端模式,然后输入服务器的IP地址和端口号,然后点击确定,双方建立连接。(3) 建立连接后,双方都点击开始,就开始游戏了。(4) 如果连接失败或者连接中断,就关闭程序并重启,检测IP地址和端口号是否有误,再次进行连接。2.4 聊天功能因为能进行网络对战,双方可以通过网络下中国象棋,如果不能进行交流,相互传递信息,遇到了问题或其它一些情况就无法告诉对方。所以,聊天功能也是十分重要的。因为上面已经说了是网络连接的通信,聊天信息可以直接发送给对方而不用经过中间服务器的中转。另外,当只有选择网络对战时才有聊天功能。因为复盘和人机对战都是在本地进行,只有自己一个人,自己不需和自己聊天,也就不需要聊天功能了。关于聊天功能的详细描述如下所示:(1) 一方在聊天框里输入要发送的信息,然后点击发送。如果网络连接正常,另一方应该收到聊天信息并显示在聊天框里面。(2) 对于另一方来说,同样的道理。(3) 如果网络连接有问题,在点击发送后,系统会提示发送聊天信息失败。(4) 因为中国象棋分红黑双方,故在此设定红方发送的聊天信息字体颜色是红色,相对的,黑方发送的聊天信息的字体颜色是黑色,这样便能很好的区分是谁发的聊天信息了。另外,在显示聊天信息的时候,在最前面加上当前时间,这样便知道是什么时候收到的信息。2.5 游戏控制对于中国象棋来说,一些功能是众所周知也是必须的,比如悔棋、认输、言和等。对于本系统来说,有新建、开始、悔棋、认输、言和、交换、保存、检测、退出。下面就详细说明一下这些功能。1、新建。当在一盘棋结束的时候或者在下棋的过程中,一方可以请求新建棋局的请求,只要另一方同意,即可开始新一盘棋局。具体描述如下:(1) 一方请求新建棋局,另一方同意,则开始新棋局。(2) 一方请求新建棋局,另一方拒绝,则维持当前状态不变。2、开始。当刚进入游戏或者新建棋局时,需要双方都要点击开始,一盘棋局才会开始。具体描述如下:(1) 刚进入游戏时,需要用户点击开始,以表明自己已经准备就绪。当双方都准备就绪时才能开始下棋。(2) 新建棋局时,道理同上,需要用户点击开始,以表明自己已经准备就绪。当双方都准备就绪时才能开始下棋。3、悔棋。俗话说“落子无悔”,但在这里还是提供了悔棋的功能,方便用户的学习和交流。关于悔棋功能的具体描述如下:(1) 一方申请悔棋,另一方同意,则悔棋成功,棋子回到原位。(2) 一方申请悔棋,另一方不同意,则悔棋失败,维持当前状态不变。4、认输。当用户棋子无路可走或者已经明显是输的情况下可以认输,结束棋局,然后可以新建重新开始。认输不需经过对方同意,只要一方认输,即可结束棋局。5、言和。当双方谁也无法获得胜利的时候可以言和。具体描述如下:(1) 一方申请言和,另一方同意,则言和成功,双方和棋。(2) 一方申请言和,另一方不同意,则言和失败,维持当前状态不变。6、交换。按照中国象棋的规则,红方先走,黑方后走。而交换功能可以让上方交换红黑,自由地选择先走或者后走。交换只能发生在双方都开始之前,若棋局已经开始就不能交换了。具体描述如下:(1) 一方申请交换,另一方同意,则双方交换红黑成功。(2) 一方申请交换,另一方不同意,则双方交换红黑失败。7、检测。检测网络连接是否正常,是否能和对方通信。当对一段时间内无动作时,可以点击检测,看网络是否通畅。若检测请求发送失败或者对方无响应都表明网络连接出现问题。8、保存。把当前的棋局保存为棋谱,以供阅读(文本文件棋谱)和复盘(二进制文件棋谱)。关于棋谱的介绍请看后面的章节2.6。2.6 棋谱2.6.1 棋谱介绍中国象棋棋谱,就是把一盘棋中走的每一步棋记录下来保存。由于棋盘有9条纵线,对于红方来说用汉字“一”到“九”表示,对于黑方来说用阿拉伯数字“1”至“9”表示,以此来区分红方和黑方。棋谱中的每一步都有四个字组成,详细情况如下:(1) 第一个字一般是棋子的名字,如“炮”、“马”等。(2) 第二个字一般是棋子所在的纵线,红方用汉字表示,黑方用阿拉伯数字表示。(3) 第三个字是“平”、“进”和“退”中的一个,表示棋子的移动方向。(4) 第四个字视情况而定。棋子若是平移或是走斜线,则这个字就是棋子落点所在的纵线。棋子若是沿直线进或退,则这个字就是进或退的步数。(5) 上面说前两个字的时候都加以一般两字,说明还有特殊情况。比如红方两个炮都在纵线五上,此时用“炮五”就无法明确到底的哪个棋子要移动,按照标准,此时应该用“前炮”或者“后炮”表示。对于一种棋子有两个的棋子来说,都可以用“前”和“后”加以区分,但对于兵或卒来说,各有5个棋子,“前”和“后”就无法表示了,此时可以用“前”、“中前”、“中”,“中后”和“后”表示,若只一个字就再补上兵或卒所在的纵线即可。2.6.2 文本文件棋谱文本棋谱就是按照上面所说的记录方法,把一盘棋的每一步都以文本字符的形式保存在文件中。文本形式的棋谱文件可以使用户很方便的阅读。2.6.3 二进制文件棋谱文本文件棋谱虽然方便了人的阅读,但电脑识别起来就比较困难。因此把每一步所走的信息以二进制数据的形式保存在二进制文件中,就可以方便电脑识别,以实现复盘功能,复盘功能请见章节2.7。2.7 复盘复盘功能就是用程序打开棋谱文件,就能在界面上一步步展示出所记录的棋子走法,就相当于回放整个对弈过程。2.8 人机对战此处人机对战就是指人和电脑可以下象棋。怎么让去电脑“思考”该怎么走,这是一个难题。第三章 概要设计 第三章 概要设计3.1 中国象棋的模块设计根据系统的功能需求和实际情况,系统的模块划分如图3-1所示。图3-1 网络中国象棋模块划分其中左下角的界面模块还可以划分为5个小模块,如图3-2所示。图3-2 界面模块子模块划分其实,除了图3-1所示的那些模块外,还有一个象棋信息模块,它负责维护下棋类型、棋子颜色、IP地址和端口号这些信息,供各个模块使用。下面先简要说一下各模块的功能:(1) 数据模块(ChessData),存储并维护棋子的状态和位置信息。(2) 规则模块(ChessRule),判断是否合乎中国象棋规则。(3) 界面模块(ChineseChess),整个所看到的界面。棋盘模块(ChessWidget),负责绘制棋盘和棋子。聊天模块(ChatWidget),负责输入和显示聊天信息。功能按钮模块(PushButtonWidget),显示开始、悔棋等功能按钮。显示棋谱模块(ManualWIdget),负责显示棋谱。提示信息模块(TipsWidget),负责显示系统提示信息。(4) 棋谱模块(ChessManual),负责记录、打开、保存棋谱。(5) 音效模块(ChessSound),负责播放音效。(6) 调度中心模块(ChessManage),这是核心模块,是整个程序的逻辑控制和处理中心,游戏控制的功能在此实现。(7) 信息转发模块(ChessDispatch),信息中转站,统一各方的接口,使调度中心模块只需写一套接口就可以与各方通信。(8) 复盘模块(ChessReplay),负责复盘。(9) 服务器模块(ChessServer),建立服务器。(10) 客户端模块(ChessClient),建立客户端。(11) 计算机接口模块(ChessComputer),负责连接信息转发模块和计算机模块,处理一些简单的请求。(12) 计算机模块(Computer),通过计算得出电脑该怎么走棋。图3-1中各模块之间关系用数字顺序标注,下面简要说明各个模块之间的关系。(1) 数据模块和调度中心模块之间的关系:调度中心模块负责修改数据模块中的数据。如图3-3所示。图3-3 数据模块和调度中心模块关系图(2) 调度中心模块和规则模块之间的关系:调度中心模块向规则模块发送一条走棋信息,将会从规则模块得到这步走棋是否合乎规则的判断结果。如图3-4所示。图3-4 调度中心模块和规则模块关系图(3) 规则模块和数据模块之间的关系:规则模块在判断规则的时候需要从数据模块获取数据。如图3-5所示。图3-5 规则模块和数据模块关系图(4) 界面模块和数据模块之间的关系:界面模块中的棋盘模块需要从数据模块中获取数据来绘制棋盘和棋子。如图3-6所示。图3-6 界面模块和数据模块关系图(5) 界面模块和调度中心模块之间的关系:界面模块中的棋盘模块和功能按钮模块把得到的鼠标按键信息发送给调度中心模块;界面模块中的聊天模块把用户输入的聊天信息发送给调度中心模块;调度中心模块把从外面接收到的聊天信息发送给界面模块中聊天模块;调度中心把接收到的提示信息发送给界面模块中的提示信息模块;调度中心模块把接收到的一些操作信息发送给界面模块中的功能按钮模块,让其弹出相应的对话框。如图3-7所示。(6) 界面模块和棋谱模块之间的关系:界面模块中的显示棋谱模块从棋谱模块获取棋谱信息并显示出来。如图3-8所示。(7) 调度中心模块和棋谱模块之间的关系:调度中心模块给棋谱模块发送信息让其记录棋谱。如图3-9所示。(8) 调度中心模块和音效模块之间的关系:调度中心模块向音效模块发送信息,让其播放相应音效。如图3-10所示。图3-7 界面模块和调度中心模块关系图图3-8 界面模块和棋谱模块关系图(9) 调度中心模块和信息转发模块之间的关系:调度中心模块和信息转发模块之间相互发送聊天信息和下棋信息。如图3-11所示。图3-9 调度中心模块和棋谱模块关系图图3-10 调度中心模块和音效模块关系图图3-11 调度中心模块和信息转发模块关系图(10) 复盘模块和棋谱模块之间的关系:棋谱模块负责解析棋谱文件,复盘模块因而可以从棋谱模块获得棋谱文件中每一步的走棋信息。如图3-12所示。图3-12 复盘模块和棋谱模块关系图(11) 复盘模块和信息转发模块之间的关系:复盘模块把从棋谱得到的走棋发送给信息转发模块。如图3-13所示。图3-13 复盘模块和信息转发模块关系图(12) 服务器模块和信息转发模块之间的关系:服务器模块和信息转发模块之间相互发送聊天信息和下棋信息。如图3-14所示。图3-14 服务器模块和信息转发模块关系图(13) 客户端模块和信息转发模块之间的关系:客户端模块和信息转发模块之间相互发送聊天信息和下棋信息。如图3-15所示。(14) 计算机接口模块和信息转发模块之间的关系:计算机接口模块和信息转发模块之间相互发送下棋信息。如图3-16所示。图3-15 客户端模块和信息转发模块关系图图3-16 计算机接口模块和信息转发模块关系图(15) 计算机接口模块和计算机模块之间的关系:计算机接口模块向计算机模块发送一个请求,计算机模块会返回给计算机接口模块一步走棋信息。如图3-17所示。(16) 计算机模块和数据模块之间的关系:计算机模块在计算该怎么走的时候会从数据模块获取数据。如图3-18所示。有了上面这些模块的划分以及它们之间的关系,需求分析中的功能就可以根据这些进行设计,后面几节就会讲这些功能的设计。图3-17 计算机接口模块和计算机模块关系图图3-18 计算机模块和数据模块关系图3.2 系统提示功能的设计由章节3.1可知,提示信息最终会在界面模块中的提示信息模块中显示出来。提示信息模块只负责显示最终的信息,调度中心负责向提示信息模块添加提示信息,而其它模块向调度中小发送提示信息。该功能的数据流图如图3-19所示。图3-19 系统提示信息功能数据流图总的来说,这个功能的实现思路就是,其它模块把要显示的提示信息都交给调度中心,调度中心把自己要显示的提示信息和其它模块交给自己的提示信息再发送该提示信息模块,最终显示在界面上。3.3 网络连接功能的设计网络通信用两种模式可供选择,分别如图3-20和图3-21所示。图3-20 客户端-服务器-客户端通信模式图3-21 网络连接通信模式对于本系统来说,客户端-服务器-客户端通信模式虽然也是可行的。但考虑到只有两方进行通信,为了方便快捷,采用网络连接的通信模式更适合。网络连接的通信模式不仅直接方便,还省去了维护中心服务器的工作。由章节3.1可以看到,里面有服务器模块和客户端模块这两个模块。看到这两个模块的名字并不代表着此系统采用客户端-服务器-客户端通信模式。因为就算采用网络连接通信模式,也需要其中一个建立服务器,另一个进行连接。也就是说,对于客户端-服务器-客户端通信模式来说,用户双方都是客户端,而对于网络连接通信模式来说,用户双方一个是服务器,一个是客户端。在用户刚打开程序的时候,会首先出来一个选择界面,有4个选项可供用户选择,分别是服务器、客户端、复盘和人机对战。如果选择服务器,就应该输入要监听的端口号;如果选择客户端,就要输入要连接的服务器的IP地址和端口号;复盘和人机对战因为就在本机,所以不需要输入什么。用户只能从这四个选项中选择一项。当用户选择服务器的时候,程序会在所输入的端口号建立服务器,进行监听,等待客户端,也就是等待另外一位用户的连接。相对的,当用户选择客户端的时候,程序会根据所输入的IP地址和端口号去连接远程服务器,也就是去主动连接另外一位用户。本系统在网络传输层采用TCP协议,是因为数据量小且对可靠性有要求,相对于UDP协议TCP协议更合适5。在网络应用层用的是自己设计的协议,这个协议会在下一章详细设计与实现里面详细论述,在这里只是简要说明:将下棋信息编码成32位无符号整数,并在前面加上不同的标志以区别下棋信息和聊天信息,其中下棋信息包括棋子的移动信息和悔棋、认输、交换等功能的信息,它们都被唯一编码。由于没有一个中心服务器来维护信息,所以用户双方各自维护自己的信息,若在网络通信的过程中发生了什么问题或错误,就会导致两方的信息不一致,也没有办法来纠正问题或错误,只有重新开始游戏才行,这个是采用网络连接通信模式的缺点。3.4 聊天功能的设计有了网络连接网络通信的基础,聊天功能也可以设计了。首先看一下聊天信息是怎么发送和接受到的,数据流图如图3-22、图3-23、图3-24和图3-25所示。图3-22 作为服务器发送聊天信息图3-23 作为服务器收到聊天信息图3-24 作为客户端发送聊天信息图3-25 作为客户端收到聊天信息如上面4个图所示,聊天信息就沿着图中箭头所指的方向传递,发送聊天信息和收到聊天信息正好是两个相反的方向。因为只是两个人之间的聊天,采用的也是网络连接通信模式,故聊天功能按此设计。3.5 游戏控制功能的设计这一部分的功能基本都在调度中心模块里面实现,也可以说调度中心是整个程序的核心。当调度中心模块收到鼠标点击信息或者是聊天信息时,会把这些信息进行处理和转化,废弃无用的信息,把有用的信息整理后发送给相应放入模块来处理。在这个系统中信息分为两类,分别是聊天信息和下棋信息,而下棋信息又分为两类,分别是移动棋子信息和新建、悔棋、交换等操作信息。因为棋盘是9纵10横,可以用2维坐标表示,32个棋子按序从0开始编号,这样的话就可以对移动棋子信息进行唯一编码,再在前面加上不同的标志位,也就可以对操作信息进行唯一编码。在聊天信息和下棋信息前面加上不同的前缀,就可以同一编码所有信息了。因而对于每一条编码过的信息,都可以知道这条信息到底是做什么的了。关于详细的编码信息请见下一章。1、新建功能的设计。新建就相当于初始化游戏,它把游戏的状态重置为和初始状态一样。因此对于新建功能来说,它就可以这样实现,把各个模块中表示游戏状态的信息和其它的一些信息重置为和刚进入游戏一样就可以了。这些信息包括各个棋子的位置信息、己方是红方还是黑方信息、按钮的状态信息、棋谱信息以及控制游戏流程的一些信息等。把这些信息重置后,游戏就像刚打开一样。新建游戏需要对方同意,因此需要发送新建游戏请求,若对方同意则重置游戏,否则维持当前状态不变。新建按钮在功能按钮模块,当点击它时,按钮模块会把这个信息告诉调度中心,由调度中心做出处理。2、开始功能的设计。之所以要有开始功能,是有两个原因的:一个是因为要通过网络对战,需要用开始来表明自己准备好;另一个是因为有交换红黑的功能。在此系统中要求只能在开始游戏前才能交换红黑,如果有了开始这个功能,只要自己不点击开始游戏就不会开始,这样就可以在自己点开始之前进行交换。对于开始功能,需要有两个标志,分别表示双方是否开始。如果两个标志都显示开始,则开始游戏,否则维持状态不变。游戏开始之后,红方先走,黑方后走。开始按钮在功能按钮模块,当点击它时,按钮模块会把这个信息告诉调度中心,由调度中心做出处理。3、悔棋功能的设计。悔棋功能的实现依赖与棋谱模块,棋谱模块负责记录每一步所走的信息,当悔棋时,需要从棋谱模块获得上一步所走的信息,然后根据这个信息来修改数据模块中的数据,这样就实现了悔棋。悔棋也需要对方同意,因此需要向对方发送悔棋请求,若对方同意则进行悔棋,否则维持状态不变。只有在轮到自己走棋的时候才可以悔棋,悔棋一次只能撤销双方各一步棋,但可以悔棋多次,直到恢复到和刚进入游戏一样才不能也无法悔棋。悔棋按钮在功能按钮模块,当点击它时,按钮模块会把这个信息告诉调度中心,由调度中心做出处理。4、认输功能的设计。认输这个功能就比较简单,只要告诉对方自己认输就可以了。认输不需要对方同意,只有在轮到自己走棋的时候才可以认输。认输按钮在功能按钮模块,当点击它时,按钮模块会把这个信息告诉调度中心,由调度中心做出处理。5、言和功能的设计。对于言和功能,需要对方同意才行。因此需要向对方发送言和请求,如果对方同意则双方言和,否则维持当前状态不变。只有在轮到自己走棋的时候才可以言和。言和按钮在功能按钮模块,当点击它时,按钮模块会把这个信息告诉调度中心,由调度中心做出处理。6、交换功能的设计。只有在游戏开始之前才能进行交换,所谓交换就是红方变黑方,黑方变红方。实现这个功能需要做到两点,第一点比较简单,就是把自己的颜色从红变为黑,或者从黑变为红,第二点是这样的,在棋盘上总是己方在下面,对于红方来说红方在下面,对于黑方来说,黑方在下面,所以当进行交换后棋盘上的棋子位置也需要变化,其实只需要以棋盘的中心点为中心旋转180°即可,这样就可以实现交换红黑的功能。对于交换功能,需要对方同意才行。因此需要向对方发送交换请求,如果对方同意则双方交换红黑,否则维持当前状态不变。交换按钮在功能按钮模块中,当点击它时,按钮模块会把这个信息告诉调度中心,由调度中心做出处理。7、检测功能的设计。检测功能,即检测网络是否正常,是否能够和对方通信。对于此功能是这样设计的,当用户点击检测按钮时,会向对方发送一个网络检测请求,如果请求发送失败则说明网络连接有问题,无法通信,如果发送成功,但对方没有响应,也说明网络有问题,不能正常通信。相反,如果发送成功且能收到对方发来的相应信息,则表明网络连接正常。8、保存功能的设计。保存功能指的是要保存棋谱,这个工作主要由棋谱模块完成。棋谱分为文本棋谱和二进制棋谱。在下棋的过程中每一步所走的信息棋谱模块都会计算出每一步的棋谱,包括文本棋谱和编码过的二进制的棋谱。当用户点击保存按钮时,会把棋谱模块中保存的棋谱信息写入文件,一个扩展名为txt的文件就是文本棋谱,另一个扩展名为ccm的文件就是二进制棋谱。文本棋谱直接打开就可以看,二进制棋谱是为复盘做准备使用的。关于棋谱的记录请见章节3.6。3.6 棋谱功能的设计棋谱功能中核心问题就是棋谱的记录。每一条棋谱不是平白无故可以得到的,它需要经过计算才可以得到。计算棋谱需要下面这些信息:(1) 棋子颜色;(2) 棋子名称;(3) 棋子起点位置;(4) 棋子落点位置;(5) 棋子起点所在纵线此种棋子数量及其位置。有了这些信息,根据中国象棋棋谱记录规则(详见章节2.6.1),就可以计算出文本棋谱。至于二进制棋谱则就是编码过的下棋信息。3.7 复盘功能的设计复盘功能就是将棋谱文件中的信息一步步演示出来,就相当于回放下棋过程。对于这个功能我是这样想的,从前面的模块图中可以看到复盘模块和服务器模块、客户端模块、计算机接口模块都与信息转发模块相连,对于信息转发中心来说,他从外面(复盘模块、服务器模块、客户端模块和计算机接口模块)获得一条下棋信息,然后发送给调度中心模块来处理,对于调度中心来说,它不关心这条信息到底是谁发来的,它只管执行就可以了。因此,对于复盘模块来说,它是从棋谱模块获取下棋信息,对于服务器模块和客户端模块来说,它们是从网络获取下棋信息,对于计算机接口模块来说,他是从计算机模块获取下棋信息,但不管从什么地方获取的下棋信息,由信息转发模块封装后对调度中心来说没有多大区别。这样设计不仅方便,使许多功能可以公用,更使系统结构变得简单而且清晰。3.8 人机对战功能的设计对于人机对战来说,核心问题是计算机如何“思考”该怎么走。由于当前计算机只能按照既定的指令来做,不能像人的大脑一样具有自主思考和判断的能力,所以计算出合理的走法是一个难题。现在用的比较多的是Alpha-Beta搜索算法、静态搜索算法等,它们的实用性都在实际应用中得到了验证。算法思路是先得到所有可能走法的一个集合,若某种走法可以直接吃掉对方的将或帅,那么就选择这种走法,如果没有直接获胜的走法,那么就对所有走法给出一个局面评价,然后按照评分的大小给这些走法排序,然后选出评分最高的走法即可。这样做有许多缺点,一是只思考一步,没有考虑多步,二是评分是死的,不能很好地适应棋局的变化,三是没有考虑获胜的条件是吃掉对方的将或帅。这个设计还有很多可以完善的地方以提高计算机的智能。3.9 音效功能的设计这个功能实现起来比较简单。只需要播放音效对应的音频文件即可。调度中心模块会向音效模块发送一个音效编号,音效模块只需要播放音效编号对应的音频文件即可。3.10 界面的设计界面模块包括棋谱模块、功能按钮模块

    注意事项

    本文(网络中国象棋设计-本科毕业论文.doc)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开