资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
人工智能课程设计-五子棋2一引言 .31.1 五子棋简介 .31.2 五子棋的 AI 构想 .3二.开发工具可行性分析 .5三需求分析 .6四程序设计 .64.1 程序设计特点 .64.2.程序总体设计 .7五代码分析 .85.1 初始化赋值系统 .85.2 初始化获胜组合 .95.3 重新设定玩家的获胜标志 .95.4 处理鼠标事件 .105.5 获胜检查算法 .125.6 电脑算法(1) .145.7 电脑算法(2) .17六心得体会 .20七参考文献 .203一引言人工智能也就是所谓的 AI(Artificial Intelligence),它是一门很抽象的技术,AI 程序的编写不需要依据任何既定的思考模式或者规则。尤其是游戏中的 AI可以完全依程序设计者本身的思考逻辑制作。我个人认为人工智能的核心应该是使计算机具有自动的处理事件的能力,而我们的所有的研究也应该围绕着这一方向。我们今天讨论的是策略类的人工智能。 策略类人工智能可以说是 AI 中比较复杂的一种,最常见的策略类 AI 游戏就是棋盘式游戏。在这类游戏中,通常的策略类 AI 程序都是使计算机判断目前状况下所有可走的棋与可能的获胜状况,并计算当前计算机可走棋步的获胜分数或者玩家可走棋步的获胜分数,然后再决定出一个最佳走法。下面我们先介绍一下五子棋的 AI 构想。 1.1 五子棋简介下面就五子棋的背景和规则做一些简单的介绍。五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠” ,英译为 “Renju”,英文称之为“Gobang”或“FIR”(Five in a Row 的缩写) ,亦有“ 连五子 ”、 “五子连” 、 “串珠” 、 “五目”、 “五目碰” 、 “五格”等多种称谓。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场 ”的概念,亦有 “点”的连接。它是中西文化的交流点,是古今哲理的结晶。五子棋的规则如下:棋盘:采用同围棋盘一样的 15 路或 19 路线的棋盘,为了减小问题的规模,本系统将采用 15 路线的棋盘。下法:两人分别执黑白两色棋子,轮流在棋盘上选择一个无子的交叉点落子。无子的交叉点又被称为空点。输赢判断:黑、白双方有一方的 5 个棋子在横、竖或斜方向上连接成一线即为该方赢。1.2 五子棋的 AI 构想4在由 AI 所控制的计算机玩家上是不成立的,因为计算机必须知道有那些获胜方式,并计算出每下一步棋到棋盘上任一格子的获胜几率。一个完整的五子棋的 AI 构想必须:1、能够知道所有的获胜组合2、建立和使用获胜表3、设定获胜的分数4、使电脑具有攻击和防守的能力 (一),求五子棋的获胜组合 在一场五子棋的游戏中,计算机必须要知道有那些的获胜组合,因此我们必须求得获胜组合的总数。我们假定当前的棋盘为 10*10: 1、计算水平方向的获胜组合数,每一列的获胜组合是:6,共 10 列,所以水平方向的获胜组合数为:6*10=60 2、计算垂直方向的获胜组合总数,每一行的获胜组合是:6,共 10 行,则垂直方向的获胜组合数为:6*10=60 3、计算正对角线方向的获胜组合总数,正对角线上的获胜组合总数为6+(5+4+3+2+1)*2=36 4、计算反对角线方向的获胜组合总数,反对角线上的获胜组合总数为6+(5+4+3+2+1)*2=36 这样所有的获胜组合数为:60+60+36+36=192 (二)、建立和使用获胜表 我们已经计算出了一个 10*10 的五子棋盘会有 192 种获胜方式,这样我们可以利用数组建立获胜表,获胜表的主要作用是:1、判断当前的获胜方式是否有效;2、判断当前的获胜方式中到底有多少子落入该获胜组合中。详细的使用您将在后面的程序中可以看出。 (三)、分数的设定 在游戏中为了让计算机能够决定下一步最佳的走法,必须先计算出计算机下5到棋盘上任一空格的分数,而其中最高分数便是计算机下一步的最佳走法。 原理:我们判定当前讨论的空格与当前讨论的点有几种获胜的方式,有几种该空格就加几分。这种原理初听起来似乎是无法入手,没关系,当您了解我们后面的程序后您就会明白这种决策原理了。 这种决策有一些缺陷,因为如果只根据这个模型设计,就有可能出现电脑或玩家有三个子连成一线的时候,计算机却判断不出,它认为其他某些空格是当前的获胜的最佳位置而不去攻击或防守。没关系我们完全可以通过一个加强算法来改变当前的分值情况,也就是说当电脑或玩家有三个子或四个子连成一线时,我们通过加强算法将当前与三个子或四个子有关的空格的分值提高,从而可以弥补这一缺憾。 (四)、攻击与防守 以上的方式,事实上计算机只是计算出了最佳的攻击位置,为了防守我们还应计算当前玩家的最佳的攻击位置。这样有什么用呢?道理很简单,如果玩家最佳攻击位置的分数大于计算机最佳攻击位置上的分数,那么计算机就将下一步的棋子摆在玩家的最佳攻击位上以阻止玩家的进攻,否则计算机便将棋子下在自己的最佳攻击位置上进行攻击。 事实上,这个 AI 构想是很强大的如果你不是很厉害的五子棋高手的话,可能很快会被计算机打败。我在联众上可是中级棋手啊,跟这种构想打的时候胜率也不是很高。二.开发工具可行性分析本程序采用 vb.net 开发工具它是 Visual Basic.net 的简称。提到 vb.net,就不能不先提一下 Visual Basic 是 Windows 环境下的一种简单、易学的编程语言,由于其开发程序的快速、高效,深受程序员的喜爱。VB.NET 的特点:1、真正成为面向对象以及支持继承性的语言。2、窗体设计器支持可视化继承,并且包含了许多新的特性,比如自动改变窗体大小、资源本地化支持、数据类工具内在支持 XML 数据。3、直接建立在.NET 的框架结构上,因此开发人员可以充分利用所有.NET 平台6特性,也可以与其他的.NET 语言交互。4、为 Windows 应用程序提供了 XCOPY 部署,开发者不再需要为 DLL 的版本问题担忧。 三需求分析人工智能的第一大成就是下棋程序,在下棋程度中应用的某些技术,如向前看几步,把困难的问题分解成一些较容易的子问题,发展成为搜索和问题归纳这样的人工智能基本技术。今天的计算机程序已能够达到下各种方盘棋和国际象棋的锦标赛水平。但是,尚未解决包括人类棋手具有的但尚不能明确表达的能力。如国际象棋大师们洞察棋局的能力。另一个问题是涉及问题的原概念,在人工智能中叫问题表示的选择,人们常能找到某种思考问题的方法,从而使求解变易而解决该问题。到目前为止,人工智能程序已
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号