版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
福建农林大学金山学院实验报告系(教研室):信息与机电工程系专业:年级: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国深圳市房地产行业商业创新模式及投资规划分析报告
- 2024-2030年中国液压阀行业生产状况及未来发展策略分析报告
- 2024-2030年中国液化气钢瓶气密性测试机产业未来发展趋势及投资策略分析报告
- 2024-2030年中国油分离器产业未来发展趋势及投资策略分析报告
- 2024-2030年中国汽车底涂行业深度调查及投资风险分析报告
- 2024-2030年中国水泥煤炭行业市场运营模式及未来发展动向预测报告
- 2024-2030年中国水产养殖行业发展形势及投资风险分析报告
- 2024-2030年中国氨基寡糖素行业需求量预测及投资价值研究报告
- 幼教行业资助政策管理制度
- 2022年大学林业工程专业大学物理二期末考试试题B卷-附解析
- 海明斯德谦产品说明
- 安装空调竣工验收单
- 小学生态文明教育教案学校生态文明教育方案.doc
- 用电信息采集运维方案及服务承诺
- 花木绿化养护考核评分表
- (完整版)拌合站、水泥罐、搅拌站地基计算
- 锡柴6110发动机图册
- 中小企业办公无线网络设计与实现毕业设计论文
- 可研勘察设计费计费标准
- 运动处方知识点
- 某企业员工违规处理登记表(doc 2页)
评论
0/150
提交评论