ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:518.17KB ,
资源ID:24114759      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24114759.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西洋跳棋智能程序设计.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西洋跳棋智能程序设计.docx

1、西洋跳棋智能程序设计西洋跳棋智能程序设计学 院计算机学院专 业计算机科学与技术班 级学 号姓 名指导教师负责教师2016年6月摘 要随着社会发展,科技进步,电脑得以普及。电脑游戏伴随着网络和电脑的普及深深的吸引了很多玩家,特别是快节奏的生活,传统的两个人一张桌子的下棋方式逐渐被取缔,人机对弈棋牌类电脑游戏被越来越多的人认可。西洋跳棋作为一款益智类棋牌游戏,不仅可以休闲娱乐,达到游戏自身放松的目的,同时,可以锻炼玩家的思维能力。计算机博弈是非常实际的计算机科学与技术研究课题,也是非常富有挑战性的人工智能领域的研究方向。西洋跳棋是一种平均分支因子较少的棋种,博弈树算法可以得到很好地应用。本游戏是利

2、用Qt开发工具与C+开发语言,利用搜索算法设计最优落子的一款西洋跳棋人机博弈游戏。Qt是一个多平台的C+图形用户界面应用程序框架,一种完全面向对象的的程序开发软件,具有很好地封装机制、较高的模块化程度和良好的应用性。C+是一种应用非常广泛的面向对象的计算机程序设计语言,利用C+语言在游戏中的编程,使得西洋跳棋游戏具有美观的界面,人机对弈方面电脑具有较高的智商。本文主要是对西洋跳棋设计的详细阐述,分别从软件设计背景,需求分析,总体设计和详细设计深入的介绍了软件的开发,并通过对软件的调试分析详细介绍了软件的使用方法,同时,本文深入比较了多种搜素按算法在本设计中的应用。关键词:西洋跳棋;人工智能;Q

3、t;C+AbstractWith the development of society and the progress of science and technology, computer has been popularized. Computer games with the popularity of computer networks and deeply attracted a lot of players, especially the fast pace of life, traditional two table chess has gradually been banne

4、d, man-machine chess chess computer game is more and more people recognized. As a puzzle game of chess, checkers can not only entertainment, to achieve the goal of their game to relax, at the same time, you can exercise players thinking ability.Computer game is a very practical computer science and

5、technology research, is very rich challenge in the field of artificial intelligence research direction. Checkers is an average branching factor less chess, the game tree algorithm can be applied well.The game is using Qt development tools and C + + programming language, using search algorithms for t

6、he design of optimal Lazi a checkers human-computer game.Qt is a multi platform C + + graphical user interface application program framework, a fully object-oriented programming software, has a good encapsulation mechanism and high degree of modularization and good application of C + + is a kind of

7、widely used object oriented computer programming language, using C + + language in game programming, makes checkers game with beautiful interface, man-machine chess electric brain has a higher IQ.The main purpose of this paper is to checkers design are elaborated in detail, respectively, from the ba

8、ckground of software design, demand analysis, general design and detailed design deeply introduced software development, and through the software debugging and analysis of the usage of the software are introduced in detail. At the same time, this paper with various search element according to the al

9、gorithm in the design of the application.Keywords: checkers; artificial intelligence; Qt; C+1 前言1.1 研究背景西洋跳棋的起源无法追溯,根据大多数棋艺史家的考证,现在认为西洋跳棋起源于法国的南部地区。当今,例如国际象棋等游戏规则在西方已经统一标准,拥有一套统一化的走棋规则,但西洋跳棋至根据地域不同今却流传着几十种不同的游戏规则,例如波兰跳棋、英国跳棋、中东跳棋等。西洋跳棋下棋过程特别注重玩家对整体棋局的掌控性。西洋跳棋玩法种类繁多,本次设计采用最通用的西洋跳棋规则。双方轮流走子,玩家执红旗先行,人机

10、轮流落子。规则规定:未成王的棋子只能沿斜线向对方左上或者右上前行一格(该格空出没有落子),且未成王的棋子只能前行不可后退。吃子时,对方的棋子在己方棋子斜对角格子的左上或者右上,且对方棋子左上或者右上格子没有其他棋子。加冕成王,游戏在双方底界设计了加冕线,当己方棋子到达对方底边界时,加冕成王,王棋与未成网的棋子区别在于王棋可以后退。胜负判断为两种情况,当一方棋子数量为零时,判断为对方游戏胜利;当双方棋子都无法移动后,由局面评估给出胜利一方。1.2 国内外研究状况当今,西洋跳棋在流行5000年的历史之后已经被计算机完全攻破。多年来,西洋跳棋一直被众多数学家、电脑学家和英国跳棋专家研究,取得了非常显

