五子棋算法详解.doc_第1页
五子棋算法详解.doc_第2页
五子棋算法详解.doc_第3页
五子棋算法详解.doc_第4页
五子棋算法详解.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

五子棋算法详解算法一:这里讲述棋盘大小为1010的人机对战五子棋实现方法,要看完整代码请看Java做的五子棋 1.概述玩家每走一步,对于玩家和计算机,都根据获胜表对棋盘各个空棋位进行评分,每个位置的分数与下面这句话有关:该位置所在的每一种获胜组合中已经拥有的棋子数,然后对玩家和计算机产生的分数均衡,以判断计算机是进攻还是防守。2.数据结构1010的数据,用来记录棋盘状态;两个获胜表(1010192),也就是获胜组合,因为五个子一线则胜,不在一线上的五个子就不在一个组合中,对于1010的棋盘获胜的组合有192种,下面将会详细说明,获胜表用来表示棋盘上的每个位置是否在玩家或计算机的获胜组合中;一个二维数组(2192),记录玩家与计算机在各种获胜组合中填入了多少棋子;两个1010的数组,用来记录玩家与计算机在各个棋盘位置上的分数,分数高的将是计算机下一步的着法。3.计算获胜组合上图是一个1010的五子棋棋盘,我们可以得出垂直方向上的获胜组合是106=60,同理,水平方向的获胜组合也是60,而两个倾斜方向上的获胜组合是(1+2+3+4+5)2+6=36,即:60*2+36*2=192。4.评分用两个数组存储每个棋位的分数,一个是计算机的,另一个是玩家的,表示该位置对于各方是最佳着法的肯定程度,对一个位置的评分就是:遍历该位置所在的每一种获胜组合,根据这个组合中已经拥有的己方棋子数1到4分别加不同分数,最后将这些所有的获胜组合所得出的分数相加就是该位置的分数,下图是对于黑方各棋位的评分(其中的1,2,3,4这几个值要根据实际需要来确定)。010001000100200100200003010300000041400001234432100004400000030003000020000020010000000100000000005. 思路算法二:1.关键词棋位:棋盘的任意一个能放置棋子的位置。空棋位:没有放置棋子的棋位。成五:同一色的五子连成一线,胜利。活四:同一色的四子连成一线,且四子的两端是空棋位。双三:出现两次下面这种情况:同一色的三子连成一线,一端为空棋位或同一色的子,另一端为空棋位。我们关心的是当在一空棋位上放上一棋子是否构成“成五”、“活四”、“双三”。下面三个图分别是成五、活四、双三:2.基本思想电脑下子前对当前棋盘格局进行评分,当前棋盘格局的分数等于“当前棋盘中空棋位分数的最大值”。当前棋盘中空棋位分数等于“在该空棋位放上棋子后所构成棋子排列局面的分数,分数取值的大小顺序分别是成五、活四、双三和不构成以上三种情况的最佳走法”3. 常量和空棋位分值的计算a)各分数常量static var winningMove = 9999999;/成五static var openFour = 8888888;/活四static var twoThrees = 7777777;/双三static var lineN:Array = new Array(0, 20, 17, 15.4, 14, 10);/相隔0、1、2、3、4、5个棋位的分数b)空棋位分值的计算成五、活四、双三的情况已在上面说过了,这里主要解释不构成这三种情况的分数计算方法。现在要计算某空棋位的分数,A1、A2、A3、A4分别代表横向、纵向、正斜向、反斜向上对它产生的分数;在横向上与该空棋位相隔1、2、3、4、5个棋位的棋位上存在同一色的子或也是空棋位则分别A1+=lineN1、A1+=lineN2、A1+=lineN3,A1+=lineN4,A1+=lineN5;同理在其纵向、正

温馨提示

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

评论

0/150

提交评论