第一篇文章,希望高人指点一二。
最近看一些五子棋的经典算法,发现以前自己写的算法算是最低效的了,从来没有想到用最后一个落盘的棋子为基准点来判断当前形势,实在是让我茅塞顿开,很佩服这些作者。
小弟是个新人,平时很喜欢javaeye上的一些前辈的文章,本人做开发小一年,都是一些很基本的项目,没什么高深的东西,这段时间闲来无事,分析了一下五子棋的电脑落子的算法。基本思想如下:
每个落子的点都是一个Point对象,对象属性包括X坐标,Y坐标。现在再添加两个属性(位置和权重),来表示该点上的形势,例如若是在这个点落子,可能在横向形成活三形势,那么位置属性就设置成横,权重就设置成活三的权重例如15,如果还能在竖向形成冲四,那么,这个点对象位置属性设置成 横竖,权重设置成 15+10(活三+冲四),依次来遍历一定范围内的所有空白点,分别为其设置位置属性和权重,最后在根据每个点的权重值来确定落点位置。
问题就出现了,权重值的设置应该考虑很多情况,在这里我能想到的如下(权重从高到低)
己方胜利
己方活三冲四
己方双四
己方双活三
对手冲四
对手活三
己方活三
己方活二
对手活二
还有什么双活二什么的就不考虑的。
这是个最基本的雏形,往后还要考虑猜测的方法,猜测如下:如果己方把棋子放到一个位置形成了活三,那么对手可能会去堵截,然后再根据堵截后的棋盘形势来判断下一个落子的地方,如果出现权重比以上分析的权重都大,例如出现己方胜利,己方活三冲四等,那么就在该点落子,若是没有,就可以按上述方法继续猜测,但不能过多的猜测,可能会出现反应迟钝。
基本就是这样了。
希望各位前辈给予指导批评。
分享到:
相关推荐
五子棋算法.rar 五子棋算法.rar 五子棋算法.rar
五子棋 智能算法 目前为止电脑没输过 里面有两种AI 遍历法 和 智能推断
五子棋 java版 博弈算法
五子棋AI算法-极大极小值搜索算法代码实现;适合学习机器学习算法的初学者,学完后会对极大极小值搜索算法( Alpha Beta 剪枝算法。)有更深的理解。
简单的实现五子棋,算法简便,注释明了,一目了然
我的AI算法要求每一次落子之后都要去计算每一个空暇的位置的“分值”,简单的说,我们需要一个存放棋子的数组,表示是否存放了棋子,还要一个计算每一个空格的数组来记录“分数”,这个分数是后期AI用来运算的基础,...
很好很强大的五子棋算法
五子棋的核心算法,五子棋的核心算法,五子棋的核心算法五子棋的核心算法五子棋的核心算法
五子棋 x,y坐标 判断胜利算法 简单 消耗内存最少的
五子棋的算法设计实现。可以直接运行,有需要的可以下载
五子棋的算法,详细的步骤和代码以及大量的注释!!! 欢迎大家交流
五子棋的AI算法C语言
五子棋AI算法的改进方法讲解--实用.doc.docx五子棋AI算法的改进方法讲解--实用.doc.docx五子棋AI算法的改进方法讲解--实用.doc.docx五子棋AI算法的改进方法讲解--实用.doc.docx五子棋AI算法的改进方法讲解--实用.doc...
五子棋AI算法的改进方法讲解--实用.doc.pdf五子棋AI算法的改进方法讲解--实用.doc.pdf五子棋AI算法的改进方法讲解--实用.doc.pdf五子棋AI算法的改进方法讲解--实用.doc.pdf五子棋AI算法的改进方法讲解--实用.doc.pdf...
这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子棋程序的数据结构、评分规则、胜负判断方法和搜索算法过程。
C# alpha-beta 剪枝五子棋AI 算法 查询算法还是很快的,棋力还不错
C#五子棋及其算法实现 今天早上看到这个程序,写的非常好,所以上传上来和大家一起分享,下面是作者源地址! http://www.cnblogs.com/soundbbg/archive/2008/12/09/1351356.html
五子棋AI算法分析,计算机博弈技术,规则判断
前不久我曾编写过一个五子棋的游戏,在这里就以此为例和大家一起探讨探讨。 总的来说(我们假定您熟悉五子棋的基本规则),要让电脑知道该在哪一点下子,就要根据盘面的形势,为每一可能落子的点计算其重要程度,...
这是一个用VC写的五子棋算法,很好,值得好好学习。适用于正在学习人工智能、VC和算法的朋友。如果你想学好人工智能,或着想学好算法,这是一个很好的材料