三子棋小游戲_第1頁
三子棋小游戲_第2頁
三子棋小游戲_第3頁
三子棋小游戲_第4頁
三子棋小游戲_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 計算機學院計算機科學與技術專業計算機學院計算機科學與技術專業程序設計綜合課程設計程序設計綜合課程設計報告報告 (2011/2012 學年 第一學期)學生姓名:學生姓名: 學生班級:學生班級: 學學生生學學號號: 指導教師指導教師: 2012 年 01 月 04 日 三三子子棋棋 小小游游戲戲目目 錄錄第一章第一章 程序設計的目的和要求程序設計的目的和要求 .11.1 課程設計的目的 .1 1.2 課程設計的要求 .1第二章第二章 課程設計任務內容課程設計任務內容.32.1 課程設計題目 .32.2 課程設計介紹 .3第三章第三章 詳細設計說明詳細設計說明 .43.1 流程邏輯. .43.2

2、限制條件.53.3 運行結果.53.4 實驗過程.8第四章第四章 實驗總結及特色實驗總結及特色.114.1 調試結果及截圖 .11第五章第五章 課程設計心得及體會課程設計心得及體會 .13附錄附錄 參考文獻參考文獻.15附錄附錄 程序代碼程序代碼.16 1第一章第一章 課程設計目的和要求課程設計目的和要求第一節目的通過此次課程設計,進一步加深對 c+語言和運用的了解,將理論知識運用于開發的實踐,并在實踐中逐步掌握軟件工具的使用。鞏固已經學習過的 c+理論知識;進一步學習程序設計、程序調試的能力。進一步學習面向對象編程的知識和程序調試的能力; 增強 visual c+編程環境的應用能力掌握并且熟

3、練應用c+程序設計中所學知識,并學會運用。掌握函數功能的劃分方法,并運用此方法解決問題。學會程序測試方案的制定,并且實現程序的測試。通過此次實踐,積累經驗,提高分析和解決問題的能力。 2第二節第二節 要求要求課程設計需要從整體來考慮,在大的方向下來考慮小的模塊,在繼續分工。作到最小化,可執行化。1) 對于課程設計需要自己籌劃一下自己如何去下手,讓自己的方案能夠用 c+來執行。2) 對于運行結果的處理,再運行程序時可能會遇到一些其他問題,對于運行結果的處理主要是在達不到自己的期望是,就要對其進行分析。3) 錯誤的改正,在對于編程中錯誤的改正也是一重要的步驟,學會錯誤的改正才能更好的提高自己。4)

4、通過 c+課程設計,對 c+語言的應用及實現有更加深入的認識和理解3第二章第二章 課程設計任務內容課程設計任務內容2.1 課程設計題目井字棋小游井字棋小游戲戲2.2 課程設計介紹課程設計介紹“井字棋”的棋盤很簡單,是一個 33 的格子,類似于“五子棋” “五子棋”的規則是一方首先五子連成一線就勝利;“井字棋”是一方首先三子連成一線就勝利。在 3*3 棋盤上玩游戲,實現人機對弈,x 表示計算機,0 表示人。一方取勝條件:一方的 3 個棋子連成一線,即或成一橫線、或成豎線、或對角線。和棋條件:棋盤填滿了,但無人能贏。4第三章第三章 詳細設計說明詳細設計說明第一節第一節 流程邏輯流程邏輯輸入 y/n

5、開始電腦先手進行游戲玩家先手進行游戲游戲結束y n5第二節第二節 限制條件限制條件 該程序必須在 visual c+6.0 環境中運行。模式選擇時,不管輸入何種值,只要不是要求的輸入都是無效的。程序可能有時運行較慢,玩家需要等待,但是時間是非常短的。第三節 運行結果1)開始的界面由“游戲規則”和“是否先手”兩部分構成,如下圖,就是實現后的界面 62)2) 當選擇是否先手后,就進入了游戲開始的初始界面,也是由輸入輸出函完成的,每次走棋前都會顯示棋盤對應的編號,有利于方便玩家下棋,下方會顯示每次的走棋步驟,具體實現的效果圖為:3 3)棋盤走棋是按玩家輸入的數字進行的,用“x”或“o”顯示在棋盤上。

