围棋盘内下象棋技巧>>>>>>不对路数

围棋盘内下象棋,,,,不对路数_百度知道
围棋盘内下象棋,,,,不对路数
提问者采纳
翅难飞。。。
其他类似问题
下象棋的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁围棋盘内下象棋,,,,不对路数_百度知道
围棋盘内下象棋,,,,不对路数
提问者采纳
盖弥彰。。。
其他类似问题
下象棋的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁围棋盘内下象棋,,,,不对路数_百度知道
围棋盘内下象棋,,,,不对路数
提问者采纳
。。言简意赅
其他类似问题
下象棋的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁电脑为什么会下象棋?_百度知道
电脑为什么会下象棋?
是否是电脑自己和自己反复搏弈直到选出最佳步骤(就如兹威格《象棋的故事》)电脑为什么会下象棋?它如何判断局面的忧劣?最强的中国象棋软件能和大师对弈么?它的数学原理是什么
,而不是含含糊糊的编程..请懂得此类专家给解释一下、套路.我要知道的是数学原理
提问者采纳
0,16},9; case 1; while(j& case 3;100, 1;17,32;stdafx,我们实验课上经常做这些^_^#include &if(i&lt,i;=LastOfSide[, 2, 0},&#47,6.x)。 思路2,y)) ADD(n;=9 && j& break: 32棋子的坐标 tside, 1, 1; #include &quot,32;&#47.x==0) manIndex=27; #include &quot,j) else { if(NOBLACK(x;if(i&lt,j) i=x-2,i;k=32; scanUp =low+1, 2, 0, 0; 将 士 象 马 车 炮 兵 const int base[7]= {300;&#47,1,9,YBW=BWA*10;&#47.x==0) manIndex=5.dll timespan是思考的限定时间:如果别人走马;flag=FALSE,j) break,i,j) i=x-1;=9 && j&gt,y+1)) ADD(n;if(i& case 17: i=x+1,tmanposition[0];if(i&gt.y);&#47.x; count=0; static BOOLn++) { x=tmanposition[n].x) &#47,tmanposition[16],y) i=x-1,x: case 2,j) j=y+2,j)) if(NOMAN(x+1;if(i&lt,i,j)) ADD(n,x: i=x+1,你就走马。 本程序中的算法没有使用这一变量.x==0) manIndex=7;ShowInt(计算机 const int RED=0,13,32;[6] {32;&#47, 0}, 0, 3; if(low&i&lt,y)
case 5,j) } break.11/10; break,int& x1;&#47,32!=1) #define NOMAN(i, 0; scanDown = high,tx,j)) if(NOMAN(x-1: i=x+1。按照思路一的算法 往多了算 一盘棋有50回合.x-1; &#47,31}, 0; int scanUp;if(tmap[tx][ty]==FistOfSide[: i=x+1,y)) { if(; break,6;MantisChessDef, 0} }; static int BeAteCount[32];j=y+1,x: if (manpoint[5],6;进攻的重视程度 &#47, 0;0 && ManBaseValue[i]&gt,j)) { i=x+1,每步有50种变化 一共的变化数就是50的100次方就算少算一点 一盘棋有20回合;士 const int BLACK_X=9; POINT from[MAXMOVE], 0,否则返回FALSE ******************************************************************/=9 && j&&#47,0, 0;scanDown),j) i=x-2.,3;8; pivot_point=targetpoint[mid];=1 && j&lt,平均每方每步可有35种走法,1, { 0;32; if(NOMAN(i.x==0) manIndex=21,32, 0};=8 && NORED(i.,0, { 0!flag) { ADD(0;=1) { if(NOMAN(i;&#47, 0: if(tmanposition[0],i,6, 0,y) i=x-1;MantisChessThink,32, 0; if(NOMAN(i,resultman, 0;0 && ManBaseValue[i]&gt,y) break,32, 3;j=y+2,int& y1, 1,y)) ADD(16.x==0) manIndex=1;****************************************************************** 例!tside].,32;i&flag=FALSE,32; static int ManContact[32][32],y)) { if(,32}; &#47,之所以他能够拥有下棋的能力,32; for(i=FistOfSide[; int side=(int)map[0]-48, 2*base[3]*range[3]&#47,i.y), 0,i,5; point=targetpoint[high]; else { if(NORED(i; POINT to[MAXMOVE]: if(tmanposition[0]; x2=resultpoint, 0;if(i&[4] {32; BOOL EnumList(int tmap[11][12]; else if (manpoint[28], { 0;=1) { if (NOMAN(i,32;j++) { if(tmap[x][j]; &#47: QuickSort上下限 返回值., 4;=1 && NORED(i,32,y)) ADD(0; / chessman[scanDown]=pivot_ else manIndex=2, 0; } i=x-1, { 0,j)) ADD(n,32: i=x+2,32};if(i&gt,6,n;卒 // /i++) { for(j=0;MW-棋子宽度; switch(k) { case 6;/100; /i++) { if(BeAteCount[i]&lt,6;j++) { if(tmap[x][j],0,j) i=x-1,&#47: case 6, 20,i, 1,格式是if, { 0; case 5; ManBaseValue[i]=BV1[k]+ManBaseValue[i]*BV2[k],1;=6 && j&&#47,y)) ADD(n, 0; else manIndex=4,ManContact),返回小于n的随机整数 int rnd(const int& n);=1 && j&lt,j) (SideOfMan[tmap[i][j]].; targetpoint[low]=point,11,j) i=x+2, 0;BOOL Thinking(int tmap[11][12]; /=10 && NOBLACK(i, 0,int& y2);if(i&gt, 0: if (manpoint[3];=LastOfSide[tside],300。如车可以走到任意一点;i&lt,32,是因为我们预先教会了他;i&&#47.,所将军的棋子不能被吃掉 { j=0;/ i++) { manpoint[i];j&lt, 4; } BOOL test(char* x1) { return FALSE,y-1)) ADD(n, 0},0,j)
} } else { ManExtValue[i]+=ManBaseValue[j]*contactpercent2&#47, base[5]-base[5]*range[5]&#47.x=x,i, 0};&#47,int &if(i&lt, 0,32;************************************************************************* 把Think重新包装一下,i, 2,32.x==0) manIndex=13,j) i=x-1,high), 4*2*base[6]*range[6]&#47: &#47,我目前所知道的最牛的机子名叫【深蓝】;if(i&lt, 0} } };防守的重视程度 const int contactpercent2=25;车 const int RED_P=5,详细资料如下 case 9,j)) ADD(n;flag=FALSE.; SW-棋子间隔的一半 const int BWA=MW+SW*2; [0][1][2][3][4][5][6][7][8][9][10][11] {32, base[3]-base[2]*range[2]&#47, 3; case 16; while(i&/ const int BV2[7]=/=0)&#47!flag)flag=TRUE,32; static int ManExtValue[32]., base[4]-base[4]*range[4]/j=y+2,1;=8 && NORED(x,7;tmanposition[0],/=1 && NORED(i, },int& x2;i&lt,32,以毫秒为单位;=6 && j&gt, 0,1; } int length=(int)strlen(map),y)) { i=x-2;if(j&lt: 无 ******************************************************************&#47, 0};100&#47,32}&#47,32,32.h&quot,数字越大价值越高 const int ManBPlus[2][12][11]= { { { 0, 0;scanDown-1) Mantis_QuickSort(A;j=y-1; }
&#47,&#47,int contact[32][32]),j)) ADD(n;&#47, 0};j=y-2,2: ManBaseValue[i]+=BV3[ ManBPlus[SideOfMan[i]][tmanposition[i]; break, { 0; case 3;2;BWA-棋格宽度 const int XBW=BWA*9,i; const int FistOfSide[2]={0.then: 列出所有走法 参数;价值的变动范围 const int contactpercent1=20,=1 && j& } maxvalue -=j, 0,32,3.h const int MW=32: if (manpoint[25]: if (manpoint[7]; case 6; / &#47,32;/ /=1 && NOBLACK(i.给出棋子序号, 1;if(i&gt,4; } else { if(high-low==1) { if(A[high]&gt., 1,y)) ADD(n, 2.,POINT targetpoint[];/if(i&gt, 0; &#47.net,j)) ADD(n; chessman[low]=k, 3;&#47,0,2; &#47,13,32, 0, 0; } maxvalue +=j,j)) { i=x+1;/100.x==tmanposition[16]; i++) { for (int j = 0, 4,i,32;=1 && NOBLACK(i,32,j)) ADD(n, 0;红方 const int BLACK=1;=10 && NORED(i, 0,32; } void ShowInt(int i) { char buf[256]!flag) ADD(n;j=y-1,j)) ADD(n;tmanposition[0];n&=4 && NOBLACK(i;if(i&lt,j)
[0] {32, 0;=1 && NOBLACK(i; break, 2,j)) ADD(n,32: i=x+1,32;=9 && j&gt, { 0: if (manpoint[27],i, 0,32};return FALSE://www,i,j)) ADD(n;=1 && j&gt,j)) ADD(n,y)) ADD(n; break,32}, 0;=10 && NORED(i.y=0; const int BV3[5]=/=9 && j&gt,1;if(i&lt,32;=10 && NOBLACK(i, 0;象 const int BLACK_M=10: i=x+1,int &tside, 0}, base[6]-base[6]*range[6]&#47,&#47,&#47,32;-------------下面几项可以调试智能模块--------------------------- #define S_WIDTH 8 #define S_DEPTH 6 &#47, 0;j&j=y-1,0), 0;if(i&gt,3; switch(n) { case 0,5,i, 0}; else if (manpoint[29],i,low, 0},32;[1] {32,32;[7] {32, 2; A[mid]=A[low];=6 && NORED(i;&#47, 2*base[1]*range[1]/if(i&gt,2!tside])goto _NOKING;&#47,i, 0,6 ,也就是100步,y)) { i=x+2;j=y+1,int * y=tmanposition[n]: case 4,j)) ADD(n.x==0) manIndex=25;[10] };/stdio, 0,y) break, { 0;test&j=y-2, 0; &#47,1; /红帅 const int RED_S=1,0.h&quot, 0,j) i=x-2,&quot, 1,计算机本身是没有只能的, { 0.x==0) manIndex=28;=3 && NOBLACK(i, 0},32,SW=1.x==0) manIndex=14.x==0) manIndex=17;&#47,32, 3,i; / A[scanDown]=k; else manIndex=26;=LastOfSide[tside],32,int &=1 && NORED(i,x;己方 OwnSee[j]=TRUE;&#47,i; while(j&&#47, { 0,i;17,i;=scanDown && A[scanUp]&gt,32; tmap[x][y]=manIndex,实现了我们跟计算机之前的对话,x,战胜了国际象棋大师【卡斯帕罗夫】; else manIndex=31;[5] {32; point=targetpoint[mid];=9) { if(NOMAN(i;/ } j++;------------------------------------------- static void ContactV(int tmap[11][12],32; int index = 1,y)) ADD(n; } i=x-1; } j=y-1.x==0) manIndex=11,32: 局面的价值 ******************************************************************/Calculate, 1; else if (manpoint[30],j) i=x-1, 4;4,32;100, 1,j)) ADD(n;thinking的y从10到1 int color = (int)map[index + 2]-48, 0.;****************************************************************** Value,32, &#47, LPVOID lpReserved ) { return TRUE,32;i++) { if(ManContact[i][FistOfSide[; POINT manpoint[32], 0;黑方 const int RED_K=0;if(i&gt: 指向棋子所走到位置的指针; targetpoint[scanUp]=targetpoint[scanDown],sizeof(int)*32*32),i.,32;if(i&gt.h&quot,别人走了一步以后,j) break,POINT tmanposition[32],ty) {chessman[count]=if(i&lt.h&quot,变动范围±13%应设base[3]=200,j)) ADD(n, 2*base[5]*range[5]&#47.x==0) manIndex=12;=1 && NOBLACK(i;if(i&=1 && NORED(i,是通过程序语言来实现的,32; } } } } for(i=FistOfSide[tside]; &#47,y)) { i=x+2,int high) { int pivot, 0, 0; targetpoint[scanDown]=pivot_point,i,32,j)) ADD(n, 0,4; &#47,int& x2,32,scanDown-1); 12: 轮到哪一放走 返回值,32;/&#47,32, 1;=1) { if (NOMAN(i, 0;&#47.,i: if (manpoint[21],300},j)) ADD(n,32; 11,j)) ADD(n,y) else { if(NOBLACK(i; } } manpoint[manIndex], 0}; while(i&gt, 2;[9] {32,32, 1*2*base[6]*range[6]/i++) { if(tmanposition[i]; BOOL b=Think( tmap.y+1, 0; #define NORED(i, 0;=4 && j&lt,6: case 20; if(high-low&lt, 1;=LastOfSide[tside]: case 10, 3;
} i=x-1,j) &#47, 1;%d&if(i&=10 && NORED(i!flag) ADD(n,32,j)) if(NOMAN(x-1, 3, 0, 0;=10 && NOBLACK(i;&#47: if (manpoint[17].就跟上面的如果怎么样就怎么样是一样的了, off) #endif BOOL APIENTRY DllMain( HMODULE hModule, 0.;=1 && NOBLACK(x,y;j=y+2,32; if(NOMAN(i,与chessman一起组成走法列表 (存放结果)
} } if (,这样计算机就懂得在不同情况下如何处理了哦^_^希望姐姐的解释还比较清晰^_^【补充来了】^_^思路1, 0,3; / const int LastOfSide[2]={15;=6 && NOBLACK(i;100&#47,32;100.y,32;炮 const int RED_B=6,0; A[low]=k;&#47. } } else { switch (type) { case 0, 3。 **************************************************************************/ } i++; #include &quot, 3; else manIndex=8.,13; } else { j=0, 3, 0;j=y+1; &#47,1, { 0;j=y-2;i&将帅在同一列 { flag=FALSE;&#47,x; } } if(flag&&BeAteCount[k]&gt,j)) ADD(n, 1, 4,sizeof(int)*32);&#47,计算机会去计算,10,j) j=y-1, 0;&#47,6; break,32;if(i&lt,j)) ADD(0,j)) ADD(n,int &tside, 1: i=x+1, 4;high) Mantis_QuickSort(A; i &=1 && j&gt: manIndex=0; if(; ZeroMemory(ManExtValue.,j) break,y) break, 0, 0,j) i=x-1.x=tx,y)) ADD(n; } } } mid=(low +high)&#47!tside],10;兵 const int BLACK_K=7: 待排序的棋子列表 targetpoint, 0;if(i&lt, 0,j)) ADD(16,j) (SideOfMan[tmap[i][j]]; A[high]=A[low],4; struct MOVEHISTORY {
while(i&0-6 int manIndex=0;&#47: i=x+2; &#47, 0; &#47,32,棋盘上90个点!,就是1后面跟着40个0【也就是说;&#47,3; } } for(i=0;32,5;100 },&quot, 0;4;=1) { if (NOMAN(x; if (color==0) { switch (type) { case 0,i,6,32; case 23,1,13;=9 && j&仕 const int RED_X=2;人 const int COM=1,j) } i=x-1,6 ,32;/ chessman[low]=k; if(NOMAN(i;j=y-2, 0}.;&#47,32;/if(j&gt,&&#47, 0,32,也就是40步; int Value(int tmap[11][12]; case 5, 2!tside]]) { maxvalue=9700,i;j=y-1,y+1)) ADD(n,x: 关键值 兵在不同位置的价值附加 { 0*2*base[6]*range[6]&#47,1!flag) ADD(n,y+1)) ADD(n; targetpoint[mid]=targetpoint[low], { 0,32,32,32;100/ chessman[mid]=chessman[low],y) break, 10; } j--;=8 && NORED(i;count++,j) i=x+2,11;=1 && j&lt: 32棋子的坐标 =1 && j&gt,2,x,各点可走的点, 3;/StdA } i--,y) else { if(NORED(i; #include &quot,/ break,chessman.x==0) manIndex=30; } #ifdef _MANAGED #pragma managed(pop) #endif Calculate,j)) if(NOMAN(x+1;&#47,i, 0};=6 && j&if(i&gt, { 0.h&&#47, 1, 0, 0, 50};车 const int BLACK_P=12.h&quot,j)) ADD(n;=9 && j&lt,j)) ADD(n,进行坐标变换;100/ } i++,j) i=x+1,i,32。 &#47, }.x==0) manIndex=23,32;thinking的x从1到9 int y = 10 - ((int)map[index + 1]-48), 0, 0;&#47,j: case 24; length) { int x =1 + ((int)map[index + 0]-48); sprintf(buf, DWORD ul_reason_for_ &#47,/
POINT resultpoint={0,i,i, 0;4; if(NOMAN(x,你有多少种可能的走法,i, 0,j)) ADD(n;100,j)) ADD(n;[8] {32; for (int i = 0; else manIndex=10, 0; int betaken[MAXMOVE],j) i=x+1,x,j)) ADD(n; for(i=FistOfSide[, 0}, { 0,j) i=x+1,32, 0;/ int maxvalue=0; else manIndex=24;&#47,6,1;=1 && j& j++) { tmap[i][j] = 32;相 const int RED_M=3,32!OwnSee[j]) { ManExtValue[i]+=ManBaseValue[j]*contactpercent1&#47, { 0,y-1)) ADD(n,j)) { if(,6; static BOOL OwnSee[32],int chessman[]; &#47!=32) { flag=TRUE, 0; for(n=FistOfSide[tside]; flag=FALSE,sizeof(int)*32); } j=y+1;j=y-2: 指向棋子列表的指针(存放结果) move,j)) if(NOMAN(x+1, 2,1,32.y.htm其实, 0; case 3; 32,j) 【我是学c++的】呵呵, { 0;=9 && j&if(i&lt,j)) ADD(n, 1: 估值函数 参数,i; while(pivot&gt,y)) ADD(n:把马设为平均价值200,j) } j=y-1;随即函数,32; void ShowString(char * t);=pivot) scanUp++,i; case 1,x; } j++, 0,side,j) else { if(NORED(x, 4; } static BOOL } &#47, 0;j=y+1,32; } return b, 0;test&quot,int activity[32];=1 && j& while(j&lt,32};/=10) { if(NOMAN(x; const int MAXMOVE = 1000;if(i&兵卒在不同位置的价值;; A[scanUp]=A[scanDown]; BOOL Calculate(char* &#47,x, 4, { 0,32,4: “照相”返回TRUE, 0,0,k, 0; /if(i&gt, 3,y)) ADD(n,int &tside) {
while(i&以下是全局函数定义; case 7; } }while(scanUp& static int ManBaseValue[32]; } } j=y+1,8!; &#47, 0, 0, 0; while(j& k=chessman[scanUp];j=y+2; while(j&j) j=ManBaseValue[i],/MantisChessThink,5,y)) { i=x-2,x, 0, 2*base[4]*range[4]/ ZeroMemory(BeAteCount, 0我是学计算机的,加了注释,呵呵,32
提问者评价
果然高人,十分专业。
其他类似问题
62人觉得有用
按默认排序
其他9条回答
,推算下一步(下下一步.计算的步数越多越耗时间。。)的走法带来的局面的总的值的和,出现哪种局面就用哪种走法,电脑的水平也越高另一个是给电脑输入棋谱,电脑行走时一般象棋程序是两种算法一个是根据每个子的价值给每个子赋值。.写程序的时候两种算法结合使用是比较好的一种选择,下下下一步
就是把实战中 人下过的谱都记录下来 按谱下啊象棋不比围棋
围棋有2X10的30次方的可能象棋可行的有几千万就不错了几千万的运算量对现在的电脑来说不算什么了吧
把一写套路输入进去了 电脑就按套路下棋所以电脑很容易 只要赢一次 电脑的路线就很明了
这是因为程序里面保存有棋谱棋谱里面记录有象棋的走法,举个例子,只要你走车,可能它就会走马,有多个棋谱,交替使用的
楼主问得太笼统了,其实说电脑会下象棋是一个很庞大的数学问题。计算机专业里面有一门专门的科学叫人工智能,就是为了解决这方面的问题。现有的大多棋类游戏,有点人工智能的大多采用的是危机值来确定的。说得很细点就是,在每一步时,他利用堆栈会对这步分析对方下步走对自己不利的概率。所以,为什么现在的计算机还要提升速度,就是为了算得更远。不过遗憾,中国的人工智能在世界上还是比较落后的。
我感觉就是编程的自己搞的凭电脑超强的记忆集百家之长所以对付他们最好的办法就是出其不意
电脑下棋其实很简单,就是不断的计算路数,从这些路数中选择对自己最有利的路数。总之,电脑只会做人们已经能解决的问题。它的强项就是能重复做事情而不会感到烦。
把一些下棋 方法写进去了
您可能关注的推广回答者:
下象棋的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁围棋盘内下象棋&&&&&&不对路数_百度知道
围棋盘内下象棋&&&&&&不对路数
提问者采纳
有凤来仪。。。
其他类似问题
下象棋的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 与电脑下象棋 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信