C語(yǔ)言課程設(shè)計(jì)報(bào)告——一擔(dān)挑游戲_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告——一擔(dān)挑游戲_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告——一擔(dān)挑游戲_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告——一擔(dān)挑游戲_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告——一擔(dān)挑游戲_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、中國(guó)地質(zhì)大學(xué)本科生課程論文封面課程名稱 C語(yǔ)言課程設(shè)計(jì)教師姓名 本科生姓名 本科生學(xué)號(hào) 本科生專業(yè) 所在院系 類另U: 日期:課程設(shè)計(jì)評(píng)語(yǔ)對(duì)課程論文的評(píng)語(yǔ):平時(shí)成績(jī):課程論文成績(jī):總成績(jī):評(píng)閱人簽名:注:1、無(wú)評(píng)閱人簽名成績(jī)無(wú)效;2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無(wú)效;3、如有平時(shí)成績(jī),必須在上面評(píng)分表中標(biāo)出,并計(jì)算入總成績(jī)。目錄課程設(shè)計(jì)評(píng)語(yǔ) 2目 錄 31 課程論文題目 42 程序設(shè)計(jì)思路 43 功能模塊圖 54 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 55 算法設(shè)計(jì) 56 程序代碼 87 程序運(yùn)行結(jié)果 118編程中遇到的困難及解決方法 139 總結(jié)心得及良好建議 14491 課程論文題目一擔(dān)挑游戲:要求簡(jiǎn)單計(jì)算

2、機(jī)模擬棋盤(pán)對(duì)弈。 其中棋盤(pán)左上角坐標(biāo)為 ( 1, 1) , 右下腳坐標(biāo)為 ( 3,3) 。游戲規(guī)則如下:( 1)計(jì)算機(jī)移動(dòng)時(shí),使用相應(yīng)的函數(shù)掃描棋盤(pán)矩陣,尋找未占單元,發(fā)現(xiàn)空單元后,置為“O” ,未發(fā)現(xiàn)時(shí),報(bào)告平局后退出。( 2)輪到對(duì)弈者時(shí),使用相應(yīng)函數(shù)要求對(duì)弈者把“X”放在哪里。( 3)誰(shuí)先三點(diǎn)一線了,則報(bào)告誰(shuí)勝出。( 4)計(jì)算機(jī)與對(duì)弈者沒(méi)下一步棋都會(huì)使相應(yīng)位置變?yōu)椤?O和“X”,便于在屏上顯示矩陣。提示棋盤(pán)位置用二維數(shù)組代表,初始狀態(tài)每一位置均為“ ” (空) 。其分隔線(即棋盤(pán)線)可用 - - 或 | 來(lái)分隔。2 程序設(shè)計(jì)思路( 1)由于此一擔(dān)挑游戲棋盤(pán)是3*3 的棋盤(pán) , 所以棋盤(pán)的

3、位置可以用二維數(shù)組來(lái)表示 , 在輸入時(shí)需要采用坐標(biāo)形式輸入;( 2)在輸入坐標(biāo)時(shí), 因?yàn)榭赡艹鲥e(cuò), 所以需要對(duì)坐標(biāo)是否重復(fù)和超界進(jìn)行判斷,計(jì)算機(jī)移動(dòng)時(shí)系統(tǒng)要不停得掃描棋盤(pán)矩陣來(lái)尋找未占單元,所以程序提供了顯示、瀏覽、查找、排序等操作;( 3)在對(duì)奕者與計(jì)算機(jī)輸入坐標(biāo)后, 應(yīng)該進(jìn)行輸贏平局的判斷;( 4)另外系統(tǒng)還能提供鍵盤(pán)式的選擇菜單來(lái)實(shí)現(xiàn)功能的選擇。3 .功能模塊圖4 .數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)用二維數(shù)組構(gòu)筑了棋盤(pán),用間隔線分割棋盤(pán)后,就可以按自己意愿和計(jì)算機(jī) 對(duì)弈了,此后每一步計(jì)算機(jī)都會(huì)調(diào)用相應(yīng)的函數(shù)掃描棋盤(pán)。Char qi pan33;Void init_qipan(void);int i,j;fo

4、r(i=0;i<3;i+)for(j=0:j<3;j+)qipanij= ''5 .算法設(shè)計(jì)(i)主函數(shù)主函數(shù)較為簡(jiǎn)單,只有數(shù)據(jù)輸入,功能處理等函數(shù)調(diào)用 流程圖設(shè)計(jì)如下:(2)各功能模塊設(shè)計(jì)棋盤(pán)輸入用二維數(shù)組構(gòu)筑了棋盤(pán),用間隔線分割棋盤(pán)后,就可以按自己意愿和計(jì)算機(jī) 對(duì)弈了,此后每一步計(jì)算機(jī)都會(huì)調(diào)用相應(yīng)的函數(shù)掃描棋盤(pán)。Char qi pan33;Void init_qipan(void);int i,j;for(i=0;i<3;i+)for(j=0:j<3;j+)qipanij= ''對(duì)弈模塊模塊是提供用戶模擬棋盤(pán)按用戶自己的思想來(lái)下棋,這

