您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > C语言五子棋游戏源代码
#includestdio.h#defineN10voidwelcome();voidinitqipan();voidshowqi(inti);voidsave(intp);voidpanduan(intp);voidheqi();voidover();intzouqihang();intzouqilie();/******************结构体*****************/structzuobiao{intx[N*N];inty[N*N];}weizhi[N*N];/******************主函数*****************/voidmain(){intp=0;welcome();initqipan();for(p=1;p=N*N;p++){weizhi[p].x[p]=zouqihang();weizhi[p].y[p]=zouqilie();save(p);showqi(p);panduan(p);}if(p==N*N)heqi();over();}/******************建立棋盘*****************/voidinitqipan(){inti,j;for(i=0;iN;i++){printf(%d,i);printf();}printf(\n);for(i=1;iN;i++){for(j=0;jN;j++){if(j==0)printf(%d,i);elseprintf(·);}printf(\n);}}/******************显示棋子*****************/voidshowqi(intp){inti,j,k,m;inta[N*N],b[N*N];FILE*fp;fp=fopen(wuzi_list,rb);for(i=1;i=N*N;i++){fread(&weizhi[i],sizeof(structzuobiao),1,fp);a[i]=weizhi[i].x[i];b[i]=weizhi[i].y[i];}for(m=1;mp;m++){while(weizhi[p].x[p]==a[m]&&weizhi[p].y[p]==b[m]){printf(error!\n);weizhi[p].x[p]=zouqihang();weizhi[p].y[p]=zouqilie();m=1;}}for(i=0;iN;i++){printf(%d,i);printf();}printf(\n);for(i=1;iN;i++){for(j=1;jN;j++){if(j==1)printf(%d,i);for(k=1;k=p;k++){if(i==weizhi[k].x[k]&&j==weizhi[k].y[k]){if(k%2==1){printf(○);break;}elseif(k%2==0){printf(●);break;}}}if(kp)printf(·);elsecontinue;}printf(\n);}}/******************走棋行*****************/intzouqihang(){intx;printf(请输入要走棋子所在行数!\n);printf(x=);scanf(%d,&x);while(xN-1||x1){printf(error!\n);printf(请输入要走棋子所在行数!\n);printf(x=);scanf(%d,&x);}returnx;}/******************走棋列*****************/intzouqilie(){inty;printf(请输入要走棋子所在列数!\n);printf(y=);scanf(%d,&y);while(yN-1||y1){printf(error!\n);printf(请输入要走棋子所在列数!\n);printf(y=);scanf(%d,&y);}returny;}/******************文件保存*****************/voidsave(inti){FILE*fp;fp=fopen(wuzi_list,wb);fwrite(&weizhi[i],sizeof(structzuobiao),1,fp);}/****************判断输赢*******************/voidpanduan(intp){inti,j,k[8]={1,1,1,1,1,1,1,1,};inta[N*N],b[N*N];FILE*fp;fp=fopen(wuzi_list,rb);for(i=1;i=p;i++){fread(&weizhi[i],sizeof(structzuobiao),1,fp);a[i]=weizhi[i].x[i];b[i]=weizhi[i].y[i];}/*****************判断行******************/for(i=1;i=p;i++){if(i%2==1){for(j=1;j=p;j=j+2){if((a[i]==a[j])&&(b[i]==b[j]-1)){k[0]++;continue;}elseif((a[i]==a[j])&&(b[i]==b[j]-2)){k[0]++;continue;}elseif((a[i]==a[j])&&(b[i]==b[j]-3)){k[0]++;continue;}elseif((a[i]==a[j])&&(b[i]==b[j]-4)){k[0]++;continue;}elseif(k[0]==5){printf(Player1wins!!!\n);}elsecontinue;}if(k[0]==5)break;k[0]=1;}elseif(k[0]==5)break;elseif(i%2==0){for(j=2;j=p;j=j+2){if((a[i]==a[j])&&(b[i]==b[j]-1)){k[1]++;continue;}elseif((a[i]==a[j])&&(b[i]==b[j]-2)){k[1]++;continue;}elseif((a[i]==a[j])&&(b[i]==b[j]-3)){k[1]++;continue;}elseif((a[i]==a[j])&&(b[i]==b[j]-4)){k[1]++;continue;}elseif(k[1]==5){printf(Player2wins!!!\n);}elsecontinue;}if(k[1]==5)break;k[1]=1;}}/**********************判断列************************/for(i=1;i=p;i++){if(k[0]==5||k[1]==5)break;elseif(i%2==1){for(j=1;j=p;j=j+2){if((a[i]==a[j]-1)&&(b[i]==b[j])){k[2]++;continue;}elseif((a[i]==a[j]-2)&&(b[i]==b[j])){k[2]++;continue;}elseif((a[i]==a[j]-3)&&(b[i]==b[j])){k[2]++;continue;}elseif((a[i]==a[j]-4)&&(b[i]==b[j])){k[2]++;continue;}elseif(k[2]==5){printf(Player1wins!!!\n);}elsecontinue;}if(k[2]==5)break;k[2]=1;}elseif(k[2]==5)break;elseif(i%2==0){for(j=2;j=p;j=j+2){if((a[i]==a[j]-1)&&(b[i]==b[j])){k[3]++;continue;}elseif((a[i]==a[j]-2)&&(b[i]==b[j])){k[3]++;continue;}elseif((a[i]==a[j]-3)&&(b[i]==b[j])){k[3]++;continue;}elseif((a[i]==a[j]-4)&&(b[i]==b[j])){k[3]++;continue;}elseif(k[3]==5){printf(Player2wins!!!\n);}elsecontinue;}if(k[3]==5)break;k[3]=1;}}/****************判断对角(左上-右下)******************/for(i=1;i=p;i++){if(k[0]==5||k[1]==5||k[2]==5||k[3]==5)break;elseif(i%2==1){for(j=1;j=p;j=j+2){if((a[i]==a[j]-1)&&(b[i]==b[j]-1)){k[4]++;continue;}elseif((a[i]==a[j]-2)&&(b[i]==b[j]-2)){k[4]++;continue;}elseif((a[i]==a[j]-3)&&(b[i]==b[j]-3)){k[4]++;continue;}elseif((a[i]==a[j]-4)&&(b[i]==b[j]-4)){k[4]++;continue;}elseif(k[4]==5){printf(Player1wins!!!\n);}elsecontinue;}if(k[4]==5)break;k[4]=1;}elseif(k[2]==5)break;elseif(i%2==0){for(j=2;j=p;j=j+2){if((a[i]==a[j]-1)&&(b[i]==b[j]-1)){k[5]++;continue;}elseif((a[i]==a[j]-2)&&(b[i]==b[j]-2)){k[5]++;continue;}elseif((a[i]==a[j]-3)&&(b[i]==b[j]-3)){k[5]++;continue;}elseif((a[i]==a[j]-4)&&(b[i]==b[j]-4)){k[5]++;continue;}elseif(k[5]==5){printf(Player2wins!!!\n);}elsecontinue;}if(k[5]==5)break;k[5]=1;}}/**********判断对角(左下-右上)************/for(i=1;i=p;i++){if(k[0]==5||k[1]==5||k[2]==5||k[3]==5||k[4]==5||k[5]==5)break;elseif(i%2==1){for(j=1;j=p;j=j+2){if((a[i]==a[j]+1)&&(b[i]==b[j]-1)){k[6]++;continue;}elseif((a[i]==a[j]+2)&&(b[i]==b[j]-2)){k[6]++;continue;}elseif((a[i]==a[j]+3)&&(b[i]==b[j]-3)){k[6]++;continue;}elseif((a[i]==a[j]+4)&&(b[i]==b[j]-4)){k[6]++;continue;}elseif(k[6]==5){printf(Player1wins!!!\n);}elsecontinue;}if(k[6]==5)break;k[6]=1;}elseif(k[6]==5)break;elseif(i%2==0){for(j=2;j=p;j=j+2){if((a[i]==a[j]+1)&&(b[i]==b[j]-1)){k[7]++;continue;}elseif((a[i]==a[j]+2)&&(b[i]==b[j]-2)){k[7]++;continue;}elseif((a[i]==a[
本文标题:C语言五子棋游戏源代码
链接地址:https://www.777doc.com/doc-4083826 .html