6、輸入部分之后的效果圖為: 74)當一局完成時,會有“再來一盤?”的提示,若是,則會跳回到模式界面,重新選擇是否先手,并開始程序。效果圖如下: 5 5)玩家走棋時,玩家根據提示輸入要走棋的位置,輸入數字進行走棋,若輸入錯誤則會提示輸入錯誤,效果圖如下:8第四步第四步 實驗過程實驗過程1. 玩家根據游戲規則和相關提示,選擇是否先手,回車鍵表示完成。2. 根據提示輸入相應的數字,然后在相應的位置顯示出棋子“x” ,同時顯示出來電腦走的棋子“o”的位置。 93. 根據電腦的走棋,玩家選擇自己的走棋位置。選錯位置會輸出提醒,并允許重新選擇。4. 重復 2-3 步,直到有一方獲得勝利,或者棋盤布滿所有棋子

7、,但仍未分出勝負的,顯示平局。105. 至此,一局已經結束。后面會問“再來一盤” ,根據玩家要求進行:選“y”或者“y” ,則會重新進行一局,重復上述步驟。選“n”或者“n”則會按任意鍵退出。 11第四章第四章 實驗總結及特色實驗總結及特色1)程序具有較好的性能。主要表現在以下幾個方面:a. 是否先手選擇時,不管輸入何種值,只要不是要求的輸入都是無效的,效果圖為: b. 玩家走棋時,任何非要求值,均報錯,要求重新輸入。位置重復時也會報錯,效果圖為: 12c一局結束時,提醒是否進行下一局時,任何非要求輸入也會報錯,并要求重新輸入。效果圖為: 13第五章第五章 課程設計心得與體會課程設計心得與體會

8、對于課程設計一開始有一種一頭霧水的感覺,它是干什么的,我要怎么做。拿下來題目之后,覺得以我的能力根本就不可能實現這個題目的要求,可是慢慢我發現它并非不可實現。只要耐心的分析它要的功能需要什么函數實現,就可以做到。于是我就著手做這個程序,可是它也并不像我想得那么簡單。在設計中剛開始出現了一百多個錯誤,令我一頭霧水,但是在經過幾天的檢查與修改后,能夠編譯出來,這令我非常的高興,但是運行結果有點出乎我的意料,所運行的結果,不能達到所期望的,但是經過一番修改后,能夠輸出,并且能進行游戲,這讓我喜出望外。說實話這是我第一次,編寫一個 200 多行的程序。雖然寫的程序比較繁瑣,沒有任何技巧,但我覺得這是個

9、美好的開始,說明我也可以自己做東西了。在我自己寫出之后都有點不敢相信自己,因為對于我來說是個編程的新手,剛學了一學期,在課程設計中,剛開始真有點對自己失去信心,但是在我真正的開始編寫時,就發現事情并不是我想的那么糟,只要肯下決心就會讓你自己發現原來自己的事,只有在自己真正的做了之后,才14能感覺到那種成功的喜悅,那種失敗的酸辛。這次課程設計也讓我感覺得到了我的不足,我也從網上找到過相同的程序源代碼。并且比我的實現的功能還要多,可是我的程序卻要比他們的多好幾倍,這也使我很苦惱。我知道原因就是我的程序并沒有分模塊編譯,這也是問題所在,因為模塊化設計部并不太明白。我想既然這些問題暴露出來了,我也沒必

10、要回避了。這次設計先搞一段落,放假后才是我追上別人的最好的時間,我將利用這段時間,好好的把這個弱項補回來。通過這次實驗設計使我對 c+有了更加深刻的理解,并對他的實現有了進一步了解。15附錄附錄 1:參考文獻:參考文獻譚浩強著.c+程序設計.北京:清華大學出版社,2004譚浩強著.c+程序設計題解與上機指導.北京:清華大學出版社,200516附錄附錄 2:程序清單:程序清單#include #include using namespace std;typedef char chess10; /字符數組typedef int temparr10; /整型數組chess arr; /定義字符數組變

