




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
福建農(nóng)林大學(xué)金山學(xué)院實(shí)驗(yàn)報(bào)告系(教研室):信息與機(jī)電工程系專業(yè):年級(jí):2011實(shí)驗(yàn)課程:C語(yǔ)言程序設(shè)計(jì)姓名:***學(xué)號(hào):*********實(shí)驗(yàn)室號(hào):1#608計(jì)算機(jī)號(hào):實(shí)驗(yàn)時(shí)間:2012.12.指導(dǎo)教師簽字:成績(jī):實(shí)驗(yàn)1:編寫五子棋實(shí)驗(yàn)?zāi)康暮鸵髮?shí)驗(yàn)?zāi)康模壕帉懳遄悠迦巳藢?duì)戰(zhàn)編寫五子棋人機(jī)對(duì)戰(zhàn)實(shí)驗(yàn)要求:任選一種高級(jí)程序語(yǔ)言編寫源程序,并調(diào)試通過(guò),測(cè)試正確實(shí)驗(yàn)內(nèi)容和原理1.人人對(duì)戰(zhàn)程序源代碼#include<iostream>usingnamespacestd;voidinit(charflag[20][20]);//初始化棋盤voiddraw(charflag[20][20]);//劃出指定棋盤inttest(charflag[20][20],char);//判斷是否棋局結(jié)束boolcheck(int,int);//檢查玩家輸入坐標(biāo)是否合法intmain(){//設(shè)置棋盤大小,可以設(shè)置成變量x,ycharflag[20][20];//初始化數(shù)據(jù)init(flag);for(intx=0;x<400;){//棋盤上總共能乘放下x*y個(gè)棋子inti,j;if(x%4==0){cout<<"請(qǐng)A方走:";cin>>i;cin>>j;while(flag[i][j]=='X'||flag[i][j]=='O')//判斷輸入位置是否有棋子{cout<<endl;cout<<"此地已經(jīng)有棋子!請(qǐng)重新走:";cin>>i;cin>>j;}if(check(i,j)==false){cout<<endl;cout<<"輸入坐標(biāo)不合法!請(qǐng)重新輸入:";cin>>i;cin>>j;}flag[i][j]='X';//指定位置放上棋子draw(flag);if(test(flag,'X'))//判斷是否獲勝(A){charreplay;cout<<"A方勝利!是否再來(lái)一局?Y/N:";cin>>replay;if(replay=='Y'||replay=='y'){main();}else{break;}}x+=2;}else{cout<<"請(qǐng)B方走:";cin>>i;cin>>j;while(flag[i][j]=='X'||flag[i][j]=='O'){cout<<endl;cout<<"此地已經(jīng)有棋子!請(qǐng)重新走:";cin>>i;cin>>j;}if(check(i,j)==false){cout<<endl;cout<<"輸入坐標(biāo)不合法!請(qǐng)重新輸入:";cin>>i;cin>>j;}flag[i][j]='O';draw(flag);if(test(flag,'O'))//判斷是否獲勝(B){charreplay;cout<<"B方勝利!是否再來(lái)一局?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(//判斷橫著,數(shù)著,斜著三種成立情況(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.人機(jī)對(duì)戰(zhàn)程序a.對(duì)弈系統(tǒng)流程圖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("請(qǐng)輸入要走棋子所在行數(shù)!\n");printf("x=");scanf("%d",&x);while(x>N-1||x<1){printf("error!\n");printf("請(qǐng)輸入要走棋子所在行數(shù)!\n");printf("x=");scanf("%d",&x);}returnx;}/******************走棋列*****************/intzouqilie(){inty;printf("請(qǐng)輸入要走棋子所在列數(shù)!\n");printf("y=");scanf("%d",&y);while(y>N-1||y<1){printf("error!\n");printf("請(qǐng)輸入要走棋子所在列數(shù)!\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;}}/**********判斷對(duì)角(左下-右上)************/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");}/****************游戲結(jié)束*******************/voidover(){printf("************************************\n");printf("gameover!!!\n");printf("************************************\n");}/****************游戲開始*******************/voidwelcome(){printf("************************************\n");print
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 累積生態(tài)風(fēng)險(xiǎn)對(duì)青少年學(xué)習(xí)投入的影響機(jī)制及干預(yù)研究
- 教育教學(xué)論文-三體五步教學(xué)法
- 釕、鈷基催化劑的制備及其電催化析氫和硫離子氧化性能的研究
- 公司合作簡(jiǎn)易合同范例
- 東城區(qū)節(jié)能供暖合同范例
- 公租房續(xù)審合同范例
- 兄弟間合作建房合同范例
- 買墓地合同范例
- 鄉(xiāng)鎮(zhèn)蔬菜收購(gòu)合同范例
- 企業(yè)咨詢策劃合同范例
- 貨運(yùn)車輛交通安全講座教案
- 2024露天煤礦智能化建設(shè)與管理規(guī)范
- 中國(guó)成人患者腸外腸內(nèi)營(yíng)養(yǎng)臨床應(yīng)用指南(2023版)
- 高速公路機(jī)械施工方案設(shè)計(jì)
- 學(xué)校桌椅采購(gòu)?fù)稑?biāo)方案(技術(shù)方案)
- 乳腺結(jié)節(jié)健康宣教
- GA/T 2012-2023竊照專用器材鑒定技術(shù)規(guī)范
- 內(nèi)部控制及內(nèi)部審計(jì)
- 學(xué)前比較教育全套教學(xué)課件
- 電工電子技術(shù)完整全套教學(xué)課件
- 高中歷史:如何上好高一開學(xué)第一課(共58張PPT)
評(píng)論
0/150
提交評(píng)論