private final int q2o=50; private final int q2=100; private final int q3o=500; private final int q3=1000; private final int q4o=5000; private final int q4=10000; private final int q5=100000; private String[][] curchess; private int ci,cj;
//水平权值 private int getQuan0(int i, int j) { int samechessNumS=0; //相同棋子的个数 int samechessNumF=0; int blankNumS=0; // 空子的个数 int blankNumF=0; int q=0,qS=0,qF=0; int [][]ij0=new int[2][2]; //计算权值用的 ij0[0][0]=ij0[0][1]=i; ij0[1][0]=ij0[1][1]=j; samechessNumS=getsamechessNum0(ij0,white); //得到白子数目 if(ij0[1][0]>=0) if(curchess[ij0[0][0]][ij0[1][0]]==Chess) blankNumS++; if(ij0[1][1]<19) if(curchess[ij0[0][1]][ij0[1][1]]==Chess) blankNumS++; qS=getQuanpart(samechessNumS,blankNumS);
private int getQuan45(int i, int j) { // TODO Auto-generated method stub return 0; } private int getQuan135(int i, int j) { // TODO Auto-generated method stub return 0; } private int getQuan90(int i, int j) { // TODO Auto-generated method stub return 0; }} ///////////////////////////////////////////////////////////////////////////////// 下面这几句我不懂是什么意思,麻烦帮忙解决一下,其它的我都明白了。 //得到白子数目 if(ij0[1][0]>=0) if(curchess[ij0[0][0]][ij0[1][0]]==Chess) blankNumS++; if(ij0[1][1]<19) if(curchess[ij0[0][1]][ij0[1][1]]==Chess) blankNumS++;
你可以联系这个贴的LZ 他有代码
//黑白白空 50
//空白白空 100
//黑白白白空 500
//空白白白空 1000
//黑白白白白空 5000
//空白白白白空 10000
//白白白白白 100000
private static String white="○";
private static String back="●";
private static String Chess="十";
private final int q2o=50;
private final int q2=100;
private final int q3o=500;
private final int q3=1000;
private final int q4o=5000;
private final int q4=10000;
private final int q5=100000;
private String[][] curchess;
private int ci,cj;
/**
* @param args
*/
//复制棋盘
private void copychess(String[][] chess)
{
curchess=new String[19][19];
for(int i=0;i<19;i++)
{
for(int j=0;j<19;j++)
{
curchess[i][j]=chess[i][j];
}
}
}
//当前落子点
private void copychessLocaltion(int i,int j)
{
ci=i;
cj=j;
}
//下载相关信息到算法类
public void loadInfo(String[][] chess,int i,int j)
{
copychess(chess);
copychessLocaltion(i,j);
}
//记录当前假定的落子点
private int getQuan(int i,int j)
{
int q=0; //求当前位置的权值
q+=getQuan0(i,j); //得到水平方向上的权值,下面类似
q+=getQuan90(i,j);
q+=getQuan135(i,j);
q+=getQuan45(i,j);
return q;
}
private int getsamechessNum0(int[][] qij, String chessID) {
//得到水平方向的同子数目
int num=1; //存储相同棋子数目,当前点满足条件
qij[1][0]--;
//向左探索我们只探索临近的4个点,注意不要出边界
while(qij[1][0]>=0&&num<5)
{
if(curchess[qij[0][0]][qij[1][0]]!=chessID) break;
num++;
qij[1][0]--;
}
qij[1][1]++;
//向右求索
while(qij[1][1]<19&&num<5)
{
if(curchess[qij[0][1]][qij[1][1]]!=chessID) break;
num++;
qij[1][1]++;
}
return num;
}
//求得某一方向上的一半权值
private int getQuanpart(int sameChessNum, int blankNum) {
if(sameChessNum==2&&blankNum==1) return q2o;
else if(sameChessNum==2&&blankNum==2) return q2;
else if(sameChessNum==3&&blankNum==1) return q3o;
else if(sameChessNum==3&&blankNum==2) return q3;
else if(sameChessNum==4&&blankNum==1) return q4o;
else if(sameChessNum==4&&blankNum==2) return q4;
else if(sameChessNum==5) return q5;
else return 0;
} /*
* 为了能被其他类调用,还需要添加一个对外的接口,并能够遍历棋盘。
*/
public void countshessLocaltion(int[] sij)
{
int qhigh=-1; //记录当前最高权值
int qhere; //记录当前位置的权值
for(int i=0;i<19;i++)
{
for(int j=0;j<19;j++)
{
if(curchess[i][j]==Chess)
if((qhere=getQuan(i,j))>qhigh)
{
qhigh=qhere;
sij[0]=i;sij[1]=j;
}
}
}
}
//水平权值
private int getQuan0(int i, int j) {
int samechessNumS=0; //相同棋子的个数
int samechessNumF=0;
int blankNumS=0; // 空子的个数
int blankNumF=0;
int q=0,qS=0,qF=0;
int [][]ij0=new int[2][2]; //计算权值用的
ij0[0][0]=ij0[0][1]=i;
ij0[1][0]=ij0[1][1]=j;
samechessNumS=getsamechessNum0(ij0,white);
//得到白子数目
if(ij0[1][0]>=0)
if(curchess[ij0[0][0]][ij0[1][0]]==Chess)
blankNumS++;
if(ij0[1][1]<19)
if(curchess[ij0[0][1]][ij0[1][1]]==Chess)
blankNumS++;
qS=getQuanpart(samechessNumS,blankNumS);
//得到速胜权值
ij0[0][0]=ij0[0][1]=i;
ij0[1][0]=ij0[1][1]=j;
samechessNumF=getsamechessNum0(ij0,back);
//得到黑子数目
if(ij0[1][0]>=0)
if(curchess[ij0[0][0]][ij0[1][0]]==Chess)
blankNumF++;
if(ij0[1][1]<19)
if(curchess[ij0[0][1]][ij0[1][1]]==Chess)
blankNumF++;
qF=getQuanpart(samechessNumF,blankNumF);
//得到堵敌权值
q=qS+qF;
return q;
}
private int getQuan45(int i, int j) {
// TODO Auto-generated method stub
return 0;
} private int getQuan135(int i, int j) {
// TODO Auto-generated method stub
return 0;
} private int getQuan90(int i, int j) {
// TODO Auto-generated method stub
return 0;
}}
/////////////////////////////////////////////////////////////////////////////////
下面这几句我不懂是什么意思,麻烦帮忙解决一下,其它的我都明白了。
//得到白子数目
if(ij0[1][0]>=0)
if(curchess[ij0[0][0]][ij0[1][0]]==Chess)
blankNumS++;
if(ij0[1][1]<19)
if(curchess[ij0[0][1]][ij0[1][1]]==Chess)
blankNumS++;