求中国象棋机器人脚本!谁有? 如题 搜索了很久都找不到中国象棋的机器人脚本delphi写的中国象棋到是很多源码,写的也非常的不错!但是不能像其它的软件那样和电脑对战!谁有这方面的代码?本人主要是要中国象棋的智能脚本!!全部分压上 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL EnumList(int tmap[11][12],POINT tmanposition[32],int &tside,int *chessman,POINT *move,int &count){ #define ADD(man,tx,ty) {chessman[count]=man;move[count].x=tx;move[count].y=ty;count++;if(tmap[tx][ty]==FistOfSide[!tside])goto _NOKING;} static int i,j,n,x,y; static BOOL flag; count=0; for(n=FistOfSide[tside];n<=LastOfSide[tside];n++) { x=tmanposition[n].x; if(!x)continue; y=tmanposition[n].y; switch(n) { case 0: if(tmanposition[0].x==tmanposition[16].x) //将帅在同一列 { flag=FALSE; for(j=tmanposition[16].y+1;j<tmanposition[0].y;j++) { if(tmap[x][j]!=32) { flag=TRUE; break; } } if (!flag) { ADD(0,x,tmanposition[16].y); } } j=y+1;if(j<=10 && NORED(x,j)) ADD(0,x,j) j=y-1;if(j>=8 && NORED(x,j)) ADD(0,x,j) i=x+1;if(i<=6 && NORED(i,y)) ADD(0,i,y) i=x-1;if(i>=4 && NORED(i,y)) ADD(0,i,y) break; case 16: if(tmanposition[0].x==tmanposition[16].x) //将帅在同一列 { flag=FALSE; for(j=tmanposition[16].y+1;j<tmanposition[0].y;j++) { if(tmap[x][j]!=32) { flag=TRUE; break; } } if (!flag) { ADD(16,x,tmanposition[0].y); } } j=y+1;if(j<=3 && NOBLACK(x,j)) ADD(16,x,j) j=y-1;if(j>=1 && NOBLACK(x,j)) ADD(16,x,j) i=x+1;if(i<=6 && NOBLACK(i,y)) ADD(16,i,y) i=x-1;if(i>=4 && NOBLACK(i,y)) ADD(16,i,y) break; case 1: case 2: i=x+1;j=y+1;if(i<=6 && j<=10 && NORED(i,j)) ADD(n,i,j) i=x+1;j=y-1;if(i<=6 && j>=8 && NORED(i,j)) ADD(n,i,j) i=x-1;j=y+1;if(i>=4 && j<=10 && NORED(i,j)) ADD(n,i,j) i=x-1;j=y-1;if(i>=4 && j>=8 && NORED(i,j)) ADD(n,i,j) break; case 17: case 18: i=x+1;j=y+1;if(i<=6 && j<=3 && NOBLACK(i,j)) ADD(n,i,j) i=x+1;j=y-1;if(i<=6 && j>=1 && NOBLACK(i,j)) ADD(n,i,j) i=x-1;j=y+1;if(i>=4 && j<=3 && NOBLACK(i,j)) ADD(n,i,j) i=x-1;j=y-1;if(i>=4 && j>=1 && NOBLACK(i,j)) ADD(n,i,j) break; case 3: case 4: i=x+2;j=y+2;if(i<=9 && j<=10 && NORED(i,j)) if(NOMAN(x+1,y+1)) ADD(n,i,j) i=x+2;j=y-2;if(i<=9 && j>=6 && NORED(i,j)) if(NOMAN(x+1,y-1)) ADD(n,i,j) i=x-2;j=y+2;if(i>=1 && j<=10 && NORED(i,j)) if(NOMAN(x-1,y+1)) ADD(n,i,j) i=x-2;j=y-2;if(i>=1 && j>=6 && NORED(i,j)) if(NOMAN(x-1,y-1)) ADD(n,i,j) break; case 19: case 20: i=x+2;j=y+2;if(i<=9 && j<=5 && NOBLACK(i,j)) if(NOMAN(x+1,y+1)) ADD(n,i,j) i=x+2;j=y-2;if(i<=9 && j>=1 && NOBLACK(i,j)) if(NOMAN(x+1,y-1)) ADD(n,i,j) i=x-2;j=y+2;if(i>=1 && j<=5 && NOBLACK(i,j)) if(NOMAN(x-1,y+1)) ADD(n,i,j) i=x-2;j=y-2;if(i>=1 && j>=1 && NOBLACK(i,j)) if(NOMAN(x-1,y-1)) ADD(n,i,j) break; case 5: case 6: i=x+1; if(NOMAN(i,y)) { i=x+2;j=y+1;if(i<=9 && j<=10 && NORED(i,j)) ADD(n,i,j) i=x+2;j=y-1;if(i<=9 && j>=1 && NORED(i,j)) ADD(n,i,j) } i=x-1; if(NOMAN(i,y)) { i=x-2;j=y+1;if(i>=1 && j<=10 && NORED(i,j)) ADD(n,i,j) i=x-2;j=y-1;if(i>=1 && j>=1 && NORED(i,j)) ADD(n,i,j) } j=y+1; if(NOMAN(x,j)) { i=x+1;j=y+2;if(i<=9 && j<=10 && NORED(i,j)) ADD(n,i,j) i=x-1;j=y+2;if(i>=1 && j<=10 && NORED(i,j)) ADD(n,i,j) } j=y-1; if(NOMAN(x,j)) { i=x+1;j=y-2;if(i<=9 && j>=1 && NORED(i,j)) ADD(n,i,j) i=x-1;j=y-2;if(i>=1 && j>=1 && NORED(i,j)) ADD(n,i,j) } break; case 21: case 22: i=x+1; if(NOMAN(i,y)) { i=x+2;j=y+1;if(i<=9 && j<=10 && NOBLACK(i,j)) ADD(n,i,j) i=x+2;j=y-1;if(i<=9 && j>=1 && NOBLACK(i,j)) ADD(n,i,j) } i=x-1; if(NOMAN(i,y)) { i=x-2;j=y+1;if(i>=1 && j<=10 && NOBLACK(i,j)) ADD(n,i,j) i=x-2;j=y-1;if(i>=1 && j>=1 && NOBLACK(i,j)) ADD(n,i,j) } j=y+1; if(NOMAN(x,j)) { i=x+1;j=y+2;if(i<=9 && j<=10 && NOBLACK(i,j)) ADD(n,i,j) i=x-1;j=y+2;if(i>=1 && j<=10 && NOBLACK(i,j)) ADD(n,i,j) } j=y-1; if(NOMAN(x,j)) { i=x+1;j=y-2;if(i<=9 && j>=1 && NOBLACK(i,j)) ADD(n,i,j) i=x-1;j=y-2;if(i>=1 && j>=1 && NOBLACK(i,j)) ADD(n,i,j) } break; case 7: case 8: i=x+1; while(i<=9) { if (NOMAN(i,y)) ADD(n,i,y) else { if(NORED(i,y)) ADD(n,i,y) break; } i++; } i=x-1; while(i>=1) { if (NOMAN(i,y)) ADD(n,i,y) else { if(NORED(i,y)) ADD(n,i,y) break; } i--; } j=y+1; while(j<=10) { if (NOMAN(x,j)) ADD(n,x,j) else { if(NORED(x,j)) ADD(n,x,j) break; } j++; } j=y-1; while(j>=1) { if (NOMAN(x,j)) ADD(n,x,j) else { if(NORED(x,j)) ADD(n,x,j) break; } j--; } break; case 23: case 24: i=x+1; while(i<=9) { if (NOMAN(i,y)) ADD(n,i,y) else { if(NOBLACK(i,y)) ADD(n,i,y) break; } i++; } i=x-1; while(i>=1) { if (NOMAN(i,y)) ADD(n,i,y) else { if(NOBLACK(i,y)) ADD(n,i,y) break; } i--; } j=y+1; while(j<=10) { if (NOMAN(x,j)) ADD(n,x,j) else { if(NOBLACK(x,j)) ADD(n,x,j) break; } j++; } j=y-1; while(j>=1) { if (NOMAN(x,j)) ADD(n,x,j) else { if(NOBLACK(x,j)) ADD(n,x,j) break; } j--; } break; case 9: case 10: i=x+1;flag=FALSE; while(i<=9) { if(NOMAN(i,y)) { if(!flag) ADD(n,i,y) } else { if(!flag)flag=TRUE; else { if(NORED(i,y)) ADD(n,i,y) break; } } i++; } i=x-1;flag=FALSE; while(i>=1) { if(NOMAN(i,y)) { if(!flag) ADD(n,i,y) } else { if(!flag)flag=TRUE; else { if(NORED(i,y)) ADD(n,i,y) break; } } i--; } j=y+1;flag=FALSE; while(j<=10) { if(NOMAN(x,j)) { if(!flag) ADD(n,x,j) } else { if(!flag)flag=TRUE; else { if(NORED(x,j)) ADD(n,x,j) break; } } j++; } j=y-1;flag=FALSE; while(j>=1) { if(NOMAN(x,j)) { if(!flag) ADD(n,x,j) } else { if(!flag)flag=TRUE; else { if(NORED(x,j)) ADD(n,x,j) break; } } j--; } break; case 25: case 26: i=x+1;flag=FALSE; while(i<=9) { if(NOMAN(i,y)) { if(!flag) ADD(n,i,y) } else { if(!flag)flag=TRUE; else { if(NOBLACK(i,y)) ADD(n,i,y) break; } } i++; } i=x-1;flag=FALSE; while(i>=1) { if(NOMAN(i,y)) { if(!flag) ADD(n,i,y) } else { if(!flag)flag=TRUE; else { if(NOBLACK(i,y)) ADD(n,i,y) break; } } i--; } j=y+1;flag=FALSE; while(j<=10) { if(NOMAN(x,j)) { if(!flag) ADD(n,x,j) } else { if(!flag)flag=TRUE; else { if(NOBLACK(x,j)) ADD(n,x,j) break; } } j++; } j=y-1;flag=FALSE; while(j>=1) { if(NOMAN(x,j)) { if(!flag) ADD(n,x,j) } else { if(!flag)flag=TRUE; else { if(NOBLACK(x,j)) ADD(n,x,j) break; } } j--; } break; case 11: case 12: case 13: case 14: case 15: j=y-1; if(j>=1 && NORED(x,j)) ADD(n,x,j) if(y<=5) { i=x+1;if(i<=9 && NORED(i,y)) ADD(n,i,y) i=x-1;if(i>=1 && NORED(i,y)) ADD(n,i,y) } break; case 27: case 28: case 29: case 30: case 31: ....................} 求一delphi的!!!最好是高水平的那种 不要人轻而易举就把电脑给灭了!!! Const Len = 8; { 棋盘的大小是 8×8 } Jump : array[1..8,1..2] of integer = { 向8个方向跳马时,棋盘上位置的变化 } ( (2,1),(2,-1),(-2,1),(-2,-1),(1,2),(-1,2),(1,-2),(-1,-2) );Var Map : array[1..Len,1..Len] of integer; { 定义棋盘 }procedure Try( Step, Row,Col : integer ); { 递归过程 } var i, j : integer;begin if Step>Len*Len then begin { 所有棋盘已经走完 } 输出结果; end else for i:= 1 to 8 do { 8个方向逐一试试 } if ( Row+Jump[i,1] > 0 ) and ( Row+Jump[i,1] <= Len ) and ( Col+Jump[i,2] > 0 ) and ( Row+Jump[i,2] <= Len ) and { 检查是否跳出边界 } ( Map[ Row+Jump[i,1], Col+Jump[i,2] ] = 0 ) { 检查该位置是否已经走过 } then begin Map[ Row+Jump[i,1], Col+Jump[i,2] ] = Step; { 表示第Step步走在该位置 } Try( Step+1, Row+Jump[i,1], Col+Jump[i,2] ); {试下一步,同时棋子的位置也相应改变 } Map[ Row+Jump[i,1], Col+Jump[i,2] ] = 0; {该位置清0,即认为没有走过} { 通过 for 循环,试走下一个方向 } end;end;BEGIN { 主程序 } FillChar( Map,SizeOf(Map),0); {给Map数组中各个元素赋初值0,表示没有走过} Try(1,1,4); { try( 步骤, 行,列 ), }END.你可以把程序拓宽就能实现你的功能了 www.dullwolf.cn/chess/效果:代码:www.dullwolf.cn/chess.rar 大笨狼的ajax象棋,今天下午拉风了 为什么出现‘Expression Expected but Nothing found! 不规则图形怎么计算长和宽?急,在线等候 access数据库如何定义能显视图片的字段? SOS,各位大哥代码都写累了吧,近来换换脑筋看看我的问题!(制作电影) 棘手问题,关于数据库的导入 delphi调用VC写的dll的问题 提示参数jc_sfxm.sfid没有默认值,如何解决?? 枚举值怎么转化为元类值? stringgrid的问题 如何取得Database的登陆密码?(小Case了,希不吝赐教) 有关DELPHI中SPCOMM控件的安装 Delphi如何调用无参数无返回值的dll?
BOOL EnumList(int tmap[11][12],POINT tmanposition[32],int &tside,int *chessman,POINT *move,int &count)
{
#define ADD(man,tx,ty) {chessman[count]=man;move[count].x=tx;move[count].y=ty;count++;if(tmap[tx][ty]==FistOfSide[!tside])goto _NOKING;}
static int i,j,n,x,y;
static BOOL flag;
count=0;
for(n=FistOfSide[tside];n<=LastOfSide[tside];n++)
{
x=tmanposition[n].x;
if(!x)continue;
y=tmanposition[n].y;
switch(n)
{
case 0:
if(tmanposition[0].x==tmanposition[16].x) //将帅在同一列
{
flag=FALSE;
for(j=tmanposition[16].y+1;j<tmanposition[0].y;j++)
{
if(tmap[x][j]!=32)
{
flag=TRUE;
break;
}
}
if (!flag)
{
ADD(0,x,tmanposition[16].y);
}
}
j=y+1;if(j<=10 && NORED(x,j)) ADD(0,x,j)
j=y-1;if(j>=8 && NORED(x,j)) ADD(0,x,j)
i=x+1;if(i<=6 && NORED(i,y)) ADD(0,i,y)
i=x-1;if(i>=4 && NORED(i,y)) ADD(0,i,y)
break;
case 16:
if(tmanposition[0].x==tmanposition[16].x) //将帅在同一列
{
flag=FALSE;
for(j=tmanposition[16].y+1;j<tmanposition[0].y;j++)
{
if(tmap[x][j]!=32)
{
flag=TRUE;
break;
}
}
if (!flag)
{
ADD(16,x,tmanposition[0].y);
}
}
j=y+1;if(j<=3 && NOBLACK(x,j)) ADD(16,x,j)
j=y-1;if(j>=1 && NOBLACK(x,j)) ADD(16,x,j)
i=x+1;if(i<=6 && NOBLACK(i,y)) ADD(16,i,y)
i=x-1;if(i>=4 && NOBLACK(i,y)) ADD(16,i,y)
break;
case 1:
case 2:
i=x+1;j=y+1;if(i<=6 && j<=10 && NORED(i,j)) ADD(n,i,j)
i=x+1;j=y-1;if(i<=6 && j>=8 && NORED(i,j)) ADD(n,i,j)
i=x-1;j=y+1;if(i>=4 && j<=10 && NORED(i,j)) ADD(n,i,j)
i=x-1;j=y-1;if(i>=4 && j>=8 && NORED(i,j)) ADD(n,i,j)
break;
case 17:
case 18:
i=x+1;j=y+1;if(i<=6 && j<=3 && NOBLACK(i,j)) ADD(n,i,j)
i=x+1;j=y-1;if(i<=6 && j>=1 && NOBLACK(i,j)) ADD(n,i,j)
i=x-1;j=y+1;if(i>=4 && j<=3 && NOBLACK(i,j)) ADD(n,i,j)
i=x-1;j=y-1;if(i>=4 && j>=1 && NOBLACK(i,j)) ADD(n,i,j)
break;
case 3:
case 4:
i=x+2;j=y+2;if(i<=9 && j<=10 && NORED(i,j)) if(NOMAN(x+1,y+1)) ADD(n,i,j)
i=x+2;j=y-2;if(i<=9 && j>=6 && NORED(i,j)) if(NOMAN(x+1,y-1)) ADD(n,i,j)
i=x-2;j=y+2;if(i>=1 && j<=10 && NORED(i,j)) if(NOMAN(x-1,y+1)) ADD(n,i,j)
i=x-2;j=y-2;if(i>=1 && j>=6 && NORED(i,j)) if(NOMAN(x-1,y-1)) ADD(n,i,j)
break;
case 19:
case 20:
i=x+2;j=y+2;if(i<=9 && j<=5 && NOBLACK(i,j)) if(NOMAN(x+1,y+1)) ADD(n,i,j)
i=x+2;j=y-2;if(i<=9 && j>=1 && NOBLACK(i,j)) if(NOMAN(x+1,y-1)) ADD(n,i,j)
i=x-2;j=y+2;if(i>=1 && j<=5 && NOBLACK(i,j)) if(NOMAN(x-1,y+1)) ADD(n,i,j)
i=x-2;j=y-2;if(i>=1 && j>=1 && NOBLACK(i,j)) if(NOMAN(x-1,y-1)) ADD(n,i,j)
break;
case 5:
case 6:
i=x+1;
if(NOMAN(i,y))
{
i=x+2;j=y+1;if(i<=9 && j<=10 && NORED(i,j)) ADD(n,i,j)
i=x+2;j=y-1;if(i<=9 && j>=1 && NORED(i,j)) ADD(n,i,j)
}
i=x-1;
if(NOMAN(i,y))
{
i=x-2;j=y+1;if(i>=1 && j<=10 && NORED(i,j)) ADD(n,i,j)
i=x-2;j=y-1;if(i>=1 && j>=1 && NORED(i,j)) ADD(n,i,j)
}
j=y+1;
if(NOMAN(x,j))
{
i=x+1;j=y+2;if(i<=9 && j<=10 && NORED(i,j)) ADD(n,i,j)
i=x-1;j=y+2;if(i>=1 && j<=10 && NORED(i,j)) ADD(n,i,j)
}
j=y-1;
if(NOMAN(x,j))
{
i=x+1;j=y-2;if(i<=9 && j>=1 && NORED(i,j)) ADD(n,i,j)
i=x-1;j=y-2;if(i>=1 && j>=1 && NORED(i,j)) ADD(n,i,j)
}
break;
case 21:
case 22:
i=x+1;
if(NOMAN(i,y))
{
i=x+2;j=y+1;if(i<=9 && j<=10 && NOBLACK(i,j)) ADD(n,i,j)
i=x+2;j=y-1;if(i<=9 && j>=1 && NOBLACK(i,j)) ADD(n,i,j)
}
i=x-1;
if(NOMAN(i,y))
{
i=x-2;j=y+1;if(i>=1 && j<=10 && NOBLACK(i,j)) ADD(n,i,j)
i=x-2;j=y-1;if(i>=1 && j>=1 && NOBLACK(i,j)) ADD(n,i,j)
}
j=y+1;
if(NOMAN(x,j))
{
i=x+1;j=y+2;if(i<=9 && j<=10 && NOBLACK(i,j)) ADD(n,i,j)
i=x-1;j=y+2;if(i>=1 && j<=10 && NOBLACK(i,j)) ADD(n,i,j)
}
j=y-1;
if(NOMAN(x,j))
{
i=x+1;j=y-2;if(i<=9 && j>=1 && NOBLACK(i,j)) ADD(n,i,j)
i=x-1;j=y-2;if(i>=1 && j>=1 && NOBLACK(i,j)) ADD(n,i,j)
}
break; case 7:
case 8:
i=x+1;
while(i<=9)
{
if (NOMAN(i,y)) ADD(n,i,y)
else
{
if(NORED(i,y)) ADD(n,i,y)
break;
}
i++;
}
i=x-1;
while(i>=1)
{
if (NOMAN(i,y)) ADD(n,i,y)
else
{
if(NORED(i,y)) ADD(n,i,y)
break;
}
i--;
}
j=y+1;
while(j<=10)
{
if (NOMAN(x,j)) ADD(n,x,j)
else
{
if(NORED(x,j)) ADD(n,x,j)
break;
}
j++;
}
j=y-1;
while(j>=1)
{
if (NOMAN(x,j)) ADD(n,x,j)
else
{
if(NORED(x,j)) ADD(n,x,j)
break;
}
j--;
}
break;
case 23:
case 24:
i=x+1;
while(i<=9)
{
if (NOMAN(i,y)) ADD(n,i,y)
else
{
if(NOBLACK(i,y)) ADD(n,i,y)
break;
}
i++;
}
i=x-1;
while(i>=1)
{
if (NOMAN(i,y)) ADD(n,i,y)
else
{
if(NOBLACK(i,y)) ADD(n,i,y)
break;
}
i--;
}
j=y+1;
while(j<=10)
{
if (NOMAN(x,j)) ADD(n,x,j)
else
{
if(NOBLACK(x,j)) ADD(n,x,j)
break;
}
j++;
}
j=y-1;
while(j>=1)
{
if (NOMAN(x,j)) ADD(n,x,j)
else
{
if(NOBLACK(x,j)) ADD(n,x,j)
break;
}
j--;
}
break;
case 9:
case 10:
i=x+1;flag=FALSE;
while(i<=9)
{
if(NOMAN(i,y))
{
if(!flag) ADD(n,i,y)
}
else
{
if(!flag)flag=TRUE;
else
{
if(NORED(i,y)) ADD(n,i,y)
break;
}
}
i++;
} i=x-1;flag=FALSE;
while(i>=1)
{
if(NOMAN(i,y))
{
if(!flag) ADD(n,i,y)
}
else
{
if(!flag)flag=TRUE;
else
{
if(NORED(i,y)) ADD(n,i,y)
break;
}
}
i--;
} j=y+1;flag=FALSE;
while(j<=10)
{
if(NOMAN(x,j))
{
if(!flag) ADD(n,x,j)
}
else
{
if(!flag)flag=TRUE;
else
{
if(NORED(x,j)) ADD(n,x,j)
break;
}
}
j++;
} j=y-1;flag=FALSE;
while(j>=1)
{
if(NOMAN(x,j))
{
if(!flag) ADD(n,x,j)
}
else
{
if(!flag)flag=TRUE;
else
{
if(NORED(x,j)) ADD(n,x,j)
break;
}
}
j--;
}
break; case 25:
case 26:
i=x+1;flag=FALSE;
while(i<=9)
{
if(NOMAN(i,y))
{
if(!flag) ADD(n,i,y)
}
else
{
if(!flag)flag=TRUE;
else
{
if(NOBLACK(i,y)) ADD(n,i,y)
break;
}
}
i++;
} i=x-1;flag=FALSE;
while(i>=1)
{
if(NOMAN(i,y))
{
if(!flag) ADD(n,i,y)
}
else
{
if(!flag)flag=TRUE;
else
{
if(NOBLACK(i,y)) ADD(n,i,y)
break;
}
}
i--;
} j=y+1;flag=FALSE;
while(j<=10)
{
if(NOMAN(x,j))
{
if(!flag) ADD(n,x,j)
}
else
{
if(!flag)flag=TRUE;
else
{
if(NOBLACK(x,j)) ADD(n,x,j)
break;
}
}
j++;
} j=y-1;flag=FALSE;
while(j>=1)
{
if(NOMAN(x,j))
{
if(!flag) ADD(n,x,j)
}
else
{
if(!flag)flag=TRUE;
else
{
if(NOBLACK(x,j)) ADD(n,x,j)
break;
}
}
j--;
}
break;
case 11:
case 12:
case 13:
case 14:
case 15:
j=y-1;
if(j>=1 && NORED(x,j)) ADD(n,x,j)
if(y<=5)
{
i=x+1;if(i<=9 && NORED(i,y)) ADD(n,i,y)
i=x-1;if(i>=1 && NORED(i,y)) ADD(n,i,y)
}
break; case 27:
case 28:
case 29:
case 30:
case 31:
....................
}
Len = 8; { 棋盘的大小是 8×8 }
Jump : array[1..8,1..2] of integer = { 向8个方向跳马时,棋盘上位置的变化 }
( (2,1),(2,-1),(-2,1),(-2,-1),(1,2),(-1,2),(1,-2),(-1,-2) );
Var
Map : array[1..Len,1..Len] of integer; { 定义棋盘 }procedure Try( Step, Row,Col : integer ); { 递归过程 }
var
i, j : integer;
begin
if Step>Len*Len then
begin { 所有棋盘已经走完 }
输出结果;
end
else
for i:= 1 to 8 do { 8个方向逐一试试 }
if ( Row+Jump[i,1] > 0 ) and ( Row+Jump[i,1] <= Len ) and
( Col+Jump[i,2] > 0 ) and ( Row+Jump[i,2] <= Len ) and { 检查是否跳出边界 }
( Map[ Row+Jump[i,1], Col+Jump[i,2] ] = 0 ) { 检查该位置是否已经走过 }
then
begin
Map[ Row+Jump[i,1], Col+Jump[i,2] ] = Step; { 表示第Step步走在该位置 }
Try( Step+1, Row+Jump[i,1], Col+Jump[i,2] ); {试下一步,同时棋子的位置也相应改变 }
Map[ Row+Jump[i,1], Col+Jump[i,2] ] = 0; {该位置清0,即认为没有走过}
{ 通过 for 循环,试走下一个方向 }
end;
end;BEGIN { 主程序 }
FillChar( Map,SizeOf(Map),0); {给Map数组中各个元素赋初值0,表示没有走过}
Try(1,1,4); { try( 步骤, 行,列 ), }
END.
你可以把程序拓宽就能实现你的功能了
效果:
代码:
www.dullwolf.cn/chess.rar