初学者编了个象棋程序,工程完成度百分之九十五,跟大家分享下,希望下一步能做个图形界面,欢迎交流
来源:互联网 发布:疯狂的美工装修助 编辑:程序博客网 时间:2024/05/02 00:50
#include<stdio.h>#include<math.h>#include <stdlib.h>#define 车 a#define 马 b#define 相 c#define 士 d#define 帅 e#define 炮 f#define 兵 g#define 車 A#define 馬 B#define 象 C#define 仕 D#define 将 E#define 泡 F#define 卒 Gint i,j;char a,b,c,d,e,f,g,A,B,C,D,E,F,G;int m,n,x,y,flag,ret;int step=0;int che();int ma();int hongxiang();int heixiang();int hongshi();int heishi();int shuai();int jiang();int bing();int zu();int pao();char qipan[10][9]={{'A','B','C','D','E','D','C','B','A'},{'+','+','+','+','+','+','+','+','+'},{'+','F','+','+','+','+','+','F','+'},{'G','+','G','+','G','+','G','+','G'},{'+','+','+','+','+','+','+','+','+'},{'+','+','+','+','+','+','+','+','+'},{'g','+','g','+','g','+','g','+','g'},{'+','f','+','+','+','+','+','f','+'},{'+','+','+','+','+','+','+','+','+'},{'a','b','c','d','e','d','c','b','a'}};char** qipan_init(){for(i=0;i<10;i++){printf("%4d",i);for(j=0;j<9;j++)printf("%4c",qipan[i][j]);printf("\n\n");}printf("%4c 0 1 2 3 4 5 6 7 8\n",1);return (char**)qipan;}void print(int M,int N,int X,int Y){qipan[10][9];qipan[X][Y]=qipan[M][N];qipan[M][N]='+';for(i=0;i<10;i++){printf("%4d",i);for(j=0;j<9;j++)printf("%4c",qipan[i][j]);printf("\n\n");}printf("%4c 0 1 2 3 4 5 6 7 8\n",1);}void duilian(){int w;for(i=0;i<10;i++)for(j=0;j<9;j++){if(qipan[i][j]=='E')for(w=1;w<10;w++){if(qipan[i+w][j]!='+'){if(qipan[i+w][j]=='e'){if(step%2==0){printf("老将对脸啦!黑方胜利!!\n");exit(0);}else if(step%2==1){printf("老将对脸啦!红方胜利!!\n");exit(0);}}elsebreak;}}}}int main(){ qipan_init();for(;;){do{printf("请红方走子:");scanf("%d%d%d%d",&m,&n,&x,&y);if((m<10)&&(m>=0)&&(n<9)&&(n>=0)&&(x<10)&&(x>=0)&&(y<9)&&(y>=0)){flag=0;switch(qipan[m][n]){case'a': che(m,n,x,y);flag=che(m,n,x,y);break;case'b':ma(m,n,x,y);flag=ma(m,n,x,y);break;case'c':hongxiang(m,n,x,y);flag=hongxiang(m,n,x,y);break;case'd':hongshi(m,n,x,y);flag=hongshi(m,n,x,y);break;case'e':shuai(m,n,x,y);flag=shuai(m,n,x,y);break;case'f':pao(m,n,x,y);flag=pao(m,n,x,y);break;case'g':bing(m,n,x,y);flag=bing(m,n,x,y);break;;default:flag=0;printf("走错子啦!\n");}}if(qipan[x][y]!='a'&&qipan[x][y]!='b'&&qipan[x][y]!='c'&&qipan[x][y]!='d'&&qipan[x][y]!='e'&&qipan[x][y]!='f'&&qipan[x][y]!='g'){if(flag==1){if(qipan[x][y]=='E'){printf("恭喜红方获得胜利\n游戏结束\n");print(m,n,x,y);exit(0);}print(m,n,x,y);duilian();step++;}}else printf("走错啦,重新走\n");}while (step%2==0);do{printf("请黑方走子:");scanf("%d%d%d%d",&m,&n,&x,&y);if((m<10)&&(m>=0)&&(n<9)&&(n>=0)&&(x<10)&&(x>=0)&&(y<9)&&(y>=0)){switch(qipan[m][n]){case'A':che(m,n,x,y);flag=che(m,n,x,y);break;case'B':ma(m,n,x,y);flag=ma(m,n,x,y);break;case'C':heixiang(m,n,x,y);flag=heixiang(m,n,x,y);break;case'D':heishi(m,n,x,y);flag=heishi(m,n,x,y);break;case'E':jiang(m,n,x,y);flag=jiang(m,n,x,y);break;case'F':pao(m,n,x,y);flag=pao(m,n,x,y);break;case'G':zu(m,n,x,y);flag=zu(m,n,x,y);break;default:flag=0;printf("走错子啦!\n");}if(qipan[x][y]!='A'&&qipan[x][y]!='B'&&qipan[x][y]!='C'&&qipan[x][y]!='D'&&qipan[x][y]!='E'&&qipan[x][y]!='F'&&qipan[x][y]!='G'){if(flag==1){if(qipan[x][y]=='e'){printf("恭喜黑方获得胜利\n游戏结束\n");print(m,n,x,y);exit(0);}print(m,n,x,y);duilian();step++;}}}elseprintf("走错啦!重新走\n");}while(step%2==1);}} int che(int M,int N,int X,int Y){int u,v;if(M==X){if(N>Y)ret=0;else if(N<Y)ret=1;for(v=1;v<abs(N-Y);v++){switch(ret){case 0:if(qipan[M][Y+v]!='+')return 0;break;case 1:if(qipan[M][Y-v]!='+')return 0;break;}}}else if(N==Y){if(M>X)ret=0;else if(M<X)ret=1;for(u=1;u<abs(M-X);u++){switch(ret){case 0:if(qipan[X+u][N]!='+')return 0;break;case 1:if(qipan[X-u][N]!='+')return 0;break;}}}else if(M!=X&&N!=Y)return 0;return 1;}int ma(int M,int N,int X,int Y){{if(X>M&&Y>N)ret=0;else if(X>M&&Y<N)ret=1;else if(X<M&&Y>N)ret=2;else if(X<M&&Y<N)ret=3;}{if(abs(X-M)==1&&abs(Y-N)==2){switch(ret){case 0:case 2:if(qipan[M][N+1]!='+')return 0;break;case 1:case 3:if(qipan[M][N-1]!='+')return 0;break;}}else if(abs(X-M)==2&&abs(Y-N)==1){switch(ret){case 0:case 1:if(qipan[M+1][N]!='+')return 0;break;case 2:case 3:if(qipan[M-1][N]!='+')return 0;break;}}elsereturn 0;}return 1;}int hongxiang(int M,int N,int X,int Y){{if(X>M&&Y>N)ret=0;else if(X>M&&Y<N)ret=1;else if(X<M&&Y>N)ret=2;else if(X<M&&Y<N)ret=3;}if(abs(X-M)==2&&abs(Y-N)==2){if(X>4){switch(ret){case 0:if(qipan[M+1][N+1]!='+')return 0;break;case 1:if(qipan[M+1][N-1]!='+')return 0;break;case 2:if(qipan[M-1][N+1]!='+')return 0;break;case 3:if(qipan[M-1][N-1]!='+')return 0;break;}}elsereturn 0;}else return 0;return 1;}int heixiang(int M,int N,int X,int Y){{if(X>M&&Y>N)ret=0;else if(X>M&&Y<N)ret=1;else if(X<M&&Y>N)ret=2;else if(X<M&&Y<N)ret=3;}if(abs(X-M)==2&&abs(Y-N)==2){if(X<5){switch(ret){case 0:if(qipan[M+1][N+1]!='+')return 0;break;case 1:if(qipan[M+1][N-1]!='+')return 0;break;case 2:if(qipan[M-1][N+1]!='+')return 0;break;case 3:if(qipan[M-1][N-1]!='+')return 0;break;}}elsereturn 0;}else return 0;return 1;}int hongshi(int M,int N,int X,int Y){if(X>6&&Y<6&&Y>2){if(abs(X-M)==1&&abs(Y-N)==1)return 1;}return 0;}int heishi(int M,int N,int X,int Y){if(X<3&&Y<6&&Y>2){if(abs(X-M)==1&&abs(Y-N)==1)return 1;}return 0;}int shuai(int M,int N,int X,int Y){if(X>6&&Y<6&&Y>2){if(abs(X-M)==1||abs(Y-N)==1){if(abs(X-M)!=abs(Y-N))return 1;}}return 0;}int jiang(int M,int N,int X,int Y){if(X<3&&Y<6&&Y>2){if(abs(X-M)==1||abs(Y-N)==1){if(abs(X-M)!=abs(Y-N))return 1;}}return 0;}int bing(int M,int N,int X,int Y){if(M>4){if(X==M-1&&N==Y)return 1;else return 0;}if(M<5){if(X==M-1&&N==Y)return 1;else if(X==M&&N==Y-1)return 1;else if(X==M&&N==Y+1)return 1;elsereturn 0;}}int zu(int M,int N,int X,int Y){if(M<5){if(X==M+1&&N==Y)return 1;elsereturn 0;}if(M>4){if(X==M+1&&N==Y)return 1;else if(X==M&&N==Y-1)return 1;else if(X==M&&N==Y+1)return 1;elsereturn 0;}}int pao(int M,int N,int X,int Y){if(qipan[X][Y]=='+')che(M,N,X,Y);else if(qipan[X][Y]!='+'){int z;int u,v;if(M==X){if(N>Y){z=0;for(v=1;v<abs(N-Y);v++){if(qipan[M][Y+v]!='+')z++;}if(z==1)return 1;elsereturn 0;}if(N<Y){z=0;for(v=1;v<abs(N-Y);v++){if(qipan[M][Y-v]!='+')z++;}if(z==1)return 1;elsereturn 0;}}else if(Y==N){if(M>X){z=0;for(u=1;u<abs(M-X);u++){if(qipan[X+u][N]!='+')z++;}if(z==1)return 1;elsereturn 0;}if(M<X){z=0;for(u=1;u<abs(M-X);u++){if(qipan[X-u][N]!='+')z++;}if(z==1)return 1;elsereturn 0;}}elsereturn 0;}}
1 0
- 初学者编了个象棋程序,工程完成度百分之九十五,跟大家分享下,希望下一步能做个图形界面,欢迎交流
- 一个自己编写的象棋程序,可实现走棋谱(如炮二平五),工程完成度%96,跟大家分享一下,下一步要做残局,欢迎交流
- 写了个MySQL数据备份小工具,放出来跟大家分享一下,欢迎拍砖。
- 刚开始学习android,做了个“二十一点”的小游戏,跟大家分享下!
- 初学cocos2dx 写了个2048 跟大家一起分享下
- 开始记录我Web前端自学之路了,希望与大家分享交流
- 开通了博客,希望与大家多交流交流
- 新人报道 欢迎大家分享交流指教
- 第一次来到csdn博客,希望以后跟大家多多交流!!
- 把我给eclipse3.5安装J2ME插件的过程写出来,大家分享下,可能菜了点,希望对跟我一样的小菜有点帮助
- 我来了。希望大家欢迎
- 流量控制技术[我也是个网络编程的初学者,大家相互交流下!]
- 新建了几个.Net群 希望大家踊跃交流
- 开通CSDN博客了,希望大家一起交流
- 初入csdn,以后多多跟大家分享交流技术!
- 分享下一步步学习java的内容,希望对初学者有帮助,1.java的认识
- 刚学51单片机 写了个小程序 分享一下(初学者能力有限,望大家多多指导,懂得布置个作业给我也行,呵呵)
- 最近上传了一个自编的统计程序,欢迎大家使用和反馈
- 计算几何与图形学有关的几种常用算法(二)
- spring mvc 图形验证码
- hdu 5533(几何水)
- (设计模式)简单工厂模式之通过配置文件动态创建实现类
- ReactionCocoa 登陆界面
- 初学者编了个象棋程序,工程完成度百分之九十五,跟大家分享下,希望下一步能做个图形界面,欢迎交流
- HDU 3068 最长回文 Manacher
- 解决eclipse快捷键冲突问题和修改eclipse快捷键
- 从”JAVA“而终 12:java集合框架API讲解
- hadoop技术原理
- Android入门---ImageView(图像视图)
- 分治法之合并排序(C实现)
- log4j.properties文件的配置不起作用
- (java)3sum