网络五子棋五子棋设计与实现 (程序代码+任务书+说明书+外文翻译+演示文稿)_第1页
网络五子棋五子棋设计与实现 (程序代码+任务书+说明书+外文翻译+演示文稿)_第2页
网络五子棋五子棋设计与实现 (程序代码+任务书+说明书+外文翻译+演示文稿)_第3页
网络五子棋五子棋设计与实现 (程序代码+任务书+说明书+外文翻译+演示文稿)_第4页
网络五子棋五子棋设计与实现 (程序代码+任务书+说明书+外文翻译+演示文稿)_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络五子棋五子棋设计与实现摘要五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性它既有面的广阔,又有点的忠言,而且简单易懂人民群众喜爱闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。用户范围广阔,系统内容丰富益智,具有较高的市场前景。本次毕业设计通过C+语言在QT环境下编程,设计了五子棋游戏软件,使该软件具有美观友好的截面。使得能够实现选择颜色,悔棋,帮助,退出等功能,但是这次毕业设计的最大难点在于五子棋判断胜负的设计,已经对于在上,右上,右,右下,下,左下,左,左上。八个方向四条直线上的检索判断胜负。本游戏是以C+语言作为开发工具。本文详细地介绍了五子棋游戏软件设计的全过程,描述了该软件的功能。关键词五子棋;C+;QT;设计IAbstractGobangoriginatedinChineseancientChinesetraditionReversione.ModernGobangJapanesecalledPente,translatedasRenju,EnglishcalledGobangorFIR.Gobangcannotonlyenhancethethinkingability,improveintelligence,andrichinphilosophywillhelpself-cultivation,ithasthebroad,andabitofadvice,butalsoeasytounderstandthepeoplelovetoseeandhear,andprofoundskillsandahighlevelofinternationalcompetition;thechessculturalsourceflowlength,withthemysteryofOrientalandWesternintuition;boththeconceptofthefield,alsohavepoint.ItistheexchangeofChineseandWesternculture,isthecrystallizationoftheancientandmodernphilosophy.Awiderangeofsystemusers,contentrichpuzzle,highmarketprospects.ThegraduationdesignthroughtheC+languageintheQTprogrammingenvironment,designedtheGobanggamesoftware,crosssection.Thesoftwarehasfriendly.Toenablecolorselection,afterwards,help,exitandotherfunctions,thebiggestdifficultybutthisgraduationdesignisthedesignofGobangtojudgetheoutcome,isfor,right,right,right,down,left,left,left.Searchtodeterminetheoutcomeofeightdirectionsonfourlines.ThegameisbasedonC+languageasadevelopmenttool.ThispaperintroducesindetailthewholeprocessofGobanggamesoftwaredesign,describesthesoftwarefunctions.KeywordsC+;QT;Gobang;design目录1.绪论.11.1五子棋介绍以及开发环境.11.1.1五子棋简介.11.1.2五子棋国内发展情况.21.1.3开发以及运行环境.31.1.4QT的基本特征综述.32需求分析以及可行性研究.52.1需求分析.52.2可行性研究.53概要设计.93.1总体思路.93.2数据字典.104详细设计.114.1窗体的设计.114.2棋盘以及功能按钮的设计.114.3判断胜负的设计.154.4主要类和函数.174.4.1主要的使用到的类.174.4.2主要成员函数.195测试.235.1测试的重要性及目的.235.2测试结果.246补充说明.29参考文献.30致谢.31外文资料.321.绪论计算机已经深入到人们日常工作和生活的方方面面,各程序软件也逐渐进入大众的视野,并开始影响人们的工作生活,与计算机相关的产业进入快速发展期。而且在高速的生活中,电脑小游戏已经成为了人们放松精神和打发无聊时间的一种非常有效的方式。而五子棋这种规则简单的传统游戏也是深受广大人民的喜爱。Windows系统的推出使得电脑从一些大公司,比较大的科研基地,进入了广大人民的家里。每个行业的人们不需要经过很多的培训或者特别的技术把我就可以在自己的家里轻松的完成对电脑的操作。然而,虽然现在世界上已经充满了各式各样的软件。但是呢有些用户的特殊要求也不是能够直接找一个软件就能满足了的。作为一名学生,特别是软件技术专业的程序编程学生,在系统的学习了一些编程语言之后,更加觉得自己应该多动手编程,做实训项目。不进行实际的操作,很难在编写程序上有进步!编写自己的软件,即使是小程序,你也会向前迈进一大步。我个人比较喜欢linux,在linux环境下的QT4.7通过这次设计,把所学的各项技能很好的整合在一起。又一次感受到了编程的乐趣,从中也学到了不少知识技巧,向前迈进了一大步!本次毕业设计通过C+语言在QT环境下编程,设计了五子棋游戏软件,使该软件具有美观友好的截面。使得能够实现选择颜色,悔棋,帮助,退出等功能,但是这次毕业设计的最大难点在于五子棋判断胜负的设计,已经对于在上,右上,右,右下,下,左下,左,左上。八个方向四条直线上的检索判断胜负。本游戏是以C+语言作为开发工具。本文详细地介绍了五子棋游戏软件设计的全过程,描述了该软件的功能。1.1五子棋介绍以及开发环境1.1.1五子棋简介五子棋是一种两人对弈的纯策略型汉族棋类益智游戏,棋具与围棋通用,由中国汉族人发明,起源于中国上古时代的传统黑白棋种之一。主要流行于华人和汉字文化圈的国家以及欧美一些地区。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋已在各个游戏平台有应用。古代五子棋棋盘与围棋棋盘是通用的,汉魏时为十七路(1717)棋盘,至南北朝时即已流行十九路(1919)棋盘,直至1931年出现所谓五子棋专用棋盘如图所示,为十五路(1515)棋盘,形状近于正方形,平面上画横竖各15条平行线,线路为黑色,构成225个交叉点,邻近两个交点的距离纵线约为2.5厘米,横线约为2.4厘米。棋盘正中一点为“天元”。棋盘两端的横线称端线,棋盘左右最外边的两条纵线称边线。从两条端线和两条边线向正中发展而纵横交叉在第四条线形成的四个点称为“星”。天元和星应在棋盘上用实心小圆点标出。五子棋的棋盘简洁明了在横竖橡胶的点进行下棋。老少皆宜简单易懂,它的棋盘简洁明了只是单纯的15条竖线跟15条横线就构成了整个“战场”。它的棋盘如图1-1。图1-1五子棋棋盘1.1.2五子棋国内发展情况五子棋是我国古代的、传统的黑白棋种之一,大约在南北朝时期随围棋一起传入朝鲜、日本等地。五子棋在日本叫“连珠棋”。据日本史料记载,五子棋先由中国传到朝鲜,再由朝鲜传到日本。当时主要在皇宫和贵族大家庭中流行。到元禄末年,在日本京都,这一当时被称做“五目碰”、“五格”的棋戏在民间开始盛行起来,无论武士、僧侣、农夫都能参加这一活动。到日本明治32年(公元1899年),经过公开征名,“连珠”这一名称才被正式确定下来。从这之后,连珠这一活动已经过了不断的改良,主要是规则的变化,例如1899年规定禁止黑白双方走“双三”,1903年规定只禁止先行的黑方走“双三”,到了1912年规定,黑方被迫走“双三”亦算输;1916年规定,黑方也不许走“四、三、三”;1931年规定,黑方不许走“双四”,并规定将19X19道线的围棋棋盘改为15X15道线的五子棋专用棋盘。通过一系列的规则变化使连珠五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。目前,连珠五子棋这一棋类运动已迅速在国际上发展起来。有40多个国家和地区已开展了五子棋活动。许多国家的人对五子棋都有不同的爱称,例如韩国人把五子棋称为“情侣棋”,言下之意是说情人之间下五子棋有利于增加情感的交流;欧洲人称之为“绅士棋”,喻棋手下五子棋的君子风度胜似绅士;美洲人称之为“商业棋”,意思可能是边下五子棋边谈生意,是商业贸易之桥;日本称之为“中老年棋”,表示五子棋适合成熟的中老年的生理特点和思维方式。不同语言、地区的人们都可以借助五子棋这一简单而又深奥的棋艺进行交流、比赛,以增进友谊。1988年8月8日,国际连珠联盟(RIF)在瑞典宣告成立。五子棋在我国的很多大、中城市发展很快,尤其是首都北京,曾多次举办了五子棋的各种比赛,中央电视台体育频道也长期播放着五子棋的讲座,还有,一些大型企业和单位也曾举办过五子棋的比赛。预计在几年后,五子棋将成为国内最受欢迎的项目之一。1.1.3开发以及运行环境本次的五子棋游戏的设计与实现的完成时在HP笔记本型号6450b上设计开发并完成的。HP6450b使用英特尔酷睿i5处理器CPU主频2.53GHZ采用DMI2.5GT/S的规格总线,3MB的3级缓存。2G内存,512独显。在HP6450b上安装Ubuntu12.0.4的版本。Ubuntu12.0.4是一个以桌面应用为主的linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词(译为友帮拓或乌班图),意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu基于Debian发行版和GNOME桌面环境,与Debian的不同在于它每6个月会发布一个新版本。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。在Ubuntu12.0.4系统下面安装QT4.7。在QT4.7中完成设计编码与实现。1.1.4QT的基本特征综述QT是Trolltech公司的标志性产品,是一个跨平台的C+图形用户界面(GUI)工具包,QT应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置(QT/windowsQT/MacQT/x11(linux))QT对不同平台的API进行了进行了专门的封装(文件处理,网络)。Qt是一个完整的应用程序开发框架,包括一个类库和一些跨平台、国际化的工具。它是挪威TrollTech公司的标志产品。Qt工具箱有三种不同的版本,一种是专业版(ProfessionalEdition),另一种是免费版(FreeEdition),还有一种是嵌入式免费版(EmbeddedfreeEdition)。专业版用于创造成功的商业贸易方面的跨平台软件;而自由版已经成为用C+GUI工具包在Linux上进行自由软件开发的主流,它是Linux上流行的KDE桌面环境的基础。由于Qt是一个跨平台的GUI工具箱,它确保了软件非常方便的应用于绝大多数操作系统。Qt是一个跨平台的C+图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt有着众多的优势:优良的跨平台特性、面向对象、丰富的API、支持2D/3D图形渲染、支持OpenGL、支持XML,集成了开源浏览器网页排版引擎Webkit等等。而Qt/Embedded,缩写为Qt/E,是为了开发自由软件所提供的嵌入式版本,包含GUI和基于Linux的嵌入式平台开发工具。1.面向对象QT有模块设计和注重软件构件或元素的可重用性的特点。2.构件支持QT提供信号和槽概念,这是一种类型安全的方法,他允许回调,并支持对象之间在彼此不知道对方信息的情况下进行合作,这使得QT非常适合于构件编程。3.友好的联机帮助QT提供大量的联机参考文档。并且可以很轻松的通过互联网访问QT官网,在诺基亚公司的网页上面可以查询到特别多的帮主文献,以及开发帮助,还有可以与全世界的使用者在论坛上面交流使用心得,与发表问题。QT程序的编译和链接:一般来说,无论是C、C+、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是.obj文件,UNIX下是.o文件,即ObjectFile,这个动作叫做编译(compile)。然后再把大量的ObjectFile合成执行文件,这个动作叫作链接(link)。编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C+文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(O文件或是OBJ文件)来链接我们的应用程序。链接器只管函数的中间目标文件(ObjectFile)。2需求分析以及可行性研究2.1需求分析需求分析是软件生存周期中重要的一个步骤,只有通过需求分析才能把软件的需求描述为软件的需求规格说明,从而奠定软件开发的基础。在期阶段了解本软件必须达到用户要求的各种功能。弄清用户希望软件做到什么。准确的表达用户的要求。功能需求:1)界面简洁,亲切友好用户能够清楚的知道该怎么使用。2)提供帮助,关于等说明。3)具有悔棋,选择颜色,关闭等功能。4)符合五子棋的基本规则。本软件是一个五子棋游戏程序,主要功能是可以实现人机对战,电脑的AI较高,通过游戏,玩家能深刻体会到五子棋游戏的乐趣。确保应用程序具有良好的系统性能,友好的用户界面。较高的处理效率,便于使用和维护。采用成熟技术开发,使系统具有较高的技术水平和较长的生命周期。2.2可行性研究社会和经济意义:五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性它既有面的广阔,又有点的忠言,而且简单易懂人民群众喜爱闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。项目前景:用户范围广阔,系统内容丰富益智,具有较高的市场前景。1.技术可行性运用linux操作系统,以QT4.7为平台开发界面友善简洁,功能完整的五子棋游戏。2.经济可行性一目了然的界面设计,是使用者可以非常轻松的操作。而且系统开发成本低在现有的计算机上可以很轻松的完成整个环境的需求。3.操作可行性新的系统运行后对现行旧的系统带来包括(工作环境、管理方式、组织机构等)的后果以及影响来进行评判和估计。同时更需要考虑到的是:对现有的管理人员进行培训,补充、分析在给出的时间里是不是能完成预定开发系统的任务等系统的开发,是典型的Mis开发,主要是对数据的处理,包括数据的收集,数据的变换,及数据的各种报表形式的输出.只需要鼠标的点击就可以完成真个游戏。4.法律可行性从法律角度看,Android是个开放的平台,代码是开放的,加上基于Android的教学管理系统主要为师生提供便利,作为毕业设计,并不以盈利为目的,且是自主开发设计,因此不会在社会上引起侵权或其它责任问题,在法律上是可行的。可行性研究的目的不在于提出解决问题的方案,而在与研究解决问题的必要性和可能性。在软件开发实践中,由于软件开发人员或用户对市场的了解不充分,对技术的把握不成熟,对进行开发的各项风险估计不足等因素,许多问题都不能在预期的时间范围内或资源限制下得到解决。如果开发人员能够尽早预知存在的问题没有合理的解决方案,那么尽早停止项目的开发就能够避免时间、资金、人力和物力的浪费。流程图是以特定的图形符号加上说明,表示算法的图,称为流程图或框图。流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。例如,一张流程图能够成为解释某个零件的制造工序,甚至组织决策制定程序的方式之一。这些过程的各个阶段均用图形块表示,不同图形块之间以箭头相连,代表它们在系统内的流动方向。下一步何去何从,要取决于上一步的结果,典型做法是用“是”或“否”的逻辑分支加以判断。流程图是揭示和掌握封闭系统运动状况的有效方式。作为诊断工具,它能够辅助决策制定,让管理者清楚地知道,问题可能出在什么地方,从而确定出可供选择的行动方案。流程图有时也称作输入-输出图。该图直观地描述一个工作过程的具体步骤。流程图对准确了解事情是如何进行的,以及决定应如何改进过程极有帮助。这一方法可以用于整个企业,以便直观地跟踪和图解企业的运作方式。流程图使用一些标准符号代表某些类型的动作,如决策用菱形框表示,具体活动用方框表示。但比这些符号规定更重要的,是必须清楚地描述工作过程的顺序。流程图也可用于设计改进工作过程,具体做法是先画出事情应该怎么做,再将其与实际情况进行比较。流程图的优缺点优点:形象直观,各种操作一目了然,不会产生“歧义性”,便于理解,算法出错时容易发现,并可以直接转化为程序。缺点:所占篇幅较大,由于允许使用流程线,过于灵活,不受约束,使用者可使流程任意转向,从而造成程序阅读和修改上的困难,不利于结构化程序的设计。为了便于识别,绘制流程图的习惯做法是:1)圆角矩形表示“开始”与“结束”。2)矩形表示行动方案、普通工作环节用3)菱形表示问题判断或判定(审核/审批/审评)环节。4)用平行四边形表示输入输出。5)箭头代表工作流方向。本次程序设计的流程图如图2-1。图2-1程序流程图(4)用户的需求五子棋游戏的一个特点是先行的一方优势很大,因此在职业比赛中对黑方做了种种限制,以利公平竞争。五子棋的比赛规则如下:(1)黑棋先手、白棋后手,从天元开始相互顺序落子;(2)最先在棋盘横向、纵向或斜向形成连续的同色五个棋子的一方为胜;(3)黑棋禁手判负、白棋无禁手。黑棋禁手有“三、三”、“四、四”和“长连”,包括“四、三、三”和“四、四、三”。黑棋只能以“四、三”取胜;(4)如分不出胜负,则到为平局;(5)五连与禁手同时形成,判胜;(6)黑方禁手形成时,白方应立即指出。若白方未发现或发现后不立即指出,反而继续落子,则禁手失效,不再判黑方负。五子棋是黑白双方或两个人之间的竞技活动,由于对黑白双方规则不同,黑棋必须先行。一般采用猜先的方法来决定谁执黑先行,即双方各抓一种颜色的几枚棋子,大数减小数,单数双方交换,偶数不换;黑方在落下关键的第五子即形成五连的同时,如又形成禁手,此时因黑方已经成五,而“五”在五子棋中是至高无上的,故禁手失效,黑方胜;所谓黑方形成禁手,是指黑方落下一子同时形成两个或两个以上的活三、冲四及长连等。此时白方应立即指出,自然而胜。专业连珠五子棋虽然对黑棋采取了种种限制,但是黑棋先行的优势依然很大。因此,在高段位的专业比赛中,又出现了三种特殊的规定:(1)“指定打法”:指比赛双方按照约定好的开局进行对弈。例如“斜月局”、“长星局”等。(2)“三手可交换”:指黑棋下第二手棋盘面第三手棋之后,白方如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方此方法不适用于指定开局打法,而用于随意开局。采用此规定以后,黑棋就不会再使用诸如“浦月”、“花月”之类的必胜开局了。(3)“五手两打”:指黑棋在下盘面上关键的第五手棋时,必须下两步棋,让白方在这两步棋中任选一步,然后再继续下。采用这一系列规定以后,黑棋先行就再无优势可言。3概要设计3.1总体思路首先应当刻画出来一个窗体可以最大化,最小化和关闭。然后在窗体中刻画自己分配的区域:键盘区域,标示区域,功能区域。键盘区域:传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为1919,现代一般采用1515棋盘。棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。标示区域:在生个窗体上面显示游戏的名称。在各个需要用到的按钮上面显示该按钮的名字,最好就是用它应该实现的功能命名。然后再分开每个区域。功能区域:1.选择颜色的单选框:建立一个单选框其中应包含两个选择即1:选择为黑色。2选择为白色。(同一时间只能选择一个颜色作为自己的)。2.显示信息的小块:设立两个按钮使其能够对其居中。在使用鼠标单击help按钮式能够显示出来关于这个游戏的玩法帮助说明。鼠标单击about按钮时能够显示出来这有游戏的关于信息。3.悔棋,重新开始,关闭小块:当游戏进行到一定的时间段时可以根据自己的意向使用鼠标单击悔棋按钮自动清除上一步黑白双方所下的旗子,使其还原到上上次落子的状态。当本局已经不想再继续下去时可以通过鼠标的单击重新开始的按钮使其直接还原到刚开始选择颜色的那步若是不再选择颜色则直接进行游戏,此时所执的颜色与选择重新开始以前所选择的颜色相同。当游戏者不想玩这个游戏的时候点击关闭按钮能够关闭整个游戏包括窗体。最后就是再实现下棋时的规则要求双方轮流下子,棋盘刻画也是一黑一白交替进行,悔棋清除也是清除一黑一白的清除,然后再实现判断胜负,当有一方完成5个或者5个以上的相同颜色的旗子连在同一条直线上时能够显示出来胜负的结果并且本局游戏结束。考虑到整个的下棋过程(无论对方是电脑抑或其他网络玩家)可以分为:己方落子、等待对方落子、对方落子、设置己方棋盘数据这一系列过程,因此一人游戏类、二人游戏类和棋盘类之间的关系参考了抽象工厂模式,以实现对两个不同模块进行一般化的控制。(一)棋盘类整个架构的核心部分,类名为Board。封装了棋盘的各种可能用到的功能,如保存棋盘数据、初始化、判断胜负等。用户操作主界面,主界面与Board进行交互来完成对游戏的操作。(二)游戏模式类用来管理人机对弈/网络对弈两种游戏模式,类名为CGame。CGame是一个抽象类,经由它派生出一人游戏类COneGame和网络游戏类CTwoGame。设计基于QT的五子棋程序只需要从硬件升接受消息就可以了,当鼠标在某个窗口内移动时,系统会不断地发出鼠标移动消息WM_MOUSEMOVE,并把鼠标的最新位置传给该窗口。如果在窗口的范围内按下鼠标左键,系统就会发出“按下左键”的WM_LBUTTONDOWN消息给该窗口,等到用户放开按键后,再发出“放开左键”的WM_LBUTTONUP消息给该窗口。3.2数据字典表1主要类功能表类标识符类名功能Qframe五子棋主程序窗体类它是程序界面设计部分的实现,它主要负责界面的绘制,判断下棋位置是否正确。chess五子棋主程序运行类在界面上绘制棋盘,实现鼠标与棋子之间的转换并下棋,判断胜负,输出胜利者。Resource主要资源类它包括手工绘制的棋子及一些程序需用到的资源。4详细设计4.1窗体的设计1.定义一个窗体类在其public属性中设置必要的属性,然后完成setupUi的函数。在函数中设置成个窗体大小为固定大小(745,570)。并将其需要的按钮图片棋盘刻画图片棋子图片全部添加进去,使得窗体在初始化的时候整个需要用到的按钮和棋盘全部显示出来。2.在Edit中打开真个布局图画,然后使用鼠标拖拽完成棋盘区域,显示信息区域,功能区域的划分,并且在其各自的区域里设置相应的属性以及相应的对象。3.讲一些可以直接设置好的简单功能在各自的属性列表中通过信号和槽设置完毕。实现简单的退出最小化等功能。使用到的类Board:Board()deleteboardIcon;for(inti=0;iDrawChess(x,y);/画棋子/chessnow换色switch(chessnow)caseB:chessnow=W;break;default:chessnow=B;/*填完新棋子,按八个方向搜索棋盘,是否有五连*/*作按8个方向,准备递归查找*/*newchess用引用传递*/voidBoard:ScanBoard()/下句为显示中文QTextCodec:setCodecForTr(QTextCodec:codecForName(GB2312);for(inti=1;iCheckStart(i)+newchess-CheckStart(9-i);/1左上,9-1=8右下if(count=6)/新棋子按两个方向递归,自己加了两次/胜利对话框之前(下完棋),需要刷新,更改过期棋子的图片RefreshChesspic();QMessageBoxmessageBox(this);QAbstractButton*initialize;switch(chessnow)caseB:initialize=messageBox.addButton(tr(BlackWin!)QMessageBox:ActionRole);break;caseW:initialize=messageBox.addButton(tr(WhiteWin!),QMessageBox:ActionRole);break;messageBox.exec();if(messageBox.clickedButton()=initialize)/*胜利对话框,跳出循环,棋盘重置,删除不用的指针和chess对象*/InitializeBoard();/*初始化后,停止各个方向上的查找*/break;/*点击鼠标,填新棋子*/*1、填子是否有效*/*2、控制黑白棋交替填子*/从上面的代码中可以看到,这个棋盘类已经包含前面设计的内同,每个功能都有一个成员函数实现。声明玩累的结构和成员后,现在就用基础函数实现这个类。3.绘制棋子Draw这是非常重要的一个函数,它根据参数给定的坐标和颜色绘制棋子。绘制的详细过程如下:1)将给定的棋盘坐标换算为绘图的像素坐标。2)根据坐标绘制棋子位图。3)如果先前曾下过棋子,则利用R2_NOTXORPEN将上一个绘制棋子上的最后落子指示矩形擦除。4)在刚绘制完成的棋子四周绘制最后落子指示。Node:Node(intx,inty,Node*parentnode)for(inti=0;i=0&m-i=0&m+i=0&n-i=0&n+i=0&m-i=0&n-i=0&m+i=0&n+i=0&m+i=0&n-i=0&m-i=0&n+i=5)return1;/左右搜索,相加大于等于5,表示5连成功,返回1elsereturn0;/表示没有5连,返回0/*功能:空格位置填子进行预测,空格棋子附近两个格内有棋子才是合法字节点(10个子内,合法落子点为1个空格范围内)*/*传入参数*/voidDecision:BlankFilter(char(*realgrid)15,char(*legalblank)15)/计算当前棋子总数intchessnum=0;for(inti=0;i0&countblank0)legalblankij=T;/自己进攻的机会,权重加/计算有没有三三,冲四,三四/*其实判断棋子胜利用的是递归,这里再用搜索的方法有点重复,但是考虑到统一查找方法的复杂度,暂时用两种方法来实现*/*两种方法也不完全一样,分开算更容易理解*/*方法1:递归。判断胜利时只找同色棋子,其两个相对的方向上结果相加*/*方法2:数组循环。判断是否有连,这个连可以间隔一个空格,而且不能两个方向上递归相加,因为空格处没有对象,递归中断*/*经分析,用两种方法比较好,方法2用1、0、-1表示三种棋,好计算*/5测试5.1测试的重要性及目的在软件生命周期中,软件的测试占据着一个重要的位置,在传统的瀑布模式中,软件测试学只是处于在运行维护阶段之前,是软件产品交付给大众用户使用之前用以保证软件质量重要的一个方法。近来,软件工程界中更加趋向于一种新观点,即认为软件每一阶段中的生命周期都理应包含测试,因此使检查本阶段的成果能不能接近预期的结果目标,进而尽可能早一点发现到错误并加以改正,如果测试不是在早期阶段进行的,那么错误将延时扩散,最后常常会导致成品测试面临巨大的困难。对于软件来讲,事实上,无论采用任何方法或者任何技术,系统中仍然会出现错误。采用新的开发方式、先进的语言、完善的开发过程,可以最大限度的降低错误的引进,但还是不能完全的杜绝软件中有可能出现的错误,这些引入的错误需要通过测试找出来,系统中错误的密度也需要通过测试来进行估量。测试是所有学科的工程的最基本的组成单元,是软件开发的一个很重要的部分。自有设计程序的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40以上。而在软件开发的总成本中,用在测试上的开销要占30到50。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护程序的工作相当于二次开发,甚至是多次开发,其中一定又包含了很多测试的工作。在实践中,测试软件非常困难,从而常常使我们敷衍了事或望而却步,这是因为对测试还是存在了一些错误的看法和不正确的态度,这包括:1.难以给测试的工作人员某种成就感;认为测试工作并不像编码和设计那样容易进行发展2.在测试的过程中发现错位其实是一种对责任者工作的否定;测试是以发现软件的错误为目标的,这是非建设性的,甚至还是具有破坏性的,3.测试的工作过程非常枯燥无味,因此不足以引起我们的兴趣和爱好;4.测试工作需要是细致而艰苦的进行;5.一般来说,我们都对自己编写出来的程序比较盲目的自信,在发现到错误的时候,可能会顾虑别人对我们自己开发的能力的看法。以上这几个观点对测试系统的工作进行是尤为不利的,我们必须要端正态度、澄清认识,才可能将系统产品的质量加以提高。如果测试程序的目的是为了尽可能全面地找出系统中的错误,那么测试就必须直观的针对软件较为复杂的部分或者是前期出现错误比较多的位置。1.系统的测试是为了检查出错误而执行程序的运行过程;2.测试则是为了证明程序中有错误,而不是用来证明程序没有错误;3.每一个好的测试的用例是因为它能检查到至今未出现的错误;4.一个很成功的测试就是检查出了至今未能发现的错误的测试。这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有检查出错误的测试也有它的价值,完整的测试是测试质量评定的一种方式。5.2测试结果总体测试整个界面的效果,悔棋是否成功,能否完成重新开始的功能,能否在任何一方完成五子连接的时候,以及帮助和关于等按钮的功能是否能够正确的显示。1.刻画出来一个窗体可以最大化,最小化和关闭。然后在窗体中刻画自己分配的区域:键盘区域,标示区域,功能区域。整个窗体运行是否可以运行出来结果如图5-1图5-1运行结果的整体界面2.当一方完成比赛后是否可以显示获胜结果即表示当一方检测某一方的棋子在四条直线八个方向上完成五个或五个以上的棋子相连胜利标志位boolvictory的值为1时完成整个棋局并得到相应获胜棋子的颜色并输出胜利结果是返回如图5-2,图5-3图5-2白棋获胜黑色旗子获胜时是否能正确显示结果如图5-3图5-3黑棋获胜3.悔棋如果本方下棋判断已经落下的旗子棋子是否大于两颗若是返回值为正数激活“悔棋”按钮如果点击接受按钮,则在双方棋盘上清除最新下的两个棋子,然后请双方继续进行下子操作。是否能够成功清除棋子与重新下子如图5-4图5-4悔棋前的棋盘悔棋后如图5-5图5-5悔棋后的棋盘4.帮助与显示的时候使用的是Qobject类里的Slot方法,由于该方式有很多的不同的功能所以需要在帮助的选项里面搜索API在其中选择自己用到的函数。并且将显示的内容。帮助显示与关于显示能否正确实现结果如图5-6,图5-7图5-6帮助的显示结果图5-7关于的显示结果5.在每一局游戏开始的时候都需要调用这个函数将棋盘清空,也就是棋盘的初始化工作。在这个函数中,主要发生了这么几件事情:将m_data中每一个落子位都置为无子状态(-1)。按照传入的参数设置棋盘等待标志m_bWait,以供先、后手的不同情况之用。使用delete将m_pGame指针所指向的原有游戏模式对象从堆上删除。在下棋时选择重新开始棋局能够成功结果如图5-8,图5-9图5-8重新开始前图5-9重新开始以后6补充说明由于计算机在落子时选取的是得分最高的一步落子,所以如果玩家在开局的时候不改变落子步骤,那么将会获得从头至尾相同的棋局。由于在选择棋子颜色以后整体重新布局,所以即使在下到一半的时候再重新选择棋子的颜色,已经下到一半的残局也会全部清除。考虑到程序的响应速度,人机对弈算法只对玩家的棋子进行了一步的推测。参考文献1王世江,鸟哥.鸟哥的linux的私房菜.北京:人民邮电出版社,2010.72刘忆智,等.linux从入门到精通.北京:清华大学出版社,2010.13博韦,等.深入理解LINUX内核.北京:电子工业出版社,2004.34陆文周.QT5开发及实例.北京:电子工业出版社,2004.25霍亚飞QT快速入门.北京航空航天出版社,2012.56孙全党王吴迪赵枫朝Java程序设计应用教程,电子工业出版社,2006.27(美)布兰切特(JasminBlanchette)、萨默菲尔德(MarkSummerfield).C+GUIQT4编程北京:电子工业出版社,2013.58艾朱斯特(AlanEzust)、艾朱斯特(PaulEzust)。C+QT设计模式。北京:电子工业出版社,2012.79萨默菲尔德(MarkSummerfield).QT高级编程。北京:电子工业出版社10kennethA.ReekC和指针人民邮电出版社。北京2008致谢在本次毕业设计中,曾遇到过不少问题,如果只靠我个人的努力,很难按时完成毕业设计(虽然只是写一篇论文和和简单的程序设计),在此,我衷心感谢我的指导老师潘浪老师,从他身上学到了很多东西。认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益匪浅,他严格的要求更是使我在过程中明白要扎实的学习,无论在理论上还是在程序设计方面遇到的问题都是找指导老师帮助的,给予我无私帮助和悉心的教导,使我的毕业设计得以顺利的按时完成。另外,我还要感谢在大学四年来对我有所教导的老师,他们孜孜不倦的教诲不但让我学到了很多知识,而且使我掌握了学习的方法,更教会了我为人处世的道理,在此表示感谢。由于毕业设计时间较短,同时还要兼顾日常工作和其他方面的学习,所以该毕业设计还有许多不尽如人意的地方,这些都有待今后进一步加强、改进、完善,不过我想我一定会在今后的过程中不断地学习,自我加强,使自己取得更大的进步,并在各方面去全面的学习和发展。对于在大学里面所有老师们的悉心教导以及同学们对我的帮助,我衷心的表示感谢。外文资料C+isdesignedtobeanextensibleplatformforrapidlydevelopingprogramanalysistools.SeveralfeaturesofC+facilitatethis:Byconvention,C+writteninlowercaselettersrefersjusttotheprogramthatabstractsdatafromaC+program.CIA+writtenincapitallettersreferstothesystemmadeofthatabstractorandallofthetoolsthatusethedatabaseitgenerates.Entitiesincludeles,macros,types,functionsandvariables.SeparationofInformationExtractionandPresentation:Theprocessofextractinginformationfr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论