📄 telent.java
字号:
{
for(int j = 0; j < nleft; j++)
{
tempCollection[j] = leftArray[j];
//System.out.println("车的第"+j+"个左走步集合y:"+leftArray[j][0]+"x:"+leftArray[j][1]+"添加完毕");
}
}
if(nright != 0)
{
for(int j =0; j < nright; j++)
{
tempCollection[nleft + j] = rightArray[j];
//System.out.println("车的第"+j+"个右走步集合y:"+rightArray[j][0]+"x:"+rightArray[j][1]+"添加完毕");
}
}
if(nup != 0)
{
for(int j =0; j < nup; j++)
{
tempCollection[nleft +nright + j] = upArray[j];
//System.out.println("车的第"+j+"个上走步集合y:"+upArray[j][0]+"x:"+upArray[j][1]+"添加完毕");
}
}
if(ndown != 0)
{
for(int j =0; j < ndown; j++)
{
tempCollection[nleft +nright + nup + j] = downArray[j];
//System.out.println("车的第"+j+"个上走步集合y:"+downArray[j][0]+"x:"+downArray[j][1]+"添加完毕");
}
}
//System.out.println("获取车走步集合完毕");
}
//炮的走步
if(code == 6 || code == 7 || code == 22 || code == 23)
{//先找出移位走步,再找出吃棋走步
//移位走步集合
//System.out.println("开始获取炮走步集合");
int i = 0, nAll = 0;
int nleft = 0;
int[][] leftArray = null;
int nright = 0;
int[][] rightArray = null;
int nup = 0;
int[][] upArray = null;
int ndown = 0;
int[][] downArray = null;
//System.out.println("传过来的参数为code:"+code+"y:"+y+"x:"+x);
for(i = x; i >= 0; i--)
{
if(i !=x && chess[y][i] != 32)
{
i++;
//System.out.println("i的值为:"+i);
break;
}
}
//System.out.println("左走步搜索完毕后,i的值为:"+i);
if(i == -1)
i++;
nleft = x - i;
if(nleft != 0)
{
leftArray = new int[nleft][2];
for(int j = 0; j < nleft; j++)
{
leftArray[j][0] = y;
leftArray[j][1] = i + j;
}
}
for(i = x; i < 9; i++)
{
if(x != i && chess[y][i] != 32)
{
i--;
break;
}
}
if(i == 9)
i--;
nright = i - x;
if(nright != 0)
{
rightArray = new int[nright][2];
for(int j = 0; j < nright; j++)
{
rightArray[j][0] = y;
rightArray[j][1] = i - j;
}
}
for(i = y; i < 10; i++)
{
if(y != i && chess[i][x] != 32)
{
i--;
break;
}
}
if(i == 10)
i--;
ndown = i - y;
if(ndown != 0)
{
downArray = new int[ndown][2];
for(int j = 0; j < ndown; j++)
{
downArray[j][0] = i - j;
downArray[j][1] = x;
}
}
for(i = y; i >= 0; i--)
{
if(y != i && chess[i][x] != 32)
{
i++;
break;
}
}
if(i == -1)
i++;
nup = y - i;
if(nup != 0)
{
upArray = new int[nup][2];
for(int j = 0; j < nup; j++)
{
upArray[j][0] = i + j;
upArray[j][1] = x;
}
}
//System.out.println("走棋步集合完毕");
nAll = nleft + nright + nup + ndown;
int[][] a = new int[nAll][2];
if(nleft != 0)
{
for(int j = 0; j < nleft; j++)
{
a[j] = leftArray[j];
//System.out.println("炮的第"+j+"个左走步坐标为y:"+leftArray[j][0]+"x:"+leftArray[j][1]);
}
}
//System.out.println("左走棋步集合完毕");
if(nright != 0)
{
for(int j =0; j < nright; j++)
{
a[nleft + j] = rightArray[j];
//System.out.println("炮的第"+j+"个右走步坐标为y:"+rightArray[j][0]+"x:"+rightArray[j][1]);
}
}
//System.out.println("右走棋步集合完毕");
if(nup != 0)
{
for(int j =0; j < nup; j++)
{
a[nleft +nright + j] = upArray[j];
//System.out.println("炮的第"+j+"个上走步坐标为y:"+upArray[j][0]+"x:"+upArray[j][1]);
}
}
//System.out.println("上走棋步集合完毕");
if(ndown != 0)
{
for(int j =0; j < ndown; j++)
{
a[nleft + nright + nup + j] = downArray[j];
//System.out.println("炮的第"+j+"个下走步坐标为y:"+downArray[j][0]+"x:"+downArray[j][1]);
}
}
//System.out.println("下走棋步集合完毕");
//System.out.println("开始获取吃棋步集合");
//吃棋走步集合
leftArray = new int[8][2];
rightArray = new int[8][2];
upArray = new int[8][2];
downArray = new int[8][2];
int leftNumber = 0;
//System.out.println("获取吃棋步集合时的局部变量初始化完毕");
for(i = x; i >= 0; i--)
{
if(i != x && chess[y][i] != 32)
{
leftArray[leftNumber][0] = y;
leftArray[leftNumber][1] = i;
leftNumber++;
}
}
//System.out.println("左吃棋步集合完毕");
int rightNumber = 0;
for(i = x; i < 9; i++)
{
if(i != x && chess[y][i] != 32)
{
rightArray[rightNumber][0] = y;
rightArray[rightNumber][1] = i;
rightNumber++;
}
}
//System.out.println("右吃棋步集合完毕");
int upNumber = 0;
for(i = y; i >= 0; i--)
{
if(i != y && chess[i][x] != 32)
{
upArray[upNumber][0] = i;
upArray[upNumber][1] = x;
upNumber++;
}
}
//System.out.println("上吃棋步集合完毕");
int downNumber = 0;
for(i = y; i < 10; i++)
{
if(i != y && chess[i][x] != 32)
{
downArray[downNumber][0] = i;
downArray[downNumber][1] = x;
downNumber++;
}
}
//System.out.println("下吃棋步集合完毕");
int c = 0, d = 0, eatNumber = 0;
int nly = -1, nlx = 0;
int nry = -1, nrx = 0;
int nuy = -1, nux = 0;
int ndy = -1, ndx = 0;
if(leftNumber > 1)
{
c = leftArray[1][0];
d = leftArray[1][1];
if(code < 16 && chess[c][d] > 15 || code > 15 && chess[c][d] < 16)
{
//System.out.println("左边有吃棋步");
nly = c;
nlx = d;
eatNumber++;
//System.out.println("左边吃棋步获取完毕:"+c+":"+d);
}
}
if(rightNumber > 1)
{
c = rightArray[1][0];
d = rightArray[1][1];
if(code < 16 && chess[c][d] > 15 || code > 15 && chess[c][d] < 16)
{
//System.out.println("右边有吃棋步");
nry = c;
nrx = d;
eatNumber++;
//System.out.println("右边吃棋步获取完毕:"+c+":"+d);
}
}
if(upNumber > 1)
{
c = upArray[1][0];
d = upArray[1][1];
if(code < 16 && chess[c][d] > 15 || code > 15 && chess[c][d] < 16)
{
//System.out.println("上边有吃棋步");
nuy = c;
nux = d;
eatNumber++;
//System.out.println("上边吃棋步获取完毕:"+c+":"+d);
}
}
if(downNumber > 1)
{
c = downArray[1][0];
d = downArray[1][1];
if(code < 16 && chess[c][d] > 15 || code > 15 && chess[c][d] < 16)
{
//System.out.println("下边有吃棋步");
ndy = c;
ndx = d;
eatNumber++;
//System.out.println("下边吃棋步获取完毕:"+c+":"+d);
}
}
//System.out.println("吃棋步集合完毕");
tempCollection = new int[eatNumber + nAll][2];
for(int j = 0; j < nAll; j++)
{
tempCollection[j] = a[j];
}
nAll--;
if(nly != -1)
{
nAll++;
tempCollection[nAll][0] = nly;
tempCollection[nAll][1] = nlx;
//System.out.println("左边吃棋步添加成功");
}
if(nry != -1)
{
nAll++;
tempCollection[nAll][0] = nry;
tempCollection[nAll][1] = nrx;
//System.out.println("右边吃棋步添加成功");
}
if(nuy != -1)
{
nAll++;
tempCollection[nAll][0] = nuy;
tempCollection[nAll][1] = nux;
//System.out.println("上边吃棋步添加成功");
}
if(ndy != -1)
{
nAll++;
tempCollection[nAll][0] = ndy;
tempCollection[nAll][1] = ndx;
//System.out.println("下边吃棋步添加成功");
}
//System.out.println("获取炮走步集合完毕");
}
//兵的走集合
if(code >0 && code < 6 || code >16 && code < 22)
{
//System.out.println("开始获取兵走步集合");
int[][] a = new int[3][2];
a[0][0] = -1;
a[1][0] = -1;
a[2][0] = -1;
if(code > 15 && y >4)
{
a[0][0] = y - 1;
a[0][1] = x;
}
else if(code < 16 && y < 5)
{
a[0][0] = y + 1;
a[0][1] = x;
}
else if(code > 15 && y < 5)
{
a[0][0] = y;
a[0][1] = x - 1;
a[1][0] = y - 1;
a[1][1] = x;
a[2][0] = y;
a[2][1] = x + 1;
}
else
{
a[0][0] = y;
a[0][1] = x - 1;
a[1][0] = y;
a[1][1] = x + 1;
a[2][0] = y + 1;
a[2][1] = x;
}
//将不符合条件的落脚点去掉
int n = 0;
for(int j = 0; j < a.length; j++)
{
//将超出边界的落脚点去掉
if(a[j][0] < 0 || a[j][0] > 9 || a[j][1] < 0 || a[j][1] > 8)
{
a[j][0] = -1;
n++;
continue;
}
//将落脚点有自己棋子的去掉
int c = a[j][0];
int d = a[j][1];
int temp = chess[c][d];
if(temp == 32)
continue;
if(temp < 15 && code < 15 || temp > 16 && code > 16)
{
a[j][0] = -1;
n++;
}
}
int nAll = a.length - n;
tempCollection = new int[nAll][2];
int m = 0;
for(int j = 0; j < a.length; j++)
{
if(a[j][0] != -1)
{
tempCollection[m] = a[j];
//System.out.println(a[j][0]+","+a[j][1]);
//System.out.println();
m++;
}
}
}
return tempCollection;
}
private void initIDS()
{
//初始化IDS
IDS = new int[32][3];
for(int i = 0 ;i < 32 ;i++)
IDS[i][0] = i;
IDS[0][1] = jiangP;
IDS[0][2] = jiangN;
IDS[1][1] = bingP;
IDS[1][2] = bingN;
IDS[2][1] = bingP;
IDS[2][2] = bingN;
IDS[3][1] = bingP;
IDS[3][2] = bingN;
IDS[4][1] = bingP;
IDS[4][2] = bingN;
IDS[5][1] = bingP;
IDS[5][2] = bingN;
IDS[6][1] = paoP;
IDS[6][2] = paomaN;
IDS[7][1] = paoP;
IDS[7][2] = paomaN;
IDS[8][1] = cheP;
IDS[8][2] = cheN;
IDS[9][1] = cheP;
IDS[9][2] = cheN;
IDS[10][1] = maP;
IDS[10][2] = paomaN;
IDS[11][1] = maP;
IDS[11][2] = paomaN;
IDS[12][1] = xiangP;
IDS[12][2] = xiangshiN;
IDS[13][1] = xiangP;
IDS[13][2] = xiangshiN;
IDS[14][1] = shiP;
IDS[14][2] = xiangshiN;
IDS[15][1] = shiP;
IDS[15][2] = xiangshiN;
IDS[16][1] = jiangP;
IDS[16][2] = jiangN;
IDS[17][1] = bingP;
IDS[17][2] = bingN;
IDS[18][1] = bingP;
IDS[18][2] = bingN;
IDS[19][1] = bingP;
IDS[19][2] = bingN;
IDS[20][1] = bingP;
IDS[20][2] = bingN;
IDS[21][1] = bingP;
IDS[21][2] = bingN;
IDS[22][1] = paoP;
IDS[22][2] = paomaN;
IDS[23][1] = paoP;
IDS[23][2] = paomaN;
IDS[24][1] = cheP;
IDS[24][2] = cheN;
IDS[25][1] = cheP;
IDS[25][2] = cheN;
IDS[26][1] = maP;
IDS[26][2] = paomaN;
IDS[27][1] = maP;
IDS[27][2] = paomaN;
IDS[28][1] = xiangP;
IDS[28][2] = xiangshiN;
IDS[29][1] = xiangP;
IDS[29][2] = xiangshiN;
IDS[30][1] = shiP;
IDS[30][2] = xiangshiN;
IDS[31][1] = shiP;
IDS[31][2] = xiangshiN;
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -