版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
課程實(shí)驗(yàn)報(bào)告課程名稱: 計(jì)算思維 專業(yè)班級(jí):學(xué)號(hào):—姓名: 指導(dǎo)教師: 報(bào)告日期: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院目錄TOC\o"1-5"\h\z實(shí)驗(yàn)用C語言編寫米子棋 11.1實(shí)驗(yàn)?zāi)康呐c內(nèi)容 11.2實(shí)驗(yàn)原理與方案 11.3實(shí)驗(yàn)測(cè)試與結(jié)果 1實(shí)驗(yàn)總結(jié)與評(píng)價(jià) 2附錄實(shí)驗(yàn)源程序代碼清單 31實(shí)驗(yàn)用C語言編寫米子棋1.1實(shí)驗(yàn)?zāi)康呐c內(nèi)容目的:學(xué)會(huì)使用計(jì)算思維相關(guān)知識(shí)解決具體問題,并從中體會(huì)它的運(yùn)用。內(nèi)容:用C語言編寫一個(gè)“米字棋”程序,要求如下:(1)雙人游戲,玩家與計(jì)算機(jī)輪流走棋,每次選一個(gè)可以移動(dòng)的位置走棋,每次只能橫向或豎向走一步;(2)—方棋子在某對(duì)角線成一條直線就算贏;(3)棋盤可用矩陣標(biāo)示。1.2實(shí)驗(yàn)原理與方案原理:使用數(shù)組表現(xiàn)棋局,利用枚舉法編寫計(jì)算機(jī)下棋算法。方案:(1)利用“自頂向下,逐步求精”的結(jié)構(gòu)化程序設(shè)計(jì)思路,將程序分成四個(gè)部分:主體部分,打印棋局部分,玩家下棋部分,計(jì)算機(jī)下棋部分。(2) 利用數(shù)組記錄棋局,根據(jù)數(shù)組不同的值打印出相應(yīng)的棋子或空處,再加上利用循環(huán)結(jié)構(gòu)打印的棋盤,最后達(dá)到將棋局可視化的目的。(3) 利用數(shù)組記錄棋局,通過使數(shù)組的值做出與玩家輸入的值相對(duì)應(yīng)的變化并記錄這種變化的方式,達(dá)到記錄玩家的走棋。(4) 利用對(duì)下棋策略的枚舉設(shè)計(jì)計(jì)算機(jī)下棋的算法,使計(jì)算機(jī)以非完全隨機(jī)的擁有一定勝率的方式做出“下棋”操作,同樣地,使用數(shù)組記錄棋局。(5) 將其余三個(gè)部分在主體部分中聯(lián)接,并在其中設(shè)計(jì)了判斷勝負(fù)的代碼,最終實(shí)現(xiàn)了實(shí)驗(yàn)的要求。1.3實(shí)驗(yàn)測(cè)試與結(jié)果測(cè)試結(jié)果如圖一圖二所示:nowit1nowit1sturnformachine!12 31 XX023 00Xcompirter*win?2實(shí)驗(yàn)總結(jié)與評(píng)價(jià)棋局得到了良好的體現(xiàn),達(dá)到了可視化的目的。計(jì)算機(jī)也以原先的目標(biāo)進(jìn)行“下棋,噪作。但是計(jì)算機(jī)的”智能“還有待提高。總的來說,較成功地完成了實(shí)驗(yàn)內(nèi)容和要求,但在算法特別是計(jì)算機(jī)下棋方面還有改進(jìn)的余地。附錄實(shí)驗(yàn)源程序代碼清單#include<stdio.h>#include<stdlib.h>include<math.h>include<tinie.h>voidpnnt_whole(chara[3][3]);voidstep(charp[3][3]);mtmachme_o(chara[3][3]);mtmam(void){charnme[3][3];inti;fdr(i=O;i<3;i-H-)nme[0][i]=,X,;fdr(i=O;i<3;i-H-)nme[l][i]='fdr(i=O;i<3;i-H-)mne[2][i]=O;pimt_whole(nine);priiitf(nstart!(UjustcontiolX)\n”);〃開始走棋while(!?nine[0][0]=nine[1][1])&&(niiie[1][1]=iiine[2][2])&&niiie[l][l]!='?&&!((iuiie[0][2]==nme[!][!])&&(mne[l][l]=nme[2][0])&&mne[l][l]!JJ)step(nine);system(nclsn);piint_whole(iuiie);if(((nine[0][0]=iiine[1][1])&&(iiiiie[1][1]=nine[2][2])&&nine[l][l]!=‘f)||((nine[0][2]==niiie[1][1])&&(niiie[1][1]=nine[2][0])&&nine[l][l]!=‘'))pnntf(nyouretuni0;}piintf(n\imowlt^turnformachine!\iin);if(machine_o(nine))pnnt_whole(nine);pnntf(ncomputefwm!\ii\ii\ii\nn);return0;}elsepiint_whole(nine);}letinn0;}voidpnnt_whole(chaia[3][3]){mtt,k;TOC\o"1-5"\h\zprmtf(" 1”);prmtf(" 2”);prmtf(" 3”);foi(t=0;t<3;t-H-){prmtf(n%dn,t+l);foi(k=0;k<3;k++){pnntf(H%6c,,,a[t][k]);}priiitf(H\nn);}}〃顯示進(jìn)行到哪里了voidstep(charp[3][3]){inta,b;pimtf(nwntedownthecoordsaslx,x,!\iin);scanf(”%d,%d”,&a,&b);if(a<=3&&a>0&&b<=3&&b>0&&p[b-l][a-1]==X){intc.d;pnntf(nwhiclicoordstomoveas,x,x,?\iin);scanf(”%d,%d”,&c、&d);if(c<=3&&c>0&&c<=3&&c>0)mtt=a+b-c-d;if(((t==l)||(t==-l))&&(p[d-l][c-l]=,')){p[b-l][a-l]=,;p[d-l][c-l]=X;}elsepimtf(n\nEiior1!\nn);}elsepnntf(n\iiEnoi2}elsepiintf(H\iiEnoi3}〃按規(guī)則行棋mtmachme_o(chara[3][3]){intstep=O,judge=l;char*tluee_a[3],*tluee_b[3];{tlnee_a[O]=&a[0][0];tlnee_a[l]=&a[l][l];tlnee_a[2]=&a[2][2];tlnee_b[O]=&a[0][2];tlnee_b[l]=&a[l][l];tlnee_b[2]=&a[2][0];}〃用于討論能產(chǎn)生勝負(fù)的五個(gè)格,兩邊的斜行分開考慮if(a[l][l]==*'){intsu_i;char*sunound[4];sunound[0]=&a[0][1];sunound[l]=&a[l][0];sunound[2]=&a[1][2];sunound[3]=&a[2][1];for(su_i=0;su_i<4;su_i++)if(*suiTound[su_i]==,O,){*sunound[su_i]-a[l][l]=O;}}step++;}〃如果可能,搶先占據(jù)中間的位置else{{intwin_a,win_b,count,what;fbf(wiii_a=0,count=0;wui_a<3;wm_a-H-){if(*tluee_a[win_a]==,Or)count++;elsewhat=wm_a;}if(count==2){if(wliat==0&&*tluee_a[what]=*'){if(a[0][l]==,O'){a[0][l]=M;tluee_a[what]-O1;return1;}if(a[l][0]==*O'){a[l][0]=M;tluee_a[what]-O1;return1;}}if(wliat==2&&*tluee_a[what]=*f)if(a[2][l]==V)a[2][l]=";tluee_a[what]-O1;return1;}if(a[l][2]=9){a[l][2]=,f;tluee_a[what]-O1;return1;}}}//win_afsfbr(wiii_b=O.count=0;wm_b<3;win_b+十){if(*tluee_b[win_b]—O')count++;elsewhat=wm_b;}if(count==2){if(what==0&&*tluee_b[what]==,'){if(a[0][l]==,O'){a[0][l]=,f;tluee_b[what]-O';return1;}if(a[l][2]=9){a[l][2]=,f;tluee_b[what]-O1;return1;}}if(what==2&&*tluee_b[what]==,')if(a[2][l]==V){a[2][l]=「;tluee_b[what]=O;return1;}if(a[l][0]==*O'){a[l][O]=M;tluee_b[what]-O';return1;}}}}〃如果可以獲勝,就去獲勝{intwin_a,win_b,count,what;fbr(wiii_a=0.count=0;wm_a<3;wm_a-H-){if(*tluee_a[win_a]==,X')count++;elsewhat=wm_a;}if(count==2){if(wliat==0&&*tluee_a[what]==,{if(a[0][l]==,O'){a[0][l]=M;tluee_a[what]-O1;return0;}elseif(a[l][0]==tO,)a[l][0]=";*tluee_a[what]-O1;return0;}if(wliat==2&&*tluee_a[what]==,'){if(a[2][l]==O){a[2][l]=,r;tluee_a[what]-O1;return0;}elseif(a[l][2]=O){a[l][2]=,r;tluee_a[what]-O1;return0;}}}//win_afsfbr(wm_b=0.count=0;wm_b<3;win_b+十){if(*tluee_b[win_b]='X')count++;elsewhat=wm_b;}if(count==2){if(what==0&&*tluee_b[what]==,'){if(a[0][l]==,O'){a[0][l]=,r;tluee_b[what]-O';return0;}elseif(a[2][l]=O)a[2][l]=";*tluee_b[what]=O;return0;}if(wliat==2&&*tluee_b[what]==,'){if(a[2][l]==V){a[2][l]=「;tluee_b[what]=O;return0;}elseif(a[l][0]=O){a[l][0F';tluee_b[what]-O';return0;}}}}〃如果別人要成功,就去破壞它〃隨機(jī)走while(judge){intn=iandQ%9;switch(n){case0:if(a[0][0]=*'){if(a[0][l]==,O'){a[0][l]=M;a[0][0]=V;judge=0;}elseif(a[l][0]=rO'){a[l][0]=”;a[0][0]='Or;judge=0;}break;casel:if(a[O][l]=,*){if(a[0][2]==*O'){a[0][2]=**;a[O][l]=V;judge=O;}elseif(a[0][0]=0){a[0][0]=**;a[O][l]=V;judge=O;}elseif(a[l][l]='O'){a[l][l]=M;a[O][l]=V;judge=O;}}break;case2:if(a[0][2]=,*){if(a[0][l]==,O'){a[O][l]=";a[0][2]=O;judge=O;}elseif(a[l][2]=O){a[l][2]=";a[0][2]=O;judge=O;}}break;case3:if(a[l][0]==,*){if(a[0][0]==*0'){a[0][0]=**;a[l][0]=O;judge=O;}elseif(a[2][0]=O){a[2][0F*;a[l][0]=O;judge=O;}elseif(a[l][l]='O'){a[l][l]=M;a⑴[0]=V;judge=O;}}break;case4:break;case5:if(a[l][2]==,*){if(a[0][2]==*O'){a[0][2]=「;a[l][2]=O;judge=O;}elseif(a[2][2]=O){a[2][2]=,*;a[l][2]=O;judge=O;}elseif(a[l][l]='O')a[l][2]=V;judge=O;}}break;case6:if(a[2][0]=,'){if(a[l][0]==*O'){a[l][O]=M;a[2][0]=V;judge=O;}elseif(a[2][l]=rO'){a[2][l]=";a[2][0]=O;judge=O;}}break;case7:if(a[2][l]=,*){if(a[2][0]==*O'){a[2][0]=-;a[2][l]=O;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 礦山環(huán)保個(gè)人鏟車租賃合同樣本
- 幼兒園門衛(wèi)值班聘用合同
- 酒店維修零星工程協(xié)議
- 地下停車場(chǎng)安全施工協(xié)議
- 轉(zhuǎn)讓限價(jià)房合同樣本
- 水利工程文件規(guī)劃
- 酒店大堂科技展覽租賃合同
- 地下車庫彩繪施工合同
- 舞蹈兼職教師聘用合同范本
- 林業(yè)保護(hù)新司機(jī)勞動(dòng)合同
- 學(xué)習(xí)投入量表
- 【歷史課件】中國近代史
- 北師大版八年級(jí)生物下冊(cè)《發(fā)酵技術(shù)》評(píng)課稿
- 王崧舟慈母情深課件
- 保育員-項(xiàng)目二-組織進(jìn)餐課件
- 南京工業(yè)職業(yè)技術(shù)大學(xué)輔導(dǎo)員考試題庫
- 2024年消防設(shè)施操作員之消防設(shè)備高級(jí)技能每日一練試卷B卷含答案
- 氣液兩相流-第2章-兩相流的基本理論課件
- 孔子與《論語》知到章節(jié)答案智慧樹2023年曲阜師范大學(xué)
- 學(xué)會(huì)寬容善待他人
- 算法及其描述-高中信息技術(shù)粵教版(2019)必修1
評(píng)論
0/150
提交評(píng)論