11、著的成功。早在1989年,乔纳森谢弗(Jonathan Schaeffer)开始了西洋跳棋项目的研究,在1994年,谢弗的计算机程序已经可以击败当时人类最顶尖的西洋跳棋大师。在之后的研究中,乔纳森谢弗联手艾伯特大学的学者共同研究出西洋跳棋程序“奇努克”,被誉为当今世界无法被战胜的跳棋程序。自1950年,香侬首次提出国际象棋解决方案揭开机器博弈发展序幕之后,诸多计算机爱好者和科学家在此领域不断研究,在九十年代初期,计算机连续战胜很多棋道大师,特别是1997年“深蓝”战胜世界棋王,人工智能在计算机博弈方面取得辉煌的成就。之后的研究中,相继攻克中国象棋等众多棋类。2016年3月谷歌Alpha Go与

12、韩国与韩国棋手李世石进行的围棋比赛中计算机以4:1战胜对手获得胜利,人工智能在下棋程序又一次重大进步。1.3 研究内容西洋跳棋是一款规则简单,易于上手的游戏,由于游戏的特性,可以提高玩家对全局的把握能力,并且可以提高玩家逻辑思维能力。本次设计研究内容主要包括以下介个方面:游戏界面设计:游戏界面的设计风格直接影响到玩家对游戏的兴趣,所以游戏界面设计在游戏设计中起到非常重要的作用,游戏界面设计主要为游戏开始界面。游戏棋盘设计:本游戏棋盘设计为标准西洋跳棋10*10的棋盘设计,棋盘中100个格子黑白分明落子明确,玩家可以很容易掌握棋盘。落子设计:落子设计分为玩家落子和电脑落子。玩家落子只需遵从游戏规

13、则即可,电脑落子采用博弈树搜索算法,寻找最优落子方案。局面评估设计:局面评估采用分类加权计算双方优势,最终判断局面胜负情况。1.4 课题意义目前,市面上棋牌类游戏种类繁多,例如中国象棋、跳棋等棋类游戏版本众多,但西洋跳棋游戏却在棋牌类游戏中特别少见,特别是网络上玩家可选择的西洋跳棋游戏制作简单,画面粗糙,加上许多让玩家不喜的广告,很难满足西洋跳棋爱好者的兴趣。因此需要一款设计画面精美,走棋风格合理的西洋跳棋程序来满足西洋跳棋爱好者的兴趣。本设计在过程中注重界面设计,Qt软件独特的界面设计功能在设计中可以为玩家设计出精美的界面,精美的开始界面有利于提高玩家的游戏乐趣。在游戏设计中,略高的电脑走法

14、,使玩家不会感到枯燥,玩家在下棋过程中提高自身棋艺的同时,不仅可以起到放松的作用,还可以锻炼玩家的逻辑思维能力和智力。2 需求分析及相关技术介绍2.1 软件设计总体目标西洋跳棋是一款益智类人机对弈棋类游戏。本款软件主要针对的用户为西洋跳棋爱好者和初学者玩家,玩家在使用软件过程中达到休闲娱乐,提高棋艺的目的。设计目标:第一,界面设计独特新颖,轻松自然,可以吸引玩家,使玩家达到放松的目的;第二,游戏难度适中,电脑走棋算法合理,适合初级玩家使用,使玩家在使用过程中可以达到提高棋艺的目的,但游戏难度不会过大,不可以让玩家使用过程中因游戏难度过高感到枯燥。2.2 系统基本功能本软件使用对象为游戏玩家,以

15、界面新颖,风格独特,走棋合理的特点为主,软件应包括游戏开始界面,棋盘,棋子,人机博弈,局面评估,胜负判断等内容,设计分为五个模块:1)开设界面模块:用户进入游戏,首先是欢迎界面,既游戏开始界面,玩家点击开始游戏按钮,进入游戏。2)棋盘设计:玩家进入游戏后,生成初始棋盘,棋盘为10*10共一百个格子,棋盘设计格子为黑白两色分别交错排布,便与玩家区分,棋子设计要求与棋盘形成对比色彩,便于玩家操作。3)人机对弈模块:本模块为程序设计的核心模块,玩家落子后,电脑根据搜索算法找到最优落子方法,可与玩家进行对弈。4)下棋规则模块:本模块为西阳跳棋程序的基础模块,判断落子地方和吃子情况。5)胜负判断模块:本

