五子棋算法及五子棋算法详解

人机对战五子棋设计
——算法设计
一、五子棋基本规则
(1)五子棋行棋时,黑棋先下第一子,后白棋在黑棋周围的交叉点落子,之后黑白双方相互顺序落子。
(2)最先在棋盘线交点横向,纵向,斜向形成连续的五个棋子的一方为胜。
二、五子棋程序设计
1.程序设计思想
(1)本程序要实现五子棋的游戏功能,必须先有一个棋盘。所以,通过LinearLayout
线性布局上画出一个棋盘。另外还需要四个按钮:开局、模式(人机对弈)、
退出,提醒用户进行相应的操作。
(2)对于下棋的操作,通过增加鼠标事件MouseListener,每次当用户点击鼠
标时,先取得点击的坐标值,然后换算成对应棋盘上(即棋盘数组)的位置(数
组的下标)。
(3)判断此处是否已经有棋子,如果有则提示玩家重新下子,否则通过java里的画
图函数在此处画上棋子,重新刷新输出棋盘。
(4)判断该颜棋子的上下左右是否满足连续五个,是的话提醒相应玩家获胜,不
过氧化氢浓度测定
是的话,更换玩家下棋。
(5)对于玩家的更换是程序自动的,每次用户点击鼠标后,若本局还未结束则会变
换玩家,从而画出对应黑方白方的棋子,直到有一方获胜程序结束。
2.程序设计分析
(1)本款游戏有开始游戏、人机对战,关于我们、退出游戏四个选项;玩家可以根
据具体需要选择使用。
(2)程序默认对弈模式是人机对弈模式,并且是玩家先手,玩家是黑方,电脑是白
方。。
(3)棋盘处于鼠标监听状态,当鼠标在棋盘上有点击操作的时候,程序会获得鼠标
点击的坐标然后换算成对应的棋盘的位置,再判断此处是否有棋子。假如没有,那么在此处画出对应颜的实心棋子;假如已经有棋子了,则提示玩家此处已
经有棋子请重新下棋。
(4)当选择的是人机对弈模式的时候,轮到电脑下子时,电脑会通过算法来计算每
个没有棋子的位置的分数,从而来选择最重要的位置下子。
三、五子棋算法分析
1.人机对弈算法概述
瑞利衰落信道人工智能五子棋游戏最核心的地方就是算法,因为这是整个程序最难的模块。
算法的中心思想是:利用分数代表每个位置的重要程度,越重要的位置的分数值会越高,当电脑下棋时会先将电脑和玩家棋型的分数分别计算一遍,然后选择二者中分数最高的点下子。如果玩家的分数高,那么代表电脑应该防守,如果电脑的分数高,那么代表电脑应该进攻。
2.数据结构设计
以10×10大的棋盘为例:保温包
紫外光固化树脂
(1)两个获胜表(ptable[10][10][192], ctable[10][10][192]):也就是获胜组合,因为五个
子一线则胜,不在一线上的五个子就不在一个组合中,对于10×10的棋盘获胜的组合有192种(下面将会详细说明),获胜表用来表示棋盘上的每个位置是否在玩家或计算机的获胜组合中。
(2)一个二维数组([2][192]):记录玩家与计算机在各种获胜组合中填入了多少棋
子。
(3)两个10×10的数组:用来记录玩家与计算机在各个棋盘位置上的分数,分数高
感应式小便器的将是计算机下一步的走法。
3.获胜组合情况分析
图9 10×10棋盘获胜组合情况
(1)垂直方向:垂直方向上获胜组合数为10×6=60种;
(2)水平方向:水平方向上获胜组合数为10×6=60种;
喷水壶(3)两个对角方向:倾斜方向上获胜组合数为(1+2+3+4+5)×2+6=36种。
所以10×10的五子棋棋盘所有的获胜组合为:60*2+36*2=192种。
4.棋型的估值分析
不同的棋型,其优先级不同。例如,四个棋子连成一线且还能继续落子的棋型(活四)显然要比只有三个棋子连成一线(活三或死三)好。要使计算机正确地做出这种判断,就要把第一种棋型的估值设高。事实上,对于每一种特定的棋型,都需要相应的估值来反映其优劣情况。另外,由于搜索模块频繁地调用估值函数,为了尽可能地加快搜索速度,估值函数应设计的越仔细越好。
估值时,需要从四个方向上来考虑所下棋子对当前盘面的影响。这八个方向分别是以该棋子为出发点,水平、竖直和两条为45度角和135度角的线。
为方便分析棋盘上的格局,约定以“A”代表黑子,“B”代表白子,“?”代表棋盘上空位。算法中关于棋子死活的规定如下:一方落子后,它的落子连成的一条线有两条不损伤的出路,则称该棋型是活的。否则称该棋型是死的。比如关于活三的定义:不论对手如何落子,仍然至少有一种方法可以冲四。因此,B?AAA? B中的三个A,不能算是活三;B?AAA??B中的三个A,也不是活三,尽管它有可能成为活四。这样,棋型的估值设计才能比较细致。本文算法对特定棋型的估值如图10所示。
图10 特定棋型的估值
之所以要给出如此大的分值差距,主要是考虑以后的全局判断的时候不会因为分数的累加使得电脑判断错误。而电脑在判断双方的分值的时候,就是在落子时对自己的落子点涉及分值和对方的分值进行对比来进行之后落子的判断。
用两个二维数组(pgrades[,cgrades)存储每个棋位的分数,一个是计算机的,另一个是玩家的,表示该位置对于各方是最佳着法的肯定程度,对一个位置的评分就是:遍历该位置所在的每一种获胜组合,根据这个组合中已经拥有的己方棋子数1到4分别加不同分数,最后将这些所有的获胜组合所得出的分数相加就是该位置的分数,下图是对于五子棋黑方各棋位的评分(其中的1,2,3,4这几个值要根据实际需要来确定)。如图11所示。
图11 黑方棋位的评分

本文发布于:2024-09-22 09:55:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/220069.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:棋盘   棋子   获胜   分数   电脑   玩家   位置
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议