五子棋几种算法详解

五子棋几种算法详解

ID:11417282

大小:250.00 KB

页数:7页

时间:2018-07-11

五子棋几种算法详解_第1页
五子棋几种算法详解_第2页
五子棋几种算法详解_第3页
五子棋几种算法详解_第4页
五子棋几种算法详解_第5页
资源描述:

《五子棋几种算法详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、五子棋几种算法详解算法一:这里讲述棋盘大小为10×10的人机对战五子棋实现方法,要看完整代码请看Java做的五子棋1.  概述玩家每走一步,对于玩家和计算机,都根据获胜表对棋盘各个空棋位进行评分,每个位置的分数与下面这句话有关:该位置所在的每一种获胜组合中已经拥有的棋子数,然后对玩家和计算机产生的分数均衡,以判断计算机是进攻还是防守。2. 数据结构10×10的数据,用来记录棋盘状态;两个获胜表([10][10][192]),也就是获胜组合,因为五个子一线则胜,不在一线上的五个子就不在一个组合中,对于10×10的棋盘获胜的组合有192种,下面将会详细说明,获胜表用来

2、表示棋盘上的每个位置是否在玩家或计算机的获胜组合中;一个二维数组([2][192]),记录玩家与计算机在各种获胜组合中填入了多少棋子;两个10×10的数组,用来记录玩家与计算机在各个棋盘位置上的分数,分数高的将是计算机下一步的着法。 3.  计算获胜组合●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●上图是一个10×10的五子棋棋盘,我们可以得出垂直方向上的获胜组合是10×6=60,同理,水平方向的获胜组合也是60

3、,而两个倾斜方向上的获胜组合是(1+2+3+4+5)×2+6=36,即:60*2+36*2=192。4.  评分用两个数组存储每个棋位的分数,一个是计算机的,另一个是玩家的,表示该位置对于各方是最佳着法的肯定程度,对一个位置的评分就是:遍历该位置所在的每一种获胜组合,根据这个组合中已经拥有的己方棋子数1到4分别加不同分数,最后将这些所有的获胜组合所得出的分数相加就是该位置的分数,下图是对于黑方各棋位的评分(其中的1,2,3,4这几个值要根据实际需要来确定)。010001000100200100200003010300000041400001234●43210000

4、4●400000030003000020000020010000000100000000005. 思路算法二:1.  关键词棋位:棋盘的任意一个能放置棋子的位置。空棋位:没有放置棋子的棋位。成五:同一色的五子连成一线,胜利。活四:同一色的四子连成一线,且四子的两端是空棋位。双三:出现两次下面这种情况:同一色的三子连成一线,一端为空棋位或同一色的子,另一端为空棋位。我们关心的是当在一空棋位上放上一棋子是否构成“成五”、“活四”、“双三”。下面三个图分别是成五、活四、双三:●●●●●●●●●●●●●●●●2. 基本思想电脑下子前对当前棋盘格局进行评分,当前棋盘格局的分

5、数等于“当前棋盘中空棋位分数的最大值”。当前棋盘中空棋位分数等于“在该空棋位放上棋子后所构成棋子排列局面的分数,分数取值的大小顺序分别是成五、活四、双三和不构成以上三种情况的最佳走法”3.常量和空棋位分值的计算a) 各分数常量staticvarwinningMove=9999999;//成五staticvaropenFour=8888888;//活四staticvartwoThrees=7777777;//双三staticvarlineN:Array=newArray(0,20,17,15.4,14,10);//相隔0、1、2、3、4、5个棋位的分数b)空棋位分值

6、的计算成五、活四、双三的情况已在上面说过了,这里主要解释不构成这三种情况的分数计算方法。现在要计算某空棋位的分数,A1、A2、A3、A4分别代表横向、纵向、正斜向、反斜向上对它产生的分数;在横向上与该空棋位相隔1、2、3、4、5个棋位的棋位上存在同一色的子或也是空棋位则分别A1+=lineN[1]、A1+=lineN[2]、A1+=lineN[3],A1+=lineN[4],A1+=lineN[5];同理在其纵向、正斜向、反斜向上一样计算;最后该空棋位的分数是A1、A2、A3、A4中两个最大数的和。4.静态结构该算法已在五子棋中实现,另源码下次奉上,感谢网络上的资

7、源。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。