16、模块的目的是判断游戏胜负。以上为游戏软件主要功能设计,系统功能模块如图2.1所示图2.1 软件功能模块图2.3 西洋跳棋游戏规则说明1.游戏双方轮流走棋。2.棋子为成为王棋前,棋子只能向左上角或者右上角且无人占据的格子斜走一格。吃子时,敌方的棋子必须在己方棋子的左上角或者右上角的格子,而且该敌方棋子对应的左上角或者右上角必须没有棋子。3.当棋子到了对方底线,该棋子就可以加冕成王棋,王棋可以向后移动。4.若一个棋子可以吃棋,则必须吃子。5.若一方无法行走或者所有棋子均被吃,则该方算输。2.4 相关技术介绍本软件利用Qt5.2.0软件编写,编程语言为C+计算机编程语言编写。2.4.1 Qt软件简介

17、Qt是一个跨平台的C+应用程序和图形界面开发框架。于1991年由奇趣科技研发,2007年之后,Qt跨平台开发战略得以迅速发展,现在广泛用于图形用户界面程序开发。Qt的特点:优良的跨平台特性:Qt支持多平台运行,在不同平台下无需修改源代码便可以生成特有的图形界面风格。面向对象:由于Qt拥有非常良好的封装机制,所以,Qt的模块化程度较高,不同元件之间协同工作简方便。丰富的应用程序接口(API):Qt拥有非常多的C+类。除此之外,Qt还拥有大量的开发文档,支持XML技术。自Qt4.6之后Qt中引进Qt Quick,开发人员与设计人员可以协同创建动画模式界面和应用程序。Qt拥有简单漂亮的界面,同时简单

18、易学并且资料丰富,实用性很强。2.4.2 C+编程语言介绍C+编程语言是一种面向对象的程序设计语言,是由C语言发展而来。C+继承了C语言大部分特点,并在C语言的基础上进行了完善,添加了类,C+能够与C语言相互兼容。C+编程语言的优势:1在高级语言中处理运行速度最快的面向对象程序设计语言,目前市面上大多数游戏软件都是又C+来实现的。2语言灵活,功能强大,特别是类层次结构的设计。3C+标准定义细致,具有严谨、精确的特性,语法思路参差分明,语法结构明确。2.5 系统技术需求本程序采用Qt开发环境,编程语言使用C+编程语言的西洋跳棋游戏。开发环境:Qt Creator5.2.0运行环境:Windows

19、7 x64 3 系统分析及设计本章内容是在第二章的需求分析的基础上形成的程序设计蓝图,作为后续编码设计的依据。本章主要介绍了西洋跳棋程序开发的总体设计。3.1 系统总体设计3.1.1 模块化设计流程根据需求分析,游戏设计需要六大模块,每个模块功能实现如下:开设界面模块:设计开始界面。绘制棋盘与棋子设计设计模块:绘制棋盘,设计棋子。人机对弈模块:设计算法,实现人机对弈。下棋规则模块:根据规则判断落子地方和吃子情况。胜负判断模块:设计算法判断游戏胜负。3.1.2 系统总体构成流程西洋跳棋博弈软件构成如图3.1所示图3.1 西洋跳棋博弈软件构成图乙方为玩家,甲方为电脑。乙方遵循游戏规则落子,甲方通过

20、对当前局面进行局面评估,然后进行博弈树搜索算法进行搜索,形成当前最优落子,生成走法并落子,甲、乙双方落子后,当前局面在棋盘显示,电脑循环对棋盘当前局面扫描,经当前局面反馈给甲方机器博弈系统,甲方重新进行局面评估,生成走法。3.2 系统算法设计概述西洋跳棋人机对弈模块为系统的核心模块,算法采用极大极小值算法,算法的本质思想是:一方总是寻找对己方最有利的的走法,而另一方总是寻找对对方最不利的走法,其搜索树如图3.2所示 图3.2 极大极小搜索算法树根据算法树可知Min节点总是从其下一层Max中挑选估值最小的节点进行估值,Max节点刚好相反。在走棋过程中,遍历整颗搜索树,寻找对己方最有利的走法走子。

