请帮忙看看我的三子棋游戏怎么回事?

    xiaoxiao2025-03-22  20

    我的三子棋游戏,怎么达不到显示结果的效果?谢谢了啊!

    #include <stdio.h> #include <stdlib.h> #include <string.h>

    int win_or(char a[3][3]) { int k=1; int e=0; for (int i=0;i<3;i++) { if (a[i][0]a[i][1]&&a[i][0]a[i][2]) { if (a[i][0]’*’) { e=1; break; } if (a[i][0]’#’) { e=2; break; } } }//case1判断行相等;

    for (int j=0;j<3;j++) { if (a[0][j]==a[1][j]&&a[0][j]==a[2][j]) { if (a[0][j]=='*') { e=1; break; } if (a[0][j]=='#') { e=2; break; } } }//case2判断列相等; if (a[0][0]==a[1][1]&&a[0][0]==a[2][2]) { if (a[0][0]=='*') { e=1; } if (a[0][0]=='#') { e=2; } } //case3判断斜行1相等; if (a[0][2]==a[1][1]&&a[0][2]==a[2][0]) { if (a[0][2]=='*') { e=1; } if (a[0][2]=='#') { e=2; } } //case4判断斜行2相等; if (e==0) { for(int i=0;i<3;i++) { for (int j=0;j<3;j++) { if (a[i][j]=='0') { e=-1; printf("未完,继续!\n"); } } } }//case5 未完待续; if (e==0) { printf("平局!\n按回车结束"); } if (e==1) { printf("player1胜利\n按回车结束"); } if (e==2) { printf("player2胜利\n按回车结束"); }

    }

    int main(int argc,char * argv[]) { char a[3][3]; int m,n,k=1; memset(a,‘0’,sizeof(a));//给数组a赋初值为0,避免出现printf时错误; for (int i=0;i<3;i++) { for(int j=0;j<3;j++) { printf("%c",a[i][j]); //输出3*3棋盘初始状态; } printf("\n"); }

    while(1) { printf("player1:*,player2:#\n请player%d落子(输入落子的二维坐标):",k); scanf("%d%d",&m,&n);//输入落子的位置,即二维数组下标; m--;n--; if (a[m][n]!='0') { printf("此处不能落子,请重新输入...\n");//如果输入的数组值不为0,说明不在棋盘初始化状态下或者已经输入了棋子,要求重新输入; continue; } else { if (k==1) { a[m][n]='*';//如果为玩家1,赋值为*; k++; } else { a[m][n]='#'; //如果为玩家2,赋值为#; k--; } }; for (int i=0;i<3;i++) { for(int j=0;j<3;j++) { printf("%c",a[i][j]); //输出3*3棋盘初始状态; } printf("\n"); } int win_or(char a[3][3]); } //循环过程即为对弈的过程;

    return 0; }

    最新回复(0)