一、求 用于五子棋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);也可以看出来的吧。