21、3.3 系统特点及功能结构3.3.1 系统特点1具有和谐的界面。界面设计美观,简洁。2具有易操作性。本系统避免过多按钮在游戏中给玩家带来的不便,设计简单,已于操作。3适用于广大西洋跳棋爱好者,面向性广阔。4本系统是本地游戏,安全可靠3.3.2 功能结构通过上文需求分析和总体设计,本系统以5个模块为目标设计。其中,下棋规则模块为基础,为玩家和电脑落子提供基础规则,人机对弈模块为系统核心,本次设计采用极大极小人机博弈搜索算法设计了合理的电脑落子算法,绘制棋盘模块和胜负判断模块为本次设计的前提,为游戏的可行性提供保障,最后是游戏界面设计,为整体游戏进行美化。其具体模块及主要功能结构图如图3.2所示图

22、3.1 西洋跳棋整体设计及主要功能结构图4 详细设计4.1 游戏界面模块详细设计为了使游戏界面美观大方,从网络上选取图片,并用美图秀秀软件对所选图片进行美图修改,利用Qt库自带的paintEvent(QPaintEvent*e)函数设计了游戏开始界面,开始界面采用绿色图片作为背景图片,一方面可以缓解玩家视觉疲劳,另一方面,背景颜色与开始游戏按钮色彩区分明确,使整体设计达到简单、美观的效果。游戏界面模块流程图如图4.1所示图4.1 游戏界面模块流程图程序运行首先进入游戏开始界面,点击开始游戏按钮,将进入游戏。界面设计尺寸长为10cm,宽为8cm,并在界面中添加“开始游戏”按钮,该按钮有Qt编程工

23、具中的界面布局工具完成,关键代码如图4.2所示图4.2 界面设计模块开始游戏按钮添加关键程序通过界面背景设计和按钮添加,开始界面模块设计完成,开始界面模块设计效果图如图4.3所示图4.3 界面设计效果图4.2 棋盘设计模块详细设计该模块的主要功能是绘制棋盘和设计棋子,棋盘与棋子分为两种状态,一种是初始化状态,当点击开始游戏按钮后,进入游戏,此时,棋盘显示为初始化状态。初始化状态时,甲、乙双方各持有15枚棋子处于双方边界。另一种状态是走子或者吃子时,棋盘中棋子位置发生改变,甲、乙双方轮流走子,每次走子之后都将跟新一遍棋盘。棋盘绘制与棋子设计模块流程图如图4.4所示图4.1 棋盘绘制与棋子设计模块

24、棋盘设计包括棋盘绘制和棋子设计在高性能的博弈设计中,比特棋盘应用较为广泛,西洋跳棋智能程序设计也采用比特棋盘设计而成。棋盘设计了10*10共100个格子,其中50个格子用来落子,棋盘设计用4个64位无符号整型设计而成,如表4.2所示表4.2 棋子位置与对应比特关系表494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210由四元素组生成棋盘,棋盘初始状态为, 棋盘设计效果图如图4.2所示图4.1 棋盘设计效果图4.3 人机博弈模块设计详细设计4.3.1 博弈树算法设计人机博

25、弈模块为本次设计核心模块,而博弈树算法为本次设计核心算法。该模块设计主要目的是完成人机对弈过程。该过程设计核心算法为极大-极小搜索算法,算法的核心思想是,一方总是寻找对己方最有利的走法,另一方总是寻找对对方最不利的走法。在本次设计中,设计玩家为蓝色方,电脑为红色方,红色方为极大方,博弈树搜算算法设计的核心是红方通过搜索算法和局面评估函数找到对自己最有利的走法。计算机走棋由函数computer_go()设计完成。4.3.2 局面评估设计西洋跳棋是零和游戏,局面评估影响因素众多,本次设计主要对以下几个方面进行评估,分别为棋子和王棋的数量,处于安全位置的棋子和王棋的数量(安全位置是指处于底边或者边界

26、无法被对方吃子的位置),可以移动的棋子和王棋数量,还有防御棋子数量和进攻棋子数量。估值函数设计思路为:估值方法=电脑棋子数-选手棋子数-0.5*威胁棋子数(可能会被吃掉的棋子)估值函数最重要的任务是找到威胁棋子,在程序中由CalValue()函数设计完成。在设计中,函数InThreat()判断该棋子是否有可能被对方棋子吃掉,判断标准是对该棋子左上、右上、左下、右下分别判断。函数InBoard()则判断棋子当前位置是否处于边界。4.3.3 走法生成(1)普通棋子走法生成普通棋子走棋规则为棋子可沿对角线对方方向棋子周边移动一个,移动方向的格子为空。遇到吃子时,被吃的棋子周围有空格才可以吃子,其设计

