版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程實(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ī)的”智能“還有待提高??偟膩碚f,較成功地完成了實(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年錄音棚短期租賃協(xié)議
- 2024年建筑工程鋼筋供應(yīng)與施工承包協(xié)議
- 2024年式輕型車輛租賃合同
- 賓館年度工作總結(jié)5篇
- 2024年房產(chǎn)交易市場(chǎng)住宅買賣合同
- 2024醫(yī)院信息化建設(shè)項(xiàng)目實(shí)施與維護(hù)合同
- 物業(yè)公司工作總結(jié)怎么寫
- 2024年技術(shù)轉(zhuǎn)讓合同:新能源技術(shù)轉(zhuǎn)讓
- 2024年新式合作共贏:場(chǎng)地租賃協(xié)議
- 2024年新式雇傭協(xié)議
- GA 1809-2022城市供水系統(tǒng)反恐怖防范要求
- 幼兒園繪本故事:《老虎拔牙》 課件
- 2021年上半年《系統(tǒng)集成項(xiàng)目管理工程師》真題
- 一個(gè)冬天的童話 遇羅錦
- GB/T 706-2008熱軋型鋼
- 實(shí)驗(yàn)六 雙子葉植物莖的初生結(jié)構(gòu)和單子葉植物莖的結(jié)構(gòu)
- GB/T 25032-2010生活垃圾焚燒爐渣集料
- GB/T 13610-2020天然氣的組成分析氣相色譜法
- 《彩虹》教案 省賽一等獎(jiǎng)
- 2023年湖南建筑工程初中級(jí)職稱考試基礎(chǔ)知識(shí)
- 沈陽機(jī)場(chǎng)航站樓擴(kuò)建工程安裝施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論