接上面中国象棋代码:
if( check_turn == 12) //相的走法规范
{ if((x == check_x &厅晌&y == check_y))
{temp = turn temp1 = turn1 turn = 'O' turn1 = 'N' num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500)
}
else if( x >= 15 &&(abs(y - check_y) == 8 &&abs(x - check_x) == 4))
{if((x == 22 &&(y == 11 || y == 27))||(x == 18 &&
( y == 3 || y == 19 || y == 35)) ||(x == 14 &&(y == 11|| y ==27)))
{ if( map[(x+check_x)/2][(y+check_y)/2] == '+') check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else {printf("棋子卡住,不可执行")Sleep(500)} }
else {printf("不合法的下法\n")Sleep(500)}
}
else {printf("不合法的下法\n")Sleep(500)}
}
if( check_turn == 13) //士的走法规范
{ if((x == check_x &&y == check_y))
{temp = turn temp1 = turn1 turn = 'O' turn1 = 'N' num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500) }
else if( abs(x - check_x)== 2 &&abs( y - check_y) == 4 &&((x==22 &&(y == 15
|| y == 23)) || ( x == 20 &&y == 19) || ( x == 18 &&( y == 15 || y == 23)))) {check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)}
else { printf("不合法的下法\n")Sleep(500)} }
if( check_turn == 14) //将的走法规范
{ if((x == check_x &&y == check_y))
{ temp = turn temp1 = turn1 turn = 'O' turn1 = 'N' num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500) }
else if( ((abs(x - check_x)== 2 &&abs( y - check_y) == 0 )|| (abs(x - check_x)== 0
&&abs( y - check_y) == 4)) &&x >= 18 &&x <= 22 &&y >= 15 &&y <= 23 )
{ check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)}
else { printf("不合法的下法\n")Sleep(500)} }
if( check_turn == 15) //炮的走法规范
滚伏液 { if((x == check_x &&y == check_y))
{ temp = turn 大物temp1 = turn1 turn = 'O' turn1 = 'N' num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500) }
else if( y == check_y )
{ int check_pao = 0
if( x >check_x)
{ for(j = check_x + 2j<= x j = j+ 2)
{ if(map[j][y] == '+' ) else check_pao++}
if(check_pao == 1&&temp == '+') // 直线行走但不可吃棋子 check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else if( check_pao == 2 &&temp != '+') //跳跃吃棋 check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
else { for(j = check_x - 2j>= xj = j - 2)
{ if(map[j][y] == '+' ) else { check_pao++} }
if(check_pao == 1&&temp == '+') //直线行走但不可吃棋子 check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else if( check_pao == 2 &&temp != '+') //跳跃吃棋 check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
}
else if( x == check_x )
{ int check_pao = 0
if( y >check_y)
{ for(j = check_y + 4j<= y j = j+4)
{ if(map[x][j] == '+' ) else check_pao++}
if(check_pao == 1&&temp == '+') //直线行走但不可吃棋子 check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else if( check_pao == 2 &&temp != '+') //跳跃吃棋 check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
else {for(j = check_y - 4j>= yj = j - 4)
{if(map[x][j] == '+' ) else check_pao++}
if(check_pao == 1&&temp == '+') //直线行走但不可吃棋子 check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else if( check_pao == 2 &&temp != '+') //跳跃吃棋 check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
}
else { printf("不合法的下法\n")Sleep(500)}
}
if( check_turn == 16) //卒的走法规范
{ if ( x >= 14)
{ if((x == check_x &&y == check_y))
{ temp = turn temp1 = turn1 turn = 'O' turn1 = 'N' num--
printf("三思而后行\n")printf("还是你的回合") Sleep(500) }
else if( x == check_x - 2 &&y == check_y) check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)}
}
else{ if((x == check_x &&y == check_y))
{ temp = turn temp1 = turn1 turn = 'O' turn1 = 'N' num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500) }
else if((x - check_x == 0 &&abs(y-check_y) ==4) ||( x - check_x == -2
&&abs(y-check_y) == 0)) check_main1(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
}
}
else { if( check_turn == 20) //车的走法规范 (帅方)
{ if((x == check_x &&y == check_y))
{ temp = turn temp1 = turn1turn = 'O'turn1 = 'N' num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500) }
else if( y == check_y )
{ if( x >check_x)
{ for(j = check_x + 2j <xj = j + 2)
{ if(map[j][y] == '+')else {printf("不合法的下法\n")Sleep(500)break} }
if( j >= x) check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
}
if( x <check_x)
{ for(j = check_x - 2j >xj = j - 2)
{ if(map[j][y] == '+')else { printf("不合法的下法\n")Sleep(500)break} }
if( j <= x) check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
}
}
else if( x == check_x )
{ if( y >check_y)
{ for(j = check_y + 4j <yj = j + 4)
{ if(map[x][j] == '+')else { printf("不合法的下法\n")Sleep(500)break} }
if( j >= y) check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
}
if( y <check_y)
{ for(j = check_y - 4j >yj = j - 4)
{ if(map[x][j] == '+')else { printf("不合法的下法\n")Sleep(500)break} }
if( j <= y) check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
}
}
else { printf("不合法的下法\n")Sleep(500)}
}
if( check_turn == 21) //马的走法规范
{ if((x == check_x &&y == check_y))
{ temp = turntemp1 = turn1turn = 'O'turn1 = 'N'num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500)}
else if( (abs( x - check_x) == 2&&abs( y - check_y) == 8)&&
map[check_x][(y+check_y)/2] =='+')
{ check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)}
else if( (abs( x - check_x) == 4&&abs( y - check_y) == 4)&&
map[(x + check_x)/2][check_y] == '+' )
{ check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)}
else { printf("不合法的下法\n")Sleep(500)} }
if( check_turn == 22) //相的走法规范
{ if((x == check_x &&y == check_y))
{ temp = turntemp1 = turn1turn = 'O'turn1 = 'N'num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500)}
else if( x <= 12 &&(abs(y - check_y) == 8 &&abs(x - check_x) == 4))
{ if((x == 4 &&(y == 11 || y == 27))||(x == 8 &&( y == 3 || y == 19 || y == 35))
||(x == 12 &&(y == 11|| y ==27)))
{ if( map[(x+check_x)/2][(y+check_y)/2] == '+') check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("棋子卡住,不可执行")Sleep(500)} }
else {printf("不合法的下法\n")Sleep(500)}
}
else { printf("不合法的下法\n")Sleep(500)} }
if( check_turn == 23) //士的走法规范
{ if((x == check_x &&y == check_y))
{ temp = turntemp1 = turn1turn = 'O'turn1 = 'N'num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500) }
else if( abs(x - check_x)== 2 &&abs( y - check_y) == 4 &&((x==4 &&
(y == 15 || y == 23)) || ( x == 6 &&y == 19) || ( x == 8 &&( y == 15 || y == 23))))
{ check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)}
else { printf("不合法的下法\n")Sleep(500)} }
if( check_turn == 24) //将的走法规范
{ if((x == check_x &&y == check_y))
{ temp = turntemp1 = turn1turn = 'O'turn1 = 'N'num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500) }
else if( ((abs(x - check_x)== 2 &&abs( y - check_y) == 0 )|| (abs(x - check_x)== 0 &&abs( y - check_y) == 4)) &&x >= 4 &&x <= 8 &&y >= 15 &&y <= 23 )
{ check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)}
else {printf("不合法的下法\n")Sleep(500)} }
if( check_turn == 25) //炮的走法规范
{ if((x == check_x &&y == check_y))
{ temp = turn temp1 = turn1turn = 'O'turn1 = 'N'num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500) }
else if( y == check_y )
{ int check_pao = 0
if( x >check_x)
{ for(j = check_x + 2j<= x j = j+ 2)
{ if(map[j][y] == '+' ) else check_pao++}
if(check_pao == 1&&temp == '+') //直线行走但不可吃棋子 check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else if( check_pao == 2 &&temp != '+') //跳跃吃棋 check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
else { for(j = check_x - 2j>= xj = j - 2)
{ if(map[j][y] == '+' ) else { check_pao++} }
if(check_pao == 1&&temp== '+') //直线行走但不可吃棋子 check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else if( check_pao == 2 &&temp != '+') //跳跃吃棋 check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
}
else if( x == check_x )
{ int check_pao = 0
if( y >check_y)
{ for(j = check_y + 4j<= y j = j+4)
{ if(map[x][j] == '+' ) else check_pao++}
if(check_pao == 1&&temp == '+') //直线行走但不可吃棋 check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else if( check_pao == 2 &&temp != '+') //跳跃吃棋 check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
else { for(j = check_y - 4 j>= yj = j - 4)
{ if(map[x][j] == '+' ) else check_pao++}
if(check_pao ==1&&temp == '+') //直线行走但不可吃棋子 check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else if( check_pao == 2&&temp != '+') //跳跃吃棋 check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
}
else { printf("不合法的下法\n")Sleep(500)}
}
if( check_turn == 26) //卒的走法规范
{ if( x <= 12)
{ if((x == check_x &&y == check_y))
{ temp = turntemp1 = turn1turn = 'O'turn1 = 'N'num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500)}
else if( x == check_x + 2 &&y == check_y) check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
else{ if((x == check_x &&y == check_y))
{ temp = turntemp1 = turn1turn = 'O'turn1 = 'N'num--
printf("三思而后行\n")printf("还是你的回合")Sleep(500) }
else if((x - check_x == 0 &&abs(y-check_y) ==4) ||( x - check_x == 2
&&abs(y-check_y) == 0)) check_main2(&temp,&temp1,&turn,&turn1,&num,&if_return,map)
else { printf("不合法的下法\n")Sleep(500)} }
}
}
}
}
system("cls")
if( if_return) return
for(i = 0i <27i++)puts(map[i])
}
Sleep(5000)
}
int main( )
{ while(1)
{ xiangqi( )
printf("\n 重来,请按键.\n")
getch( )
}
return 0
}
中国象棋类:中国象棋程序Coony V1.5
ElephantBoard(象堡)和浅红象棋引擎,可能是免费象棋软件中水平最高的程序。
http://www.sky518.net/soft/9597.htm
象棋世家 V5 Build 91046
棋力超强饶有趣味的象棋软件,获得2005年世界象棋软件奥林匹克比赛银牌。独有的人机擂台赛功能,迅速提高您的棋艺,是象棋爱好者的良师益友。
当前版本在2005世界奥林匹克象棋软件大赛银牌版基础上加以改进,总体棋力又有相当的提高。
适用于各种高低档配置的电脑
念贺碧 界面采用Office2003风格,同时对窗口布局进行了优化,美观实用,同时不会占用大量系统资源。
支持国内外比赛的各种时限设置,如联众,中游,QQ,弈天上的包干加秒制、分段时限制、以及步时步层控制等方式。
设置向导一步步引导您进行界面和引擎的设置,软件设置变得非常轻松。
状态栏信息更丰富,控制更容易
向计算机挑战,通过打擂台的方式,自动升降关,您总是能挑战适合自己水平的电脑智能,同时,每前进一大关,对手的头像会发现变化,这使趣味性仔举大大增强,可以在轻松游戏中潜移默化地提高自己的棋力,软件真正成为了自己提高棋艺,学习象棋的好伙伴。一共分为五大关,每大关分三小关,连胜2局则升到高一关,连负2局则降到低一关,难度由低到高,平滑递进。
我们的目标是做最受欢迎的象棋软件,不管您是叱咤风云的当地象棋高手,还是喜欢与电脑对砍的象棋爱好者,还是希望提高棋艺的象棋爱好者,您都会发现象棋世家V5是您最佳的好工具,好帮手,好伙伴。
http://www.sky518.net/soft/11917.htm
中国象棋大战 V2.05
本软件可以进行中国象棋人机对弈和双人对弈,电脑分4个级别,可以保存对弈棋谱。界面友好, *** 作简单,无需安装,复制到计算机内即可运行。
http://www.sky518.net/soft/22619.htm
天狼中国象棋 V1.25
原名中国象棋2001。该软件可进行网络对战(局域网和Internet)、人机对战和同机对战,具有让子、悔棋、保存对局、续盘、摆局、和棋、认输、交换棋子、第三者旁观、聊天、声音、走棋轨迹显示、闪烁提示和GB-BIG5字体支持等功能!而且,还专门开辟了一个"研究室",里面有系统自带的近1000多个精典棋谱,包括:《橘中秘(上)》,《橘中秘(下)》,《残局攻杀大全》,《梅花泉》,《现代布局精要》,《中国象棋基本杀法》,《中国象棋基本战术》和《中局杀法》等九本秘籍;并且你可以"自己走试试",其定会对你棋艺的提高大有裨益!1.21版更正了1.20版在研究室研究棋谱时的错误。
http://www.sky518.net/soft/17661.htm
帝诺中国象棋段位赛 V3.0
本软件设计新颖、算法准确,是象棋爱好者不可多得的“宝物”。中国象棋是一种传统的竞赛项目。千百年的象棋竞技,演化出许多经典的对局。帝诺(中国)象棋段位赛,允许用户任意选择比赛对手和比赛类型,通过计算机科学评测的方式,供象棋学习者研究练习。
http://www.sky518.net/soft/22056.htm
丁丁中国象棋 V1.3
非常有趣味的人机对战象棋软件,无聊时与电脑下下棋也很不错。绿色软件(只有一个文件),下载后直接运行。棋力一般但棋风飘忽,如果你不小心便可能输给它。
http://www.sky518.net/soft/19491.htm
国际象棋类:
国际象棋大师第10版
对于绝对的狂热国际象棋爱好者来说,这款最新的《国际象棋大师》算不上一款完美的程序。然而,如果你正在寻找一款有过多特色和所有高级特性的优秀国际象棋程序,那么,《国际象棋大师第10版》将拍扰是你最佳的选择。
http://www.sky518.net/soft/12205.htm
国际象棋
http://www.sky518.net/soft/8211.htm
战斗国际象棋4000
Interplay 于92年推出的国际象棋游戏,和普通棋类游戏不同,这里所有的吃子动作都被配以华丽的CG片段。因此如果你喜欢下棋,一定要试试它。
http://www.sky518.net/soft/9545.htm
国际象棋大战 V1.06
国际象棋人机对弈软件。棋子制做精美,界面逼真,是学习国际象棋的好工具。
http://www.sky518.net/soft/22523.htm
卡斯帕罗夫国际象棋大师
采用世界顶尖智能引擎的国际象棋大师级游戏,特别聘请国际象棋世界冠军Garry Kasparov 卡斯帕罗夫为您指点棋艺,不论是初学还是职业高手,都能在这里找到你的乐趣
http://www.sky518.net/soft/2514.htm!
风云谷国际象棋大师 V2.1 免费版
是否想迅速提高自己的棋弈,您是否正在寻找一位适合自己的对手,您是否想与大师过过招,《风云谷国际象棋大师》能完全满足您的需求!他丰富的级别,根据您的水平让您可以轻易找到适合您的级别!他比同类软件的水平明显要高出很多,让您体验与高水平对手对弈的快感!如果您是一位正在学棋中的棋手,他可以成为您的绝佳陪练,如果您是一位国际象棋爱好者,他可以成为您的知心棋友!更重要的一点是,本软件完全免费。您还在犹豫什么,还不快把“大师”请回家?
国际象棋游戏(Mine) V0.99
是一个国际象棋游戏,可以两人对弈和人机对弈,水平不高,主要是希望能和大家多交流,共同进步!
http://www.sky518.net/soft/26258.htm
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)