27、流程如下,普通棋子走棋流程图如图4.6所示1若棋子列表不为空,则从棋子列表中取出一个棋子;2对该棋子相邻四个方向进行判断,若存在对方棋子且对方棋子后方格子为空,则将该走法加入走法栈中,否则到第步;3若走法栈不为空,则从走法栈中取出一个走法;4如果从棋子位置可以继续吃子,则按照第步继续走子;5否则若当前吃子数量大于最大吃子数量,则清空吃子走法列表;6若当前吃子数量等于最大吃子数量,则将该走法加入走法列表;7否则到第步;8若该走法最后一步落在加冕线上,则棋子加冕成王,否则到第步;9否则吃子走法终结图4.1 普通棋子走法生成流程图(2)王棋走法生成 王棋是由普通棋子到达加冕线转换而来,因此王棋走法与

28、普通棋子走法有部分相同,王棋走发生成流程图如图4.7所示,王棋走法流程如下,1若棋子列表不为空,则从棋子列表中取出一个棋子;2对该棋子相邻四个方向进行判断,若从在对方棋子且对方棋子为空,则将该走法加入走法栈中,3将后面所有空格子走法加入走法栈中,否则到第步;4若走法栈不为空,则从走法栈中取出一个走法;5如果从棋子位置可以继续吃子,则按照第步继续走子;6否则若当前吃子数量大于最大吃子数量,则清空吃子走法列表;7否则若当前吃子数量等于最大吃子数量,则将该走法加入走法列表;8否则到第步;9否则到第步;10否则吃子走法终结图4.1 王棋走法生成流程图4.4 游戏规则模块详细设计本模块主要功能是实现游戏

29、按照规则落子,西洋跳棋游戏规则为,游戏双方轮流走棋。棋子为成为王棋前,棋子只能向左上角或者右上角且无人占据的格子斜走一格。吃子时,敌方的棋子必须在己方棋子的左上角或者右上角的格子,而且该敌方棋子对应的左上角或者右上角必须没有棋子。当棋子到了对方底线,该棋子就可以加冕成王棋,王棋可以向后移动。若一个棋子可以吃棋,则必须吃子。若一方无法行走或者所有棋子均被吃,则该方算输。游戏规则在程序中有函数CanMove()设计完成,普通走子规则由函数Computer_Can_Move()生成,普通棋子吃子规则由函数Computer_Can_Eat()设计完成。代码if(_piece-GetStatus()!=

30、piece:king) return false;完成了普通棋子不能后退,王棋可以后退的游戏规则。游戏规则模块流程图如图4.8所示图4.1 游戏规则模块流程4.5 胜负判断模块详细设计本模块设计主要是在游戏结束后判断玩家和电脑的胜负情况。胜负判断有两种情况,一种是一方无法走棋,则该方判定为输,另一种是一方在棋盘中棋子数目为零。胜负判断流程图如下图4.8所示图4.1 胜负判断模块流程图双方轮流落子之后,每次落子都会更新棋盘,根据流程图设计,首先由系统判定游戏是否结束,在程序设计中,游戏是否结束设计函数GameOver()判定,判定标准为一方棋子数目为零或者无法走子,判定游戏结束之后,判定玩家和电脑的赢家。程序中函数IsHostWin()判定电脑是否取得胜利,玩家胜负判定由函IsAwayWin()设计,评定流程与计算机是否胜利流程相同,判定条件为客队棋子是否可以移动,计算机判定胜利过程流程图如图4.9所示图4.2 计算机胜负判定流程图5 运行及调试5.1 开始界面调试情况程序运行,进入游戏开始界面,如图5.1所示图5.1 游戏开始界面运行情况说明:程序运行,进入游戏开始界面,界面画质清楚,点击开始游戏按钮,进入游戏良好。5.2 棋盘初始化调试情况游戏开始,进入游戏,此时棋盘为初始化状态,如图5.2所示图5

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1