11、量temparr brr; /定義整型數組變量int number,suc,n3,c3,n2,c2,n1,c1;void inarrdata(chess a) /初始化棋盤編號 a1=1;a2=2;a3=3; a4=4;a5=5;a6=6; a7=7;a8=8;a9=9;void display(chess a) /輸出棋盤狀態 coutendl;coutendl; cout a1 | a2 | 17a3endl; cout -endl; cout a4 | a5 | a6endl; cout -endl; cout a7 | a8 | a9endl; coutendl;coutendl;in

12、t arrfull() /判斷還有沒有下棋的位置 int i; int arrf=0; for(i=1;i=9;i+) if(i=arri-48) /如果字符arri-48等于i arrf=1; /那么arrf=1,也就是可以走棋 return arrf;void cn(int line) /判斷狀態 switch(line) 18 case 0:c3=c3+1;break; case 1:n2=n2+1;break; case 2:c2=c2+1;break; case 3:n1=n1+1;break; case 4:c1=c1+1;break; case 5:n3=n3+1;break;

13、int linenum(char a,char b,char c) /判斷狀態 int ln=6; if(a=x)&(b=x)&(c=x) ln=0; if(a=o)&(b=o)&(c!=o)|(a=o)&(b!=o)&(c=o)|(a!=o)&(b=o)&(c=o) ln=1; if(a=x)&(b=x)&(c!=x)|(a=x)&(b!=x)&(c=x)|(a!=x)&(b=x)&(c=x) ln=2; 19if(a=o)&(b!=o)&(c!=o)|(a!=o)

14、&(b=o)&(c!=o)|(a!=o)&(b!=o)&(c=o) ln=3; if(a=x)&(b!=x)&(c!=x)|(a!=x)&(b=x)&(c!=x)|(a!=x)&(b!=x)&(c=x) ln=4;if(a=o)&(b=o)&(c=o) ln=5; return ln;int maxbrr(int *br) /判斷最大權值 int temp,i,mb; temp=-888; for(i=1;i=9;i+) if(temp=bri) temp=bri; mb=i; 20 return

15、mb;void manstep() /人走棋處理模塊 int j; display(arr); if(arrfull() /如果棋盤上還有下棋的位置,人走一步棋 coutj; while(j9)|(j!=arrj-48) coutj; arrj=o; n3=0;c3=0;n2=0;c2=0;n1=0;c1=0; number=linenum(arr1,arr2,arr3);cn(number);21 number=linenum(arr4,arr5,arr6);cn(number); number=linenum(arr7,arr8,arr9);cn(number); number=linen

16、um(arr1,arr4,arr7);cn(number); number=linenum(arr2,arr5,arr8);cn(number); number=linenum(arr3,arr6,arr9);cn(number); number=linenum(arr1,arr5,arr9);cn(number); number=linenum(arr3,arr5,arr7);cn(number); if(n3!=0) /您贏了 display(arr); coutendl; cout恭喜您贏了!endl; suc=0; 22void computerstep() /計算機走棋處理模塊 in

17、t i; if(arrfull() /如果棋盤上還有可下棋的位置,則計算機走棋 for(i=1;i=9;i+) /對每一步可走的棋進行計算 if(i=arri-48) c3=0;n2=0;c2=0;n1=0;c1=0; arri=x; number=linenum(arr1,arr2,arr3);cn(number); number=linenum(arr4,arr5,arr6);cn(number); number=linenum(arr7,arr8,arr9);cn(number); number=linenum(arr1,arr4,arr7);cn(number);23 number=l

18、inenum(arr2,arr5,arr8);cn(number); number=linenum(arr3,arr6,arr9);cn(number); number=linenum(arr1,arr5,arr9);cn(number); number=linenum(arr3,arr5,arr7);cn(number); brri=(128*c3-63*n2+31*c2-15*n1+7*c1); /計算此步權值 arri=i+48; else brri=-999; arrmaxbrr(brr)=x; /確定計算機走哪一步,權值最大的一步 c3=0;n2=0;c2=0;n1=0;c1=0; number=linenum(arr1,arr2,arr3);cn(number); number=linenum(arr4,arr5,arr6);cn(number);24 number=linenum(arr7,arr8,arr9);cn(number); number=linenum(arr1,arr4,arr7);cn(number); number=linenum(arr2,arr5,arr8);cn(number); number=linenum(arr3,arr6,arr9);cn(number); number=linenum(arr1,arr5,arr9);c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論