河南科技大學面向對象課程設計五子棋游戲_第1頁
河南科技大學面向對象課程設計五子棋游戲_第2頁
河南科技大學面向對象課程設計五子棋游戲_第3頁
河南科技大學面向對象課程設計五子棋游戲_第4頁
河南科技大學面向對象課程設計五子棋游戲_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

課程設計匯報文檔題目:五子棋游戲一.引言1.編寫目:經過本課程設計,使學生鞏固面向對象程序設計基礎概念、原理和技術,學會使用VisualC++開發工具進行簡單面向對象程序開發,將理論與實際相結合,完成一個小型面向對象程序設計與實現,并在此基礎上強化學生實踐意識,提升其實際動手能力和創新能力。2.定義:類:類(Class)實際上是對某種類型對象定義變量和方法原型。類是對某個對象定義。它包含相關對象動作方法信息,包含它名稱、方法、屬性和事件。結構函數:C++語言為類提供結構函數可自動完成對象初始化任務,全局對象和靜態對象結構函數在main()函數實施之前就被調用,局部靜態對象結構函數是當程序第一次實施到對應語句時才被調用.然而給出一個外部對象引用性申明時,并不調用對應結構函數3.參考資料:(1).孫鑫《VC++深入詳解》ISBN:電子工業出版社,(2).侯俊杰

《深入淺出MFC》ISBN:3華中理工大學出版社(3).王艷平張崢《WINDOWS程序設計》ISBN:7人民郵電出版社二.任務描述1.目標:(1)進行五子棋游戲系統結構設計和類結構設計;(2)設計并實現五子棋游戲。2.功效描述:能實現簡單五子棋游戲,但不能實現人機互動。進行五子棋游戲時,需輸入坐標(數字字母)。能判定落子錯誤,并提醒重新輸入。可在每局結束時,選擇再玩一局或者退出。3.性能描述(1)數據正確度:數據輸入從1-15,a-o。(2)時間特征:反應時間較慢。4.運行環境:硬件:裝有Windows操作系統計算機軟件:MicrosoftVisualStudio6.0、MicrosoftVisualStudio5.條件與限制:(1)因程序較簡單,無法進行可視化操作,在進行五子棋游戲時必需逐一輸入坐標。(2)程序不能實現人機對戰,只能進行人與人五子棋游戲。(3)程序不能進行悔棋操作。(4)程序沒有考慮死棋情況,不能出現平局。三.任務設計1.類劃分:(1)類1:程序中只用到一個類,五子棋類:classGobang。公有組員包含無參數結構函數Gobang()和voidpain();intsetChessboard(intt1);intifWin();intwhoWin(intsum);voidreset()。私有組員包含intW[15][15];intcount;………………2.類接口設計:(1)類1:外部結構包含:無參數結構函數Gobang()voidpain();intsetChessboard(intt1);intifWin();intwhoWin(intsum);voidreset()。………………3.類之間關系:程序僅定義了一個類。四.編寫代碼1.問題1(1)問題描述:編寫計算獲勝算法時,將獲勝情況分橫豎斜3種,但在編寫斜著勝時候沒有充足考慮到,斜著情況有兩種。應該分斜向上和斜向下兩種情況。造成編寫代碼時一直出現錯誤。(2)處理措施:查找資料后將斜著獲勝算法分為了兩部分,分別用3個嵌套for循環實現。改為以下所表示for(i=11;i>=0;i--)for(j=0;j<11;j++){sum=0;for(k=0;k<5;k++){if(0==W[i+k][j+k])break;sum+=W[i+k][j+k];if(whoWin(sum))return1;}}for(i=0;i<11;i++)for(j=4;j<15;j++){sum=0;for(k=0;k<5;k++){if(0==W[i+k][j-k])break;sum+=W[i+k][j-k];if(whoWin(sum))return1;}},問題得以處理。2.問題2(1)問題描述:編寫程序時將橫縱坐標都用char定義,后面對縱坐標進行減96轉化為字母操作,對橫坐標進行減0操作。結果發覺在將棋子寫入棋盤時,出現錯誤。Charcc,cl;intc,l;do{cout<<"請輸入您要落子坐標(數字字母):";cin>>cc;c=cc-0;cin>>cl;l=cl-96;if(W[c-1][l-1]!=0||c<0||c>15||l<0||l>15)cout<<"輸入有誤,請重新輸入^_^:";}(2)處理措施:仔細檢驗后發覺自己將數字用char定了,然后像縱坐標減96轉化為字母一樣,對橫坐標進行了減0操作。只要將cc用int定義,且不需要減0即可。改成下面情況就可處理問題。charcl;intcc,c,l;do{cout<<"請輸入您要落子坐標(數字字母):";cin>>cc;c=cc;cin>>cl;l=cl-96;if(W[c-1][l-1]!=0||c<0||c>15||l<0||l>15)cout<<"輸入有誤,請重新輸入^_^:";}……………五.程序運行1.程序運行過程:(1)橫著勝(2)豎著勝(3)斜向上勝(4)斜向下勝2.類結構次序:程序僅含有一個類。3.錯誤描述及其處理措施(1)問題1:問題描述:在運行時,當第二個黑棋(白棋)或者第二個以上黑棋(白棋)下在橫坐標是5或者縱坐標是E位置時,就會提醒黑方(白方)獲勝。處理措施:仔細檢驗程序發覺,在寫計算獲勝算法時,for循環中將縱橫坐標掃描范圍都寫成了0-15。忽略了有應該從4開始,有應該到11結束。比如在進行判定斜著贏情況時,應分兩種:(1)橫坐標從11到0,縱坐標送0到11。(2)橫坐標從0到11,縱坐標從4到15。(2)問題2問題描述:在運行時發覺不能判定從左下方到右上方五子獲勝。處理措施:觀察程序后發覺,在進行判定左下到右上算法時用了以下算法:for(k=0;k<5;k++){if(0==W[i+k][j+k])break;sum+=W[i+k][j+k];if(whoWin(sum))return1;}忘記了橫加豎減計算規則,采取了和左上到右下一樣算法。應該改為前加后減。改成下面算法后,問題處理。for(k=0;k<5;k++){if(0==W[i+k][j-k])break;sum+=W[i+k][j-k];if(whoWin(sum))return1;}………六、感想認識此次課程設計,經過設計一個簡單五子棋程序,經過2周學習發覺了自己很多不足,同時也學會了很多東西。在進行課程設計時,發覺自己很多最基礎c語言上知識都已經不能熟練利用了。像for循環等,這些基礎知識已經很生疏了。另外在利用c++上學到知識時,也不能得心用手。對于類利用需要不停看書查資

溫馨提示

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

評論

0/150

提交評論