C语言小程序,三子棋

来源:互联网 发布:数组在内存中如何存储 编辑:程序博客网 时间:2024/06/06 09:02
#include<stdio.h>#include <math.h>void printPan(char arr[][3]){int i=0;printf(" ——————\n");printf("| %c | %c | %c |\n",arr[0][0],arr[0][1],arr[0][2]);printf("  —————\n");printf("| %c | %c | %c |\n",arr[1][0],arr[1][1],arr[1][2]);printf("  —————\n");printf("| %c | %c | %c |\n",arr[2][0],arr[2][1],arr[2][2]);printf(" ——————\n");}int userPut(char arr[][3],int x,int y){if(arr[x-1][y-1]==' '){arr[x-1][y-1]='X';return 0;}//printf("该位置已有棋子,请重新输入!\n");return 1;}void pcPut(char arr[][3]){int x=rand()%3;int y=rand()%3;while(arr[x][y]!=' '){x=rand()%3;y=rand()%3;}arr[x][y]='0';printPan(arr);}int ifVictor(char arr[][3]){int i=0,j=0;for(i=0;i<3;i++){if((arr[i][0]=='X')){if(((arr[i][0]==arr[i][1])&&(arr[i][0]==arr[i][2]))){  //行相等 printf("恭喜您胜利了!\n");return 1; }}if(arr[0][i]=='X'){if((arr[0][i]==arr[1][i])&&(arr[0][i]==arr[2][i])){//列相等 printf("恭喜您胜利了!\n");return 1; }}if(arr[i][0]=='0'){if((arr[i][0]==arr[i][1])&&(arr[i][0]==arr[i][2])){//行相等 printf("很遗憾,你输了!\n");return -1; }}if(arr[0][i]=='0'){if((arr[0][i]==arr[1][i])&&(arr[0][i]==arr[2][i])){//列相等 printf("很遗憾,你输了!\n");return -1; }}}if((arr[0][0]=='X'||arr[0][0]=='0')&&((arr[0][0]==arr[1][1])&&(arr[0][0]==arr[2][2]))){if(arr[0][0]=='X'){printf("恭喜您胜利了!\n");return 1;}if(arr[0][0]=='0'){printf("很遗憾,你输了!\n");return -1; }}if((arr[0][2]=='X'||arr[0][2]=='0')&&((arr[0][2]==arr[1][1])&&(arr[0][2]==arr[2][0]))){if(arr[0][2]=='X'){printf("恭喜您胜利了!\n");return 1;}if(arr[0][2]=='0'){printf("很遗憾,你输了!\n");return -1; }}return 0; }int is_kon(char arr[][3]){int i=0,j=0,n=0;for(i=0;i<3;i++){for(j=0;j<3;j++){if(arr[i][j]==' '){return 0;}}}return 1;}void clr_arr(char arr[][3]){int i=0,j=0;for(i=0;i<3;i++){for(j=0;j<3;j++){arr[i][j]=' ';}}}int main(){char arr[3][3]={' ',' ',' ',' ',' ',' ',' ',' ',' '};int x=0,y=0;system("color fd"); printf("三子棋游戏\n游戏说明:连续三个一样的即胜利!输入坐标,坐标用空格隔开,然后回车;例如:  2 2\n按回车开始游戏\n");getchar();while(1){clr_arr(arr);while(1){system("cls");printPan(arr);printf("请输入位置:"); scanf("%d %d",&x,&y);if(userPut(arr,x,y)){continue;}if(ifVictor(arr)!=0){system("pause"); break;}if(is_kon(arr)==1){printf("平局!\n"); system("pause"); break;}pcPut(arr);if(ifVictor(arr)!=0){system("pause"); break;}}printf("还要继续吗?(按回车继续,'#'结束)\n");fflush(stdin);if(getchar()=='#'){break;} }printf("游戏结束!\n");system("pause"); return 0;}





原创粉丝点击