316科技

316科技

求 用于五子棋AI的 α—β 剪枝搜索算法

316科技 97

一、求 用于五子棋AI的 α—β 剪枝搜索算法

int ab(int n,int a,int b)

{

int temp;

if(n<=0)

return (评价函数); /*评价函数*/

for(每一个走法)

{

(产生节点函数);

temp=-ab(n-1,-b,-a);

(撤消产生的节点函数);

if(temp>a)

a=temp;(此处可保留搜索的最佳位置)

if(a>b)

break;

}

return a;

}

二、基于Labview的五子棋想增加人机对战的功能

编AI来实现五子棋人机对战将会是一个很大的工程。工程量的大小取决于你对AI棋力的要求,如果你想编一个无往不利的AI,可能得花上大半辈子的时间。你随便百度一下,就会发现期刊上面有很多论文是专门用来写各种五子棋算法的。

当然如果你只是想实现你放一个子,电脑也放一个子的话也是不难,比如用随机数。。。

我只是个小电子工程师,对ai算法什么的实在没什么研究,但是可以给你个建议:网上有人用C++编了五子棋的ai程序,或者有些讲游戏编程的书中也会给源代码(比如王小春的《pc游戏编程》)。你可以把他们实现AI的那些函数封装成dll,让labview调用,这应该比你自己摸索算法要快得多。

三、求vc简单的五子棋AI算法

我有个简单的思路:

先定义一条线上棋子的各种布局,比如初步定义长度为五个子

◎◎◎◎●

◎◎●◎×

◎●◎××

◎×◎×◎

等等。白圈是自己的子,黑圈是对方的子,叉子是未走的格子。

程序里有个布局表,再定义各个布局的分数,比如连五最99分,连三30分等等。

当机器走时,在空格放入一子,然后扫描每条直线,匹配布局,然后累计得分。

逐个放子,得分最高的那个位置,作为下一步的走法。

不断调整得分表,可以提高程序胜率。

大概是这个意思。抛砖引玉。

四、java五子棋简单的人机对战程序逻辑

兄弟,不是没有落子行为,是一直有你看不出来吧,determineNextMove(int who)函数中获得坐标时:int x = (int)Math.random() * 10;,这个x永远都是0吧,应该是int x=(int)(Math.random()*10);优先级搞错了。所以你得到的坐标cell都是(0,0),通过后台打印System.out.println(cell.x + + cell.y);也可以看出来的吧。

上一个下一篇:求人脸识别源代码

下一个上一篇:返回栏目