📄 abmove.h
字号:
#include<iostream.h>
#include<stdlib.h>
#include "listpos.h"
#include "setpos.h"
#include "to.h"
#include "Evaluator.h"
#define boardsize 8
#define boardsizes 9
#define halfinfinite 50
void put(int data[boardsizes][boardsizes])
{
cout<<'\n';
int i,j;
for(i=1;i<=boardsize;i++)
{
for(j=1;j<=boardsize;j++)
cout<<data[i][j]<<'\t';
cout<<'\n';
}
}
int ABmove(int datat[boardsizes][boardsizes])
{
if(datat[0][3]==0)
{
Evaluator;
if(datat[0][0]==-1)
return Evaluation;
else
return -Evaluation;
}
int side=-datat[0][0],nalpha=datat[0][1],nbeta=datat[0][2],nply=datat[0][3]-1;
int pos[boardsizes][boardsizes]={
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
};
listposfun;
int msign=0;
if(side==-1)
{
int *p1=(int *)pos,*p2=p1,*p3=&pos[boardsize][boardsize],setposi,setposj,der;
p1+=(boardsizes+1);
for(;p1<=p3;p1++)
{
if(*p1)
{
int data[boardsizes][boardsizes];
setposi=(p1-p2)/boardsizes;
setposj=(p1-p2)%boardsizes;
der=*p1;
to(datat,data);
setpos;
data[0][0]=side,data[0][1]=nalpha,data[0][2]=nbeta,data[0][3]=nply;
////////////////////////////////////////add
int score;
if(data[0][3]==0)
{
Evaluatorfun(data);
if(side==-1)
score=-Evaluation;
else
score=Evaluation;
}
////////////////////////////////////////add
else
score=-ABmove(data);
if(score>nbeta)
{
nbeta=score;
if(score>=-nalpha)
return -nalpha;
}
}
}
if(msign==0)
{
Evaluator;
if(side==-1)
return -Evaluation;
else
return Evaluation;
}
return nbeta;
}
else if(side==1)
{
int *p1=(int *)pos,*p2=p1,*p3=&pos[boardsize][boardsize],setposi,setposj,der;
p1+=(boardsizes+1);
for(;p1<=p3;p1++)
{
if(*p1)
{
int data[boardsizes][boardsizes];
setposi=(p1-p2)/boardsizes;
setposj=(p1-p2)%boardsizes;
der=*p1;
to(datat,data);
setpos;
data[0][0]=side,data[0][1]=nalpha,data[0][2]=nbeta,data[0][3]=nply;
////////////////////////////////////////add
int score;
if(data[0][3]==0)
{
Evaluatorfun(data);
if(side==-1)
score=-Evaluation;
else
score=Evaluation;
}
////////////////////////////////////////add
else
score=-ABmove(data);
if(score>nalpha)
{
nalpha=score;
if(score>=-nbeta)
return -nbeta;
}
}
}
if(msign==0)
{
Evaluator;
if(side==-1)
return -Evaluation;
else
return Evaluation;
}
return nalpha;
}
else
{
cout<<"终止在ABmove side="<<side<<'\n';
exit(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -