数据结构试验报告-五子棋_第1页
数据结构试验报告-五子棋_第2页
数据结构试验报告-五子棋_第3页
数据结构试验报告-五子棋_第4页
数据结构试验报告-五子棋_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

福建农林大学金山学院实验报告系(教研室):信息与机电工程系专业:年级:2011实验课程:C语言程序设计姓名:***学号:*********实验室号:1#608计算机号:实验时间:2012.12.指导教师签字:成绩:实验1:编写五子棋实验目的和要求实验目的:编写五子棋人人对战编写五子棋人机对战实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确实验内容和原理1.人人对战程序源代码#include<iostream>usingnamespacestd;voidinit(charflag[20][20]);//初始化棋盘voiddraw(charflag[20][20]);//划出指定棋盘inttest(charflag[20][20],char);//判断是否棋局结束boolcheck(int,int);//检查玩家输入坐标是否合法intmain(){//设置棋盘大小,可以设置成变量x,ycharflag[20][20];//初始化数据init(flag);for(intx=0;x<400;){//棋盘上总共能乘放下x*y个棋子inti,j;if(x%4==0){cout<<"请A方走:";cin>>i;cin>>j;while(flag[i][j]=='X'||flag[i][j]=='O')//判断输入位置是否有棋子{cout<<endl;cout<<"此地已经有棋子!请重新走:";cin>>i;cin>>j;}if(check(i,j)==false){cout<<endl;cout<<"输入坐标不合法!请重新输入:";cin>>i;cin>>j;}flag[i][j]='X';//指定位置放上棋子draw(flag);if(test(flag,'X'))//判断是否获胜(A){charreplay;cout<<"A方胜利!是否再来一局?Y/N:";cin>>replay;if(replay=='Y'||replay=='y'){main();}else{break;}}x+=2;}else{cout<<"请B方走:";cin>>i;cin>>j;while(flag[i][j]=='X'||flag[i][j]=='O'){cout<<endl;cout<<"此地已经有棋子!请重新走:";cin>>i;cin>>j;}if(check(i,j)==false){cout<<endl;cout<<"输入坐标不合法!请重新输入:";cin>>i;cin>>j;}flag[i][j]='O';draw(flag);if(test(flag,'O'))//判断是否获胜(B){charreplay;cout<<"B方胜利!是否再来一局?Y/N:";cin>>replay;if(replay=='Y'||replay=='y'){main();}else{break;}}x+=2;}}return0;}voidinit(charflag[][20]){for(inti=0;i<20;i++){for(intj=0;j<20;j++){flag[i][j]='|';cout<<"-";cout<<flag[i][j];}cout<<endl;}}inttest(charflag[][20],charf){intmark=0;for(inti=0;i<15;i++){for(intj=0;j<15;j++){if(//判断横着,数着,斜着三种成立情况(f==flag[i][j]&&f==flag[i+1][j]&&f==flag[i+2][j]&&f==flag[i+3][j]&&f==flag[i+4][j])||(f==flag[i][j]&&f==flag[i][j+1]&&f==flag[i][j+2]&&f==flag[i][j+3]&&f==flag[i][j+4])||(f==flag[i][j]&&f==flag[i+1][j+1]&&f==flag[i+2][j+2]&&f==flag[i+3][j+3]&&f==flag[i+4][j+4])){cout<<endl;mark=1;}}}returnmark;}voiddraw(charflag[][20]){for(inti=0;i<20;i++){for(intj=0;j<20;j++){cout<<"-";cout<<flag[i][j];}cout<<endl;}}boolcheck(intx,inty){if(x>20||y>20||x<0||y<0)returnfalse;elsereturntrue;}2.人机对战程序a.对弈系统流程图b.源代码#include<math.h>#include<stdio.h>#defineN20voidwelcome();voidinitqipan();voidshowqi(inti);voidsave(intp);voidpanduan(intp);voidheqi();voidover();intzouqihang();intzouqilie();structzuobiao{intx[N*N];inty[N*N];}weizhi[N*N];intmain(){intp=0;welcome();initqipan();for(p=1;p<=N*N;p++){if(p%2==0)weizhi[p].x[p]=weizhi[p-1].x[p-1];elseweizhi[p].x[p]=zouqihang();if(p%2==0)weizhi[p].y[p]=weizhi[p-1].y[p-1]+1;elseweizhi[p].y[p]=zouqilie();save(p);showqi(p);panduan(p);}if(p==N*N)heqi();over();}voidinitqipan(){charf[N]={'','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s'};inti,j;for(i=0;i<N;i++){printf("%c",f[i]);printf("");}printf("\n");for(i=1;i<N;i++){for(j=0;j<N;j++){if(j==0)printf("%c",f[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;m<p;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;i<N;i++){printf("%d",i);printf("");}printf("\n");for(i=1;i<N;i++){for(j=1;j<N;j++){if(j==1)printf("%2d",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(k>p)printf("·");elsecontinue;}printf("\n");}}/******************走棋行*****************/intzouqihang(){intx;printf("请输入要走棋子所在行数!\n");printf("x=");scanf("%d",&x);while(x>N-1||x<1){printf("error!\n");printf("请输入要走棋子所在行数!\n");printf("x=");scanf("%d",&x);}returnx;}/******************走棋列*****************/intzouqilie(){inty;printf("请输入要走棋子所在列数!\n");printf("y=");scanf("%d",&y);while(y>N-1||y<1){printf("error!\n");printf("请输入要走棋子所在列数!\n");printf("y=");scanf("%d",&y);}returny;}/******************文件保存*****************/voidsave(inti){FILE*fp;staticintm=0;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[j]+3)&&(b[i]==b[j]-3)){k[7]++;continue;}elseif((a[i]==a[j]+4)&&(b[i]==b[j]-4)){k[7]++;continue;}elseif(k[7]==5){printf("Player2wins!!!\n");}elsecontinue;}if(k[7]==5)break;k[7]=1;}}}/****************和棋*******************/voidheqi(){printf("************************************\n");printf("Tie!!!\n");printf("************************************\n");}/****************游戏结束*******************/voidover(){printf("************************************\n");printf("gameover!!!\n");printf("************************************\n");}/****************游戏开始*******************/voidwelcome(){printf("************************************\n");print

温馨提示

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

评论

0/150

提交评论