5、期間涉及兩種情況: 用戶輸入錯(cuò)誤或者棋子位置錯(cuò)誤。/*用戶方面對(duì)弈 */void player_move(void)int x,y;printf("It's your turn , please:");scanf("%d%*c%d",&x,&y);x-;y-; if(qipanxy!=' ')printf("Error, try again.n");player_move();else qipanxy='X'/* 計(jì)算機(jī)方面對(duì)弈 */ void computer_move(voi

6、d) int i,j;for(i=0;i<3;i+)for(j=0;j<3;j+) if(qipanij=' ') break;if(qipanij=' ') break;if(i*j=9)printf("pingjun");exit(0);elseqipanij='0'顯現(xiàn)模塊該模塊的作用是顯示對(duì)弈結(jié)果。 即要求計(jì)算機(jī)調(diào)用相關(guān)的函數(shù)多次掃描棋盤(pán),誰(shuí)的棋優(yōu)先連成一線了,計(jì)算機(jī)就判定誰(shuí)勝出。這期間有三種情況:第一,用戶是勝者;第二,計(jì)算機(jī)勝出;第三,二者打成平局。void disp(void)int t;for(t=

7、0;t<3;t+)printf("%c|%c|%c",qipant0,qipant1,qipant2);if(t!=2)printf("n-|-|-n");printf("n");char check(void)int i;for(i=0;i<3;i+)if(qipani0=qipani1&&qipani0=qipani2)return qipani0;for(i=0;i<3;i+)if(qipan0i=qipan1i&&qipan0i=qipan2i)return qipan0i;f

8、or(i=0;i<3;i+)if(qipan00=qipan11&&qipan00=qipan22) return qipan00;for(i=0;i<3;i+)if(qipan02=qipan11&&qipan11=qipan20) return qipan02;return ' '6 程序代碼#include "stdio.h"#include "stdlib.h" void init_qipan(); void player_move();void computer_move();void

9、 disp();char check();int main(void)char done;done=' 'init_qipan();dodisp();player_move();done=check();if(done!=' ')break;computer_move();done=check();while(done=' ');if(done='X')printf(" 恭喜你獲勝! n");elseprintf(" 真遺憾,你輸了! n");disp();getchar();return

10、0;char qipan33;void init_qipan(void)int i,j;for(i=0;i<3;i+)for(j=0;j<3;j+) qipanij=' 'void player_move(void)int x,y;printf("It's your turn , please:"); scanf("%d%*c%d",&x,&y);x-;y-;if(qipanxy!=' ')printf("Error, please try again.n");pla

11、yer_move();else qipanxy='X'void computer_move(void)int i,j;for(i=0;i<3;i+)for(j=0;j<3;j+)if(qipanij=' ')break;if(qipanij=' ')break;if(i*j=9)printf("pingjun");exit(0);elseqipanij='0'void disp(void)int t;for(t=0;t<3;t+)printf("%c|%c|%c ",qip

12、ant0,qipant1,qipant2);if(t!=2)printf("n-|-|-n");printf("n");char check(void)int i;for(i=0;i<3;i+)if(qipani0=qipani1&&qipani0=qipani2) return qipani0;for(i=0;i<3;i+)if(qipan0i=qipan1i&&qipan0i=qipan2i)return qipan0i;for(i=0;i<3;i+)if(qipan00=qipan11&&a

13、mp;qipan00=qipan22) return qipan00;for(i=0;i<3;i+)if(qipan02=qipan11&&qipan11=qipan20)return qipan02;return ''7 .程序運(yùn)行結(jié)果(2)移動(dòng)一個(gè)棋子后:(3)移動(dòng)兩個(gè)棋子后:(4)移動(dòng)了三個(gè)棋子后:網(wǎng)"C:Doajments and SettingsXluo 1 05'桌面拿程 FDebugl 23O71O5fi#8fS.eMeB11J s yoMA turn fl1X 10:11J s 9our tun:3條喜你獲由.編程中遇到的

14、困難及解決方法這次實(shí)習(xí)中遇到很多問(wèn)題,這畢竟第一次做的,難免會(huì)遇到過(guò)各種各樣的問(wèn) 題,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)一些前面學(xué)過(guò)的知識(shí)理解得 不夠深刻,掌握得不夠牢固,比如說(shuō)結(jié)構(gòu)體,指針,文件等等。通過(guò)這次課程設(shè) 計(jì)之后,我把前面所學(xué)過(guò)的知識(shí)又重新溫故了一遍。編程中遇到很多麻煩,首先是編譯中的許多錯(cuò)誤,不乏很低級(jí)的失誤。其次是 運(yùn)行成功后,一些功能沒(méi)有按要求實(shí)現(xiàn),比如判定輸入的坐標(biāo)是否重復(fù)。最后是 對(duì)程序的簡(jiǎn)化,再寫(xiě)報(bào)告時(shí)發(fā)現(xiàn)有許多程序段都是可以去掉或者調(diào)用其它函數(shù)來(lái) 代替。寫(xiě)結(jié)構(gòu)圖時(shí)發(fā)現(xiàn)有些函數(shù)結(jié)構(gòu)混亂,也做了些修改。在做課程設(shè)計(jì)的過(guò)程 中,雖然遇到不少很難對(duì)付的問(wèn)題,但和周邊同學(xué)進(jìn)行了交流或討論后,大多數(shù) 問(wèn)題都得到解決。9 總結(jié)心得及良好建議這次實(shí)習(xí),我有了不少的收獲。一是編程思想有了很大提升:對(duì)面向過(guò)程的結(jié)構(gòu)化思想有了進(jìn)一步的認(rèn)識(shí)和理解。初步接觸和了解了較大規(guī)模程序的寫(xiě)法。二是調(diào)試水平的提高:有了這次的鍛煉,積累了對(duì)一些編譯和運(yùn)行中常見(jiàn)的錯(cuò)誤的解決辦法的經(jīng)驗(yàn)和心得。三是初步認(rèn)識(shí)了一些常見(jiàn)算法:如遞歸,回溯,折半查找。四是思想上有了改變:編程是一項(xiàng)容不得半點(diǎn)馬

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論