中国象棋游戏代码_第1页
中国象棋游戏代码_第2页
中国象棋游戏代码_第3页
中国象棋游戏代码_第4页
中国象棋游戏代码_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中国象棋游戏代码#include#include#includechar x, y, z;int i, i1, j, j1, k, k1, ii, jj;int f(char X)if (X = 0)printf();else if (X = a | X = g)switch (X - a)case 6: printf( 兵);break;case 5:printf( 包);break;case 4:printf(xx);break;case 3:printf( 士);break;case 2:printf( 相); break;case 1: printf( 马);break;case 0:

2、printf( 车);if (X = A | X = G)switch (X - A)case 6: printf( 卒);break; case 5: printf( 炮);break; case 4: printf( 将);break;case 3: printf( 仕); break;case 2: printf( 象);26 / 26break;case 1:printf( 馬);break;case 0:printf( 車);char f2(char *str2, int q)int m, n, o, p;char x1, x2, y2, y1, z1;if (q = 1)print

3、f(n 轮到红子动 !n);elseprintf(n 轮到黑子动 !n);for (;)if (q = 1)printf(n 攻(红)方:车(a)马(b)n);elseprintf(n 黑(守)方:将(E)n);lm1:printf( 请选择棋子代号 :);scanf(%c, &x);scanf(%c, &x);if (q = 1 & x != a & x != b)printf(请按要求输入!n);goto Im1;if (q = 0 & x != E)printf(请按要求输入!n);goto lm1;printf( 欲换棋子输入 0 0)请选择该子所在位置 (行与列 ):);scanf(

4、%d%d, &i, &j);if (i = 0 & j = 0)goto Im1;for (;)if (i 3 | j 3)printf( 请认真输入,位置应在棋盘内 !n 再次输入 :);scanf(%d%d, &i, &j);eIsebreak;i-;j-;if (*(*(str2 + j) + i) = x)break;eIseprintf( 该位置没有该棋子!请认真输入! n);printf( 请输入要下的位置 (移 动后位置 ):);IabeI1:scanf(%d%d, &i1, &j1);for (;)if (i1 3 | j1 3)printf( 请认真输入,位置应在棋盘 内 !

5、n 再次输入 :);scanf(%d%d, &i1, &j1);elsebreak;i1-;j1-;y = *(*(str2 + j1) + i1);if (q = 1 & (y = a | y = b)printf( 移动后位置有己方棋子 n 重新输入下 的位置:);goto label1;else if (i1 = i & j1 = j)printf( 原地未动 n 重新输入下的位置 :);goto label1;else if (x = a)if (i1 != i & j1 != j)printf( 车应直走 !n 重新输入 下的位置 :);goto label1;else if (i1

6、 = i)if (j1 j)for (k = j + 1; k j1; k+)if (*(*(str2 + k) + i) != 0)printf(中间有子挡 n 重新输 入下的位置 :);goto label1;else for (k = j1 + 1; k i)for (k = i + 1; k i1; k+)if (*(*(str2 + j) + k) != 0)printf(中间有子挡 n 重新输 入下的位置 :);goto label1;else for (k = i1 + 1; k i; k+)if (*(*(str2 + j) + k) != 0)printf(中间有子挡 n 重

7、 新输入下的位置 :);goto label1;if (i1 != ii & j1 != jj)if (ii = 0)if (jj = 0 | jj = 2)& (*(*(str2 + 1) + 2) != b| (*(*str2 + 1) + 2) = b & *(*(str2 + 1) + 1) != 0)printf( 未将军 !n);goto lm1;if (jj = 1& (*(*(str2 + 0) + 2) != b| (*(*(str2 + 0) + 2) = b & *(*(str2) + 1) != 0)& (*(*(str2 + 2) + 2) != b| (*(*(st

8、r2 + 2) + 2) = b & *(*(str2 + 2) + 1) != 0)printf( 未将军 !n);goto lm1;if (ii = 1 & jj = 0& (*(*(str2 + 2) != b| (*(*(str2 + 2) = b & *(*(str2 + 1) != 0)& (*(*(str2 + 2) + 2) != b| (*(*(str2 + 2) + 2) = b & *(*(str2 + 1) + 2) != 0)printf( 未将军 !n);goto lm1;if (ii = 1 & jj = 2& (*str2 != b | (*str2 = b &

9、 *(*(str2 + 1) != 0)& (*(*(str2) + 2) != b | (*(*(str2) + 2) = b & *(*(str2 + 1) + 2) != 0)printf( 未将军 !n);goto lm1;if (ii = 2)if (jj = 0 | jj = 2)& (*(*(str2 + 1) != b| (*(*str2 + 1) = b & *(*(str2 + 1) + 1) != 0)printf( 未将军 !n);goto lm1;if (jj = 1& (*(*(str2 + 0) != b| (*(*(str2 + 0) = b & *(*(str

10、2) + 1) != 0)& (*(*(str2 + 2) != b| (*(*(str2 + 2) = b & *(*(str2 + 2) + 1) != 0)printf( 未将军 !n);goto lm1;if (x = b)if (i1 = i + 1 | i1 = i - 1)if (j1 = j + 2)if (*(*(str2 + j + 1) + i) !=0)printf( 马撇腿 !n 重新输入下的位置 :);goto label1;else if (i1 != ii + 1 | i1 != ii - 1)& (j1 != jj + 2 | j1 != jj - 2) &

11、(j1 != jj + 1| j1 != jj - 1)& (i1 != ii + 2| i1 !=ii - 2)& y != E)printf( 未将军 n);goto lm1;goto la1;else if (j1 = j - 2)if (*(*(str2 + j - 1) + i) != 0)printf(马撇腿!n 重新输入下的 位置:);goto label1;else if (i1 != ii + 1 | i1 != ii - 1)& (j1 != jj + 2 | j1 != jj - 2)& (j1 != jj + 1 | j1 != jj - 1)& (i1 != ii +

12、 2 | i1 != ii - 2) & y != E)printf(未将军 n);goto lm1;goto la1;else printf(马应走日n重新输入下的位置:);goto label1;else if (i1 = i + 2 | i1 = i - 2)if (j1 = j + 1 | j1 = j - 1)if (*(*(str2 + j) + (i1 + i) / 2) != 0)printf(马撇腿!n 重新输入下的位置:);goto label1;else if (i1 != ii + 1 | i1 != ii - 1)& (j1 != jj + 2 | j1 != jj

13、- 2)& (j1 != jj + 1 | j1 != jj - 1)& (i1 != ii + 2 | i1 != ii - 2) & y != E)printf( 未将军 n);goto lm1;goto la1;else printf(马应走日n重新输入下的位置:);goto label1;else printf(马应走日n重新输入下的位置);goto label1;if (x = E)ii = i1;jj = j1;if (i1 = i + 1 | i1 = i - 1) & j1 = j)goto la1;else if (i1 = i & (j1 = j + 1 | j1 = j

14、- 1)goto la1;else printf( 帅一次只(直)走一格 n 重新输入下的位置 :);goto label1;la1:*(*(str2 + j1) + i1) = x;*(*(str2 + j) + i) = 0;printf(n);for (m = 0; m 3; m+)for (n = 0; n = x2 & x y1 | x x1)printf( 输入不合要求 !n);goto lm;printf( 欲换棋子输入 0 0)请选择该子所在位置 (行与列 ):);scanf(%d%d, &i, &j);if (i = 0 & j = 0)goto lm;for (;)if (

15、i 10 | j 9)printf( 请认真输入,位置应在棋盘 内 !n 再次输入 :);scanf(%d%d, &i, &j);elsebreak;i-;j-;if (*(*(str + j) + i) = x)break;elseprintf( 该位置没有该棋子!请认真输入! n);printf( 请输入要下的位置 (移 动后位置 ):);label:scanf(%d%d, &i1, &j1);for (;)if (i1 10 | j1 9)printf( 请认真输入,位置应在棋 盘内!n再次输入:);scanf(%d%d, &i1, &j1);elsebreak;i1-;j1-;y =

16、*(*(str + j1) + i1);if (y = x1 & y j)for (k = j + 1; k j1; k+)if (*(*(str + k) + i) != 0)printf(中间有子挡 n 重新输 入下的位置 :);goto label;else for (k = j1 + 1; k i)for (k = i + 1; k i1; k+)if (*(*(str + j) + k) != 0)printf(中间有子挡 n 重新输 入下的位置 :);goto label;else for (k = i1 + 1; k i; k+)if (*(*(str + j) + k) !=

17、0)printf(中间有子挡 n 重 新输入下的位置 :);goto label;/*车的情况*/* 马的情况*/ if (x = b | x = B)if (i1 = i + 1 | i1 = i - 1)if (j1 = j + 2)if (*(*(str + j + 1) + i) != 0)if (q = 1)printf(马撇腿!n);elseprintf(馬撇腿!n重新输入下的位置:);goto label;elsegoto la;else if (j1 = j - 2)if (*(*(str + j - 1) + i) != 0)if (q = 1)printf(马撇腿!n);e

18、lseprintf(馬撇腿!n重新输入下的位置:);goto label;elsegoto la;else if (q = 1)printf(马应走日n);elseprintf(馬应走日n重新输入下的位置);goto label;else if (i1 = i + 2 | i1 = i - 2)if (j1 = j + 1 | j1 = j - 1)if (*(*(str + j) + (i1 + i) / 2) != 0)if (q = 1)printf( 马撇腿 !n);elseprintf(馬撇腿!n重新输入下的位置:);goto label;elsegoto la;else if (q

19、 = 1)printf(马应走日n);elseprintf(馬应走日n重新输入下的位置:);goto label;else if (q = 1)printf(马应走日n);elseprintf(馬应走日n重新输入下的位置:);goto label;/* 马的情况 */ /* 相的情况 */ if (x = c | x = C)if (i1 = i + 2 | i1 = i - 2) & (j1 = j + 2 | j1 = j - 2)if (*(*(str + (j + j1) / 2) + (i + i1) / 2) != 0)if (q = 1)printf( 相压田 !n);elsep

20、rintf( 象压田 !n 重新输入下的位置 :);goto label;elsegoto la;else if (q = 1)printf(相应飞田n);elseprintf(象应飞田n重新输入下的位置:);goto label;/* 相的情况 */ /* 士的情况 */ if (x = d | x = D)if (q = 1 & (j1 5 | i1 o3)printf( 士不可出九宫格 n 重新输入下的位置 :);goto label;else if (q = 0 & (j1 5 | i1 o3)printf( 仕不可出九宫 格n重新输入下的位置:);goto label;else if

21、 (i1 = i + 1 | i1 = i - 1) & (j1 = j + 1 | j1 = j - 1)goto la;else if (q = 1)printf( 士应斜着走 n);elseprintf( 仕 应斜着走 n 重新输入下的位置 :);goto label;/* 士的情况 */ /* 帅的情况 */if (x = e | x = E)for (k = i1 - 1; k = 0; k-)if (*(*(str + j1) + k) != 0)if (q = 1)z1 = E;elsez1 = e;if (*(*(str + j1) + k) = z1)printf(将”帅照面

22、n 重新输入下的位置:);goto label;break;if (q = 1 & (j1 5 | i1 o3)printf( 帅不可出九宫格 n 重新输入 下的位置 :);goto label;else if (q = 0 & (j1 5 | i1 o3)printf( 将不可出九宫 格n重新输入下的位置:);goto label;else if (i1 = i + 1 | i1 = i - 1) & j1 = j)goto la;else if (i1 = i & (j1 = j + 1 | j1 = j - 1)goto la;else if (q = 1)printf(帅一次只(直)走

23、一格n);elseprintf(将一次只(直)走一格n重新输入下的位置:);goto label;/* 帅的情况 */ /* 包的情况 */ if (x = f | x = F)if (i1 != i & j1 != j)if (q = 1)printf( 包应直走 !n);elseprintf( 炮应直走 !n 重新输入下的位置 :);goto label;else if (i1 = i)if (j1 j)for (p = 0, k = j + 1; k 1)printf(隔子太多n重新输入下的位置:);goto label;elsegoto la;else for (p = 0, k =

24、j1 + 1; k 1)printf( 隔子太多 n 重新输入下的位置 :);goto label;elsegoto la;else if (i1 i)for (p = 0, k = i + 1; k 1)printf( 隔子太多 n 重新输入下的位置 :);goto label;elsegoto la;else for (p = 0, k = i1 + 1; k 1)printf( 隔子太多 n 重新输入下的位置 :);goto label;elsegoto la;/* 包的情况 */ /* 兵的情况 */if (x = g)if (i1 i)printf(兵不能后 退 n 重新输入下的位置

25、 :);goto label;if (i1 = i & i1 5)printf(兵没过河不能横着走n重新输入下的 位置:);goto label;else if (i1 = i & (j1 = j + 1 | j1 = j - 1)goto la;else if (j1 = j & i1 = i - 1)goto la;else printf( 兵一次只走一格 n 重新输入下的位置 :);goto label;/*兵的情况*/ /*卒的情况*/ if (x = G)if (i1 i)printf(卒不能后退n重新输 入下的位置 :);goto label;if (i1 = i & i1 5)p

26、rintf(卒没过河不能横着走n重新输入下的 位置:);goto label;else if (i1 = i & (j1 = j + 1 | j1 = j - 1)goto la;else if (j1 = j & i1 = i + 1)goto la;else printf( 卒一次只走一格 n 重新输入下的位置 :);goto label;/* 卒的情况 */ la:*(*(str + j1) + i1) = x;*(*(str + j) + i) = 0;printf(n);for (m = 0; m 10; m+)for (n = 0; n 9; n+)o = *(*(str + n)

27、 + m); f(o);printf(nn);int main()int i0, j0, k0, m, n, m1, n1, p1, p3, ww;char *str, *str2;char x0, str110;str = (char *)malloc(1600);for (i0 = 0; i0 11; i0+)*(str + i0) = (char *)malloc(40);str2 = (char *)malloc(144);for (i0 = 0; i0 4; i0+)*(str2 + i0) = (char *)malloc(12);ww1:printf(n 欢迎游戏! n 中国象棋

28、 nn);printf( 请选择游戏模式 :n1.双人大战!n2.九宫象棋!n请输入编号:);scanf(%d, &ww);if (ww != 1 & ww != 2)printf( 请按要求输入 !n);goto ww1;if (ww = 2)printf(n 游戏规则 :n 攻(红)方先动棋子不可出九宫格,在步步将军的情况下最终吃将获胜!n守(黑)方一直逃,直到对方无法将死便获胜!n攻(红)方只有車,馬二子,走法同象棋 nn);lma1:printf(n);for (i0 = 0; i0 3; i0+)for (j0 = 0; j0 3; j0+)*(*(str2 + j0) + i0)

29、= 0;*str2 = a;*(str2 + 2) = b;*(*(str2 + 1) + 1) = E;*(*(str2) + 2) = b;*(*(str2 + 2) + 2) = a;for (i0 = 0; i0 3; i0+)for (j0 = 0; j0 3; j0+)x0 = *(*(str2 + j0) + i0); f(x0);printf(nn);ii = 1, jj = 1;else printf(n 游戏简介 :本游戏与现实中象棋规则相同 !为方便游戏运行,棋子将用字母替代 nn红方:车(a)马(b)相(c) 士 (d)帅(e)包(f)兵(g)n黑方:八、丿J 車(A)

30、馬(B)象(C)仕 (D)将(E)炮 (F)卒(G)nn);lma:printf(n);for (i0 = 0; i0 10; i0+)for (j0 = 0; j0 9; j0+)*(*(str + j0) + i0) = 0;*str = A;*(str + 1) =B;*(str + 2) =C;*(str + 3) =D;*(str + 4) =E;*(*(str + 1) + 2) = F; *(*(str) + 3) = G;*(*(str + 2) + 3) = G; *(*(str + 4) + 3) = G; *(*(str) + 6) = g;*(*(str + 2) +

31、6) = g;*(*(str + 4) + 6) = g;*(*(str + 1) + 7) = f;*(*(str) + 9) = a;*(*(str + 1) + 9) = b;*(*(str + 2) + 9) = c;*(*(str + 3) + 9) = d;*(*(str + 4) + 9) = e;for (i0 = 0; i0 10; i0+)for (j0 = 5; j0 9; j0+)*(*(str + j0) + i0) = *(*(str + 8 - j0) + i0);for (i0 = 0; i0 10; i0+)for (j0 = 0; j0 9; j0+)x0

32、= *(*(str + j0) + i0);f(x0);printf(nn);printf(Ready Go?(输入 “ start开始):);scanf(%s, str1);for (;)if (str10 = s & str11 = t & str12 = a & str13 = r & str14 = t& str15 = 0)break;elseprintf( 请正确输入 !Not ready?)n 再次输入 :);scanf(%s, str1);printf(n 红子先动 !nn 是否开启悔棋功能 n征求双方意见,同意输入 1,反对输入 0(将关闭悔棋功能 )n);l11:print

33、f( 红方意见 :);scanf(%d, &m1);if (m1 != 0 & m1 != 1)printf( 请按要求输入 !n);goto l11;l12:printf( 黑方意见 :);scanf(%d, &n1);if (n1 != 0 & n1 != 1)printf( 请按要求输入 !n);goto l12;p3 = m1 * n1;for (m = 1; m+)l3:m = m % 2;if (ww = 1)f1(str, m);elsef2(str2, m);if (p3 != 0)printf( 是否悔棋 n 征求双方意见,同意输入 1,反对输入 0,关 闭悔棋功能输入 2n);l1:printf( 红方意见 :);scanf(%d, &m1);if (m1 != 0 & m1 != 1 &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论