版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
課程實驗報告課程名稱: 計算思維 專業(yè)班級:學號:—姓名: 指導教師: 報告日期: 計算機科學與技術學院目錄TOC\o"1-5"\h\z實驗用C語言編寫米子棋 11.1實驗目的與內容 11.2實驗原理與方案 11.3實驗測試與結果 1實驗總結與評價 2附錄實驗源程序代碼清單 31實驗用C語言編寫米子棋1.1實驗目的與內容目的:學會使用計算思維相關知識解決具體問題,并從中體會它的運用。內容:用C語言編寫一個“米字棋”程序,要求如下:(1)雙人游戲,玩家與計算機輪流走棋,每次選一個可以移動的位置走棋,每次只能橫向或豎向走一步;(2)—方棋子在某對角線成一條直線就算贏;(3)棋盤可用矩陣標示。1.2實驗原理與方案原理:使用數(shù)組表現(xiàn)棋局,利用枚舉法編寫計算機下棋算法。方案:(1)利用“自頂向下,逐步求精”的結構化程序設計思路,將程序分成四個部分:主體部分,打印棋局部分,玩家下棋部分,計算機下棋部分。(2) 利用數(shù)組記錄棋局,根據數(shù)組不同的值打印出相應的棋子或空處,再加上利用循環(huán)結構打印的棋盤,最后達到將棋局可視化的目的。(3) 利用數(shù)組記錄棋局,通過使數(shù)組的值做出與玩家輸入的值相對應的變化并記錄這種變化的方式,達到記錄玩家的走棋。(4) 利用對下棋策略的枚舉設計計算機下棋的算法,使計算機以非完全隨機的擁有一定勝率的方式做出“下棋”操作,同樣地,使用數(shù)組記錄棋局。(5) 將其余三個部分在主體部分中聯(lián)接,并在其中設計了判斷勝負的代碼,最終實現(xiàn)了實驗的要求。1.3實驗測試與結果測試結果如圖一圖二所示:nowit1nowit1sturnformachine!12 31 XX023 00Xcompirter*win?2實驗總結與評價棋局得到了良好的體現(xià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);}}〃顯示進行到哪里了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];}〃用于討論能產生勝負的五個格,兩邊的斜行分開考慮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++;}〃如果可能,搶先占據中間的位置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;}}}}〃如果別人要成功,就去破壞它〃隨機走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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)自卸車租賃服務協(xié)議(2024版)版B版
- 二零二五年度鋼材現(xiàn)貨及期貨交易代理合同3篇
- 二零二五年度地磚供貨與旅游度假區(qū)合同3篇
- 2024版拓展訓練合同范本大全
- 濰坊醫(yī)學院《阿拉伯文學選讀》2023-2024學年第一學期期末試卷
- 天津工業(yè)大學《土木水利(建筑與土木工程)領域論文寫作指導》2023-2024學年第一學期期末試卷
- 泰山護理職業(yè)學院《音樂會實踐(2)》2023-2024學年第一學期期末試卷
- 2025年度旅游線路開發(fā)居間服務合同范本6篇
- 2025年度船舶動力系統(tǒng)研發(fā)與建造合同3篇
- 二零二五年度高效節(jié)能蔬菜大棚租賃合同3篇
- 小兒甲型流感護理查房
- 霧化吸入療法合理用藥專家共識(2024版)解讀
- 寒假作業(yè)(試題)2024-2025學年五年級上冊數(shù)學 人教版(十二)
- 銀行信息安全保密培訓
- 市政道路工程交通疏解施工方案
- 2024年部編版初中七年級上冊歷史:部分練習題含答案
- 拆遷評估機構選定方案
- 床旁超聲監(jiān)測胃殘余量
- 上海市松江區(qū)市級名校2025屆數(shù)學高一上期末達標檢測試題含解析
- 綜合實踐活動教案三上
- 《新能源汽車電氣設備構造與維修》項目三 新能源汽車照明與信號系統(tǒng)檢修
評論
0/150
提交評論