C語言程序設(shè)計(jì)掃雷游戲?qū)嶒?yàn)報(bào)告課件_第1頁
C語言程序設(shè)計(jì)掃雷游戲?qū)嶒?yàn)報(bào)告課件_第2頁
C語言程序設(shè)計(jì)掃雷游戲?qū)嶒?yàn)報(bào)告課件_第3頁
C語言程序設(shè)計(jì)掃雷游戲?qū)嶒?yàn)報(bào)告課件_第4頁
C語言程序設(shè)計(jì)掃雷游戲?qū)嶒?yàn)報(bào)告課件_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)程序設(shè)計(jì)實(shí)踐386c93dadaa3efca03844fc4ad837975.pdf 中南大學(xué)程序設(shè)計(jì)基礎(chǔ)實(shí)踐報(bào)告題 目 設(shè)計(jì)一個(gè)和window系統(tǒng)類似的小游戲【挖地雷】 學(xué)生姓名 張?zhí)m蘭 學(xué) 院 信息科學(xué)與工程學(xué)院 專業(yè)班級(jí) 物聯(lián)網(wǎng)工程1301班 完成時(shí)間 2014.1 目 錄1.課程設(shè)計(jì)內(nèi)容32.課程設(shè)計(jì)目的33.背景知識(shí)34.工具/準(zhǔn)備工作35.設(shè)計(jì)步驟、方法35.1.步驟1:步驟名稱(二級(jí)標(biāo)題)35.1.1.步驟1.1:步驟名稱(三級(jí)標(biāo)題)35.2.步驟2:步驟名稱45.3.步驟n:步驟名稱46.設(shè)計(jì)結(jié)果及分析47.設(shè)計(jì)結(jié)論48.問題及心得體會(huì)49.對(duì)本設(shè)計(jì)過程及方法、手段的改進(jìn)

2、建議410.參考文獻(xiàn)4報(bào)告名稱1. 課程設(shè)計(jì)內(nèi)容在計(jì)算機(jī)逐步滲入社會(huì)生活各個(gè)層面的今天,計(jì)算機(jī)已經(jīng)成為人們?nèi)粘I畹囊环?,越來越多的人使用?jì)算機(jī)辦公、娛樂等等。掃雷游戲是Windows操作系統(tǒng)自帶的一款小游戲,在過去的幾年里,Windows操作系統(tǒng)歷經(jīng)數(shù)次換代更新,變得越來越龐大、復(fù)雜,功能也越來越強(qiáng)大,但是這款小游戲依然保持原來的容貌,可見這款小游戲受到越來越多人的喜愛。我利用C-free編寫了與它功能相仿的挖地雷游戲,寓學(xué)于樂。 即:設(shè)計(jì)一個(gè)功能與Windows中的挖雷游戲相同的小游戲。2. 課程設(shè)計(jì)目的1 培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成課題的能力。2 試學(xué)生更深入地理解和掌握該課程中的

3、有關(guān)基本概念,程序設(shè)計(jì)思想和方法。 3提高對(duì)工作認(rèn)真負(fù)責(zé)、一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛,協(xié)作攻關(guān)的基本素質(zhì)。4培養(yǎng)勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來檢驗(yàn)理論,全方位考慮問題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。5培養(yǎng)從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高從別人經(jīng)驗(yàn)中找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。6對(duì)掌握知識(shí)的深度、運(yùn)用理論去處理問題的能力、實(shí)驗(yàn)?zāi)芰Α⒄n程設(shè)計(jì)能力、書面及口頭表達(dá)能力進(jìn)行考核3. 背景知識(shí)游戲玩法:以windows XP自帶掃雷winmine.exe為例 游戲區(qū)包括雷區(qū)、地雷計(jì)數(shù)器(位于左上角,記錄剩余地雷數(shù))和計(jì)時(shí)器(位于右上角,記錄游戲時(shí)間),確

4、定大小的矩形雷區(qū)中隨機(jī)布置一定數(shù)量的地雷(初級(jí)為9*9個(gè)方塊10個(gè)雷,中級(jí)為16*16個(gè)方塊40個(gè)雷,高級(jí)為16*30個(gè)方塊99個(gè)雷,自定義級(jí)別可以自己設(shè)定雷區(qū)大小和雷數(shù),但是雷區(qū)大小不能超過24*30),玩家需要盡快找出雷區(qū)中的所有不是地雷的方塊,而不許踩到地雷。游戲的基本操作包括左鍵單擊(Left Click)、右鍵單擊(Right Click)、雙擊(Chording)三種。其中左鍵用于打開安全的格子,推進(jìn)游戲進(jìn)度;右鍵用于標(biāo)記地雷,以輔助判斷,或?yàn)榻酉聛淼碾p擊做準(zhǔn)備;雙擊在一個(gè)數(shù)字周圍的地雷標(biāo)記完時(shí),相當(dāng)于對(duì)數(shù)字周圍未打開的方塊均進(jìn)行一次左鍵單擊操作:左鍵單擊:在判斷出不是雷的方塊上按

5、下左鍵,可以打開該方塊。如果方塊上出現(xiàn)數(shù)字,則該數(shù)字表示其周圍33區(qū)域中的地雷數(shù)(一般為8個(gè)格子,對(duì)于邊塊為5個(gè)格子,對(duì)于角塊為3個(gè)格子。所以掃雷中最大的數(shù)字為8);如果方塊上為空(相當(dāng)于0),則可以遞歸地打開與空相鄰的方塊;如果不幸觸雷,則游戲結(jié)束。雙擊:同時(shí)按下左鍵和右鍵完成雙擊。當(dāng)雙擊位置周圍已標(biāo)記雷數(shù)等于該位置數(shù)字時(shí)操作有效,相當(dāng)于對(duì)該數(shù)字周圍未打開的方塊均進(jìn)行一次左鍵單擊操作。地雷未標(biāo)記完全時(shí)使用雙擊無效。若數(shù)字周圍有標(biāo)錯(cuò)的地雷,則游戲結(jié)束,標(biāo)錯(cuò)的地雷上會(huì)顯示一個(gè)“ ”(見下圖) 掃雷的設(shè)計(jì)原理:掃雷游戲分為幾個(gè)步驟:第一步,使用二維數(shù)組表示地圖;第二步,隨機(jī)生成幾個(gè)地雷;第三步,點(diǎn)

6、擊方格的反應(yīng),計(jì)算每個(gè)非雷區(qū)方格點(diǎn)開后的數(shù)字;第四步,當(dāng)方格數(shù)字為0的情況;第五步,當(dāng)方格為地雷的情況。第一步地圖的大小和第二步地雷的數(shù)量都應(yīng)該是程序中給定的,或者玩家輸入的。這個(gè)是多少自己決定吧。第三步,計(jì)算非雷區(qū)方格點(diǎn)開后的數(shù)字就把這個(gè)方格在二維數(shù)組中周圍八個(gè)方向的方格是否是地雷都檢查一遍,一定要注意不要越出數(shù)組邊界。這個(gè)數(shù)字可以在游戲初始化時(shí)全都計(jì)算好,也可以在玩家點(diǎn)擊的時(shí)候再計(jì)算。點(diǎn)擊非雷區(qū)方格,顯示數(shù)字,這個(gè)方格標(biāo)記為“已點(diǎn)過”。第四步,當(dāng)方格數(shù)字為0時(shí),這里要用到遞歸調(diào)用,就是讓程序自動(dòng)“點(diǎn)擊”這個(gè)數(shù)字為0方格周圍的八個(gè)方格,然后再看結(jié)果,如果不是0,就停止,如果是0,依然遞歸調(diào)用

7、,直到?jīng)]有0為止,或者直到點(diǎn)遍所有方格為止,一定要注意不要越出數(shù)組邊界。第五步,很簡(jiǎn)單,宣布玩家死亡就可以了。4. 工具/準(zhǔn)備工作查閱相關(guān)資料,了解掃雷的的玩法,了解掃雷的設(shè)計(jì)思想方法。借鑒他人寫過的程序,從中找到突破口。從程序中了解需要的各種函數(shù)準(zhǔn)備,再進(jìn)一步獲悉該函數(shù)的功能與使用方法。對(duì)自己要設(shè)計(jì)的挖地雷游戲進(jìn)行功能分析,大致如下: 總體游戲過程分析:在屏幕上顯示一個(gè)游戲界面,雷區(qū)范圍內(nèi)預(yù)先埋設(shè)了一定數(shù)量的隨機(jī)分布的地雷(用數(shù)字9代替地雷);玩家通過從鍵盤中輸入(行數(shù)X,列數(shù)Y)進(jìn)行點(diǎn)擊;若能點(diǎn)中所有非雷區(qū),則游戲勝利;否則踩雷,游戲失敗。 簡(jiǎn)易版掃雷游戲要具備以下功能:1) 開局:首先選

8、擇游戲等級(jí),然后生成不同等級(jí)的雷區(qū)界面。游戲等級(jí)分為三級(jí):各等級(jí)行列數(shù)為:簡(jiǎn)單:1010、普通:1515、困難:2020;雷區(qū)每個(gè)*號(hào)下面或埋藏有1個(gè)地雷,或者沒有地雷;2) 挖雷:從鍵盤中輸入(行數(shù)X,列數(shù)Y),并按回車鍵,可挖開它;若所揭方塊下有9,則踩雷,此時(shí)所有含地雷的塊都出現(xiàn)9,該局游戲失敗;如果方塊上出現(xiàn)數(shù)字,它代表在它周圍的8個(gè)方塊中共有多少顆地雷;3) 輸入:通過鍵盤輸入相關(guān)指示信息;4) 輸出:提示游戲失敗,是否繼續(xù)再來一遍;5. 設(shè)計(jì)步驟、方法5.1主函數(shù)第一步,寫出主程序的基本框架,確定各子模塊名字和參數(shù)。具體的函數(shù)流程如圖5-3 所示:定義使用到的常數(shù)、全局變量、函數(shù)原

9、型說明。然后初始化圖形系統(tǒng),調(diào)用游戲控制函數(shù),游戲只接受鍵盤,通過鼠標(biāo)結(jié)束游戲,關(guān)閉系統(tǒng),退出游戲。main() int i,j;/*定義i,j變量*/ int NO; int begin=1; int h;/*確定雷的個(gè)數(shù)*/ while(begin) printf (nnnnnnnnn=nn ttt| 歡迎進(jìn)入掃雷 |nnn ttt| 按回車鍵繼續(xù) |nn ttt=nnnn ttt 本程序由張?zhí)m蘭和杜宏亮完成 nnnn); getchar(); /*游戲開始界面*/system(cls); printf( nnnnnnnnn 請(qǐng)選擇游戲難度:nn); printf( 1簡(jiǎn)單難度nn); p

10、rintf( 2普通難度nn); printf( 3困難難度nn); printf( 4自定義難度nn); scanf(%d,&h); getchar();/*確定游戲難度*/ if(0h&h5) switch(h) case 1: x=10; y=10; b=10; break;/*簡(jiǎn)單難度*/ case 2: x=15; y=15; b=40; break;/*普通難度*/ case 3: x=20; y=20; b=60; break;/*困難難度*/ case 4: system(cls); printf(請(qǐng)輸入棋盤行列數(shù)(小于20且用逗號(hào)隔開):);/*從鍵盤輸入坐標(biāo)*/ scanf

11、(%d,%d,&x,&y); getchar(); printf(請(qǐng)輸入雷的個(gè)數(shù):);/*從鍵盤輸入雷的個(gè)數(shù)*/ scanf(%d,&b); getchar(); break; break; else printf(輸入錯(cuò)誤請(qǐng)重新輸n); while(begin) system(cls); InitialValue_game(&g);/*棋盤初始化*/ InitialMine_game(&g);/*隨機(jī)布雷*/ print_game(&g,2);/*打印棋盤*/ NO=1; while(NO) printf(Please choose:); scanf(%d,%d,&i,&j); getcha

12、r(); if(-1i-1 & i-1x & -1j-1 & j-1y) switch(openmap(&g,i-1,j-1) case 1: print_game(&g,1); printf(游戲結(jié)束!按回車鍵再來一局n); if(getchar()=n) begin=1; else begin=0; NO=0; break; case 2: if(judge_game(&g)=b) printf(win!n); print_game(&g,1); printf(按回車鍵再來一局n);/*是否再來一局*/ if(getchar()=n) begin=1; else begin=0; NO=0

13、; break; else print_game(&g,2);NO=1;break; default:break; else printf(你輸入錯(cuò)誤!請(qǐng)重新輸入n); 主控模塊的各子模塊說明:void InitialValue_game( )用于棋盤初始化;InitialMine_game( )用于棋盤的隨機(jī)布雷;void print_game( )用于打印棋盤;int judge_game( )用于判斷游戲是否結(jié)束;int openmap( )用于點(diǎn)開地圖;5.2定義全局變量#include #include stdlib.h #includetime.h# define s 20int

14、x; /*棋盤行數(shù)*/ int y; /*棋盤列數(shù)*/int b; /*選擇游戲難度 1簡(jiǎn)單2普通3困難4 自定義*/int h; /*雷的個(gè)數(shù)*/struct Games g;struct Games int game_intss; char game_charss;使用結(jié)構(gòu)體數(shù)組來完成棋盤的定義,引用時(shí)間頭文件來完成對(duì)隨機(jī)布雷的隨時(shí)性。5.3各個(gè)函數(shù)的分析5.3.1棋盤初始化程序:void InitialValue_game(struct Games *g) int i,j; for(i=0;ix;i+) for(j=0;jy;j+) (*g).game_intij=0; (*g).gam

15、e_charij=*; 5.3.2隨機(jī)布雷:InitialMine_game(struct Games *g) int i,j,next1,next2; int sum=0; srand(unsigned)time(NULL); while(1) i=rand()%x; j=rand()%y; if(*g).game_intij=9) continue; (*g).game_intij=9; +sum; for(next1=-1;next12;next1+) for(next2=-1;next22;next2+) if( -1i+next1 & next1+ix& -1j+next2 & j+

16、next2y ) if(*g).game_inti+next1j+next2!=9) (*g).game_inti+next1j+next2+=1; if(sum=b) break; 實(shí)現(xiàn)雷的隨機(jī)分布和各個(gè)點(diǎn)周圍雷數(shù)的計(jì)算。srand()隨機(jī)布雷,5.3.3打印棋盤:void print_game(struct Games *g,int Logo) int i,j; int as; for(i=0;ix;i+) ai=i+1; if(Logo=1) printf( %d,a0); for(i=1;ix;i+) printf(i10? %d : %d,ai); printf(nn); for(i

17、=0;ix;i+) if(i+110) printf(%d ,i+1); for(j=0;jy;j+) printf(%d ,(*g).game_intij); printf(n); else printf(%d ,i+1); for(j=0;jy;j+) printf(%d ,(*g).game_intij); printf(n); if(Logo=2) printf( %d,a0); for(i=1;ix;i+) printf(i10? %d : %d,ai); printf(nn); for(i=0;ix;i+) if(i+110) printf(%d ,i+1); for(j=0;jy

18、;j+)printf(%c ,(*g).game_charij); printf(n); else printf(%d ,i+1); for(j=0;jy;j+)printf(%c ,(*g).game_charij); printf(n); 5.3.4判斷結(jié)束,點(diǎn)開地圖: int judge_game(struct Games *g) int sum=0; int i,j; for(i=0;ix;i+) for(j=0;jy;j+) if(*g).game_charij=*) sum+=1; return sum;int openmap(struct Games *g,int i,int j

19、) system(cls); int next1,next2; if(*g).game_intij=9) return 1; else if(*g).game_intij!=0) (*g).game_charij=(char)(*g).game_intij+48); return 2; else (*g).game_charij=0; for(next1=-1;next12;next1+) for(next2=-1;next22;next2+) if( -1i+next1 & next1+ix & -1j+next2 & j+next2y) if(*g).game_chari+next1j+n

20、ext2=*) openmap(g,i+next1,j+next2); return 2; 點(diǎn)開地圖,即實(shí)現(xiàn):當(dāng)輸入坐標(biāo)處為0,打開周圍同樣情況的坐標(biāo)點(diǎn)。即實(shí)現(xiàn)和Windows掃雷游戲同樣的功能。6. 設(shè)計(jì)結(jié)果及分析運(yùn)行第一步:按ENTER鍵進(jìn)入:選擇游戲難度,按ENTER鍵進(jìn)入:游戲界面,開始從鍵盤輸入數(shù)字,格式為(3,6),點(diǎn)擊ENTER鍵:游戲失敗顯示,并提示再來一局,程序完畢。7. 設(shè)計(jì)結(jié)論本程序在剛開始調(diào)試時(shí)有許多錯(cuò)誤,但都被一一克服,現(xiàn)在在操作本程序時(shí)可根據(jù)提示進(jìn)行相關(guān)操作,能正確輸出結(jié)果。在剛開始的幾次調(diào)試中曾經(jīng)出現(xiàn)過不能運(yùn)行、不能產(chǎn)生隨機(jī)數(shù)字、不會(huì)正確輸出結(jié)果、不能進(jìn)行循環(huán)等等

21、問題。經(jīng)同學(xué)的幫助,這些問題得到克服,并且使程序的功能也得到了一定的完善。在這次設(shè)計(jì)過程中,不僅復(fù)習(xí)課本上所學(xué)知識(shí),還通過查資料、問同學(xué)學(xué)到了課本上沒有的知識(shí)。從而啟發(fā)我,要想寫好程序,在寫好課本知識(shí)的同時(shí)還需要多讀和專業(yè)有關(guān)的一些書籍,同時(shí)還需要多動(dòng)腦子,盡量把所學(xué)的知識(shí)綜合起來應(yīng)用,力爭(zhēng)寫出完美的程序。除此之外,我還得到了一些有用的教訓(xùn):寫程序時(shí)必須要細(xì)心,不能輸錯(cuò)一個(gè)字符標(biāo)點(diǎn),就連全角半角也得注意。在修改時(shí)要有耐心,編譯出錯(cuò)后必須逐個(gè)錯(cuò)誤去改正,絕不能心急浮躁,否則修改之后還會(huì)有新的錯(cuò)誤。8. 問題及心得體會(huì)問題:在本次實(shí)習(xí)過程中碰到的編譯、連接的錯(cuò)誤主要有:缺少變量定義,定義位置不正確

22、、語法錯(cuò)誤、注釋的位置等。錯(cuò)誤解決方法。(1)缺少變量定義,定義位置不正確;由于該程序相對(duì)來講稍有些長(zhǎng),前后有些變量不容易聯(lián)系起來,但是在錯(cuò)誤信息的提示下一般還是很容易找到。不過需要注意的是在定義的時(shí)候有些函數(shù)使用同樣的變量名而表示不同的作用,因而使用要很小心,定義及定義的位置要特別留意。為減少這樣的錯(cuò)誤我后來還是用不同的變量名來表示,結(jié)果引起的那些錯(cuò)誤解決了。(2)語法錯(cuò)誤;大多的語法錯(cuò)誤在通過書本參考下能夠修改。主要是平時(shí)缺乏鍛煉、不太注意而產(chǎn)生的。如沒有注意具體數(shù)據(jù)使用是有一定的范圍限定;過分重視分號(hào)的重要性而在for、if、while語句中畫蛇添足加分號(hào);在使用文件的時(shí)候忘記將文件先打

23、開,對(duì)打開的方式(3)注釋的位置;程序設(shè)計(jì)中在注釋的時(shí)候不能同我們平常寫字一樣隨心所欲,我們應(yīng)該注意注釋的格式。注釋中不能含有c語言可執(zhí)行的語句!心得體會(huì) 課程設(shè)計(jì)是本科學(xué)習(xí)階段一次非常難得的理論與實(shí)際相結(jié)合的機(jī)會(huì),通過這次比較完整的一個(gè)程序的設(shè)計(jì),我擺脫了單純的理論知識(shí)學(xué)習(xí)狀態(tài),和實(shí)際設(shè)計(jì)的結(jié)合鍛煉了我的綜合運(yùn)用所學(xué)的基礎(chǔ)知識(shí),解決實(shí)際問題的能力,同時(shí)也提高我查閱文獻(xiàn)資料、對(duì)程序整體的把握等其他能力水平,而且通過對(duì)整體的掌控,對(duì)局部的取舍,以及對(duì)細(xì)節(jié)的斟酌處理,都使我的能力得到了鍛煉,經(jīng)驗(yàn)得到了豐富。這是我們都希望看到的也正是我們進(jìn)行課程設(shè)計(jì)的目的所在。雖然設(shè)計(jì)內(nèi)容繁多,過程繁瑣但我的收獲卻

24、更加豐富。各種組件的運(yùn)用,各種算法的應(yīng)用,各種控件的利用我都是隨著設(shè)計(jì)的不斷深入而不斷熟悉并逐步掌握的。和老師以及同學(xué)的溝通交流更使我對(duì)程序整體的規(guī)劃與設(shè)計(jì)有了新的認(rèn)識(shí)也對(duì)自己提出了新的要求。提高是有限的但提高也是全面的,正是這一次設(shè)計(jì)讓我積累了許多實(shí)際經(jīng)驗(yàn),也必然會(huì)讓我在未來的工作學(xué)習(xí)中表現(xiàn)出更高的應(yīng)變能力和理解力。順利如期的完成本次課程設(shè)計(jì)給了我很大的信心,但是也讓多不足的地方,學(xué)習(xí)其實(shí)就是一個(gè)不斷完善的過程,正視自己的不足之處,在以后的工作和學(xué)習(xí)中不斷的彌補(bǔ)這些不足之處,在以后的生活中也要保持同樣的態(tài)度,不斷的完善自己。9. 對(duì)本設(shè)計(jì)過程及方法、手段的改進(jìn)建議 我們認(rèn)為此程序太過簡(jiǎn)單,應(yīng)

25、該更進(jìn)一步把掃雷界面輸出為圖型圖案。也即是能夠使用方塊,然后調(diào)用graphics.h庫(kù)函數(shù)rectangle(x,y,xx,yy)畫一格矩形,setfillstyle(SOLID_FILL,color)設(shè)置填充方式,floodfill(x+1,y+1,WHITE)填充方塊。讓方塊看起來有立體感,將矩形上方和左方的邊線設(shè)為白色,下方和右方的邊線設(shè)為黑色。使掃雷界面更加美觀。再此基礎(chǔ)上增加標(biāo)記地雷的功能,比如說使用小紅旗,使玩家能夠跳過地雷。如果可以的話,可以考慮使用鼠標(biāo)來控制點(diǎn)擊位置,如果更好的話可以加入聲音,比如沒有點(diǎn)到雷的開心的聲音,點(diǎn)到雷后的倒霉聲。通過老師的指導(dǎo),這個(gè)軟件的設(shè)計(jì)要更趨于人

26、性化,也即是加入提示輸入格式,以解決輸入格式錯(cuò)誤問題,而不是直接結(jié)束,重啟。10. 參考文獻(xiàn)郭翠英主編的C語言課程設(shè)計(jì)實(shí)例精編;張芳妮 呂波 譯C語言編程常見問題解答;譚浩強(qiáng)C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第二版)。伍俊良.VB課程設(shè)計(jì)與系統(tǒng)開發(fā)案例M.北京附:源程序代碼:s#include #include stdlib.h # include time.h# define s 20int x; /*棋盤行數(shù)*/ int y; /*棋盤列數(shù)*/int b; /*選擇游戲難度 1簡(jiǎn)單2普通3困難4 自定義*/int h; /*雷的個(gè)數(shù)*/struct Games g;struct Games int

27、 game_intss; char game_charss;void InitialValue_game(struct Games *g)/*棋盤初始化*/ int i,j; for(i=0;ix;i+) for(j=0;jy;j+) (*g).game_intij=0; (*g).game_charij=#; InitialMine_game(struct Games *g)/*隨機(jī)布雷*/ int i,j,next1,next2; int sum=0; srand(unsigned)time(NULL); while(1) i=rand()%x; j=rand()%y; if(*g).ga

28、me_intij=9) continue; (*g).game_intij=9; +sum; for(next1=-1;next12;next1+) for(next2=-1;next22;next2+) if( -1i+next1 & next1+ix& -1j+next2 & j+next2y ) if(*g).game_inti+next1j+next2!=9) (*g).game_inti+next1j+next2+=1; if(sum=b) break; void print_game(struct Games *g,int Logo)/*打印棋盤*/ int i,j; int as

29、; for(i=0;ix;i+) ai=i+1; if(Logo=1) printf( %d,a0); for(i=1;ix;i+) printf(i10? %d : %d,ai); printf(nn); for(i=0;ix;i+) if(i+110) printf(%d ,i+1); for(j=0;jy;j+) printf(%d ,(*g).game_intij); printf(n); else printf(%d ,i+1); for(j=0;jy;j+) printf(%d ,(*g).game_intij); printf(n); if(Logo=2) printf( %d,

30、a0); for(i=1;ix;i+) printf(i10? %d : %d,ai); printf(nn); for(i=0;ix;i+) if(i+110) printf(%d ,i+1); for(j=0;jy;j+)printf(%c ,(*g).game_charij); printf(n); else printf(%d ,i+1); for(j=0;jy;j+)printf(%c ,(*g).game_charij); printf(n); int judge_game(struct Games *g)/*判斷游戲是否結(jié)束*/ int sum=0; int i,j; for(i

31、=0;ix;i+) for(j=0;jy;j+) if(*g).game_charij=#) sum+=1; return sum;int openmap(struct Games *g,int i,int j)/*點(diǎn)開地圖 */ system(cls); int next1,next2; if(*g).game_intij=9) return 1; else if(*g).game_intij!=0) (*g).game_charij=(char)(*g).game_intij+48); return 2; else (*g).game_charij=0; for(next1=-1;next12;next1+) for(next2=-1;next22;next2+) if( -1i+next1 & next1+ix & -1j+next2 & j+next2y) if(*g).game_chari+next1j+next2=#) openmap(g,i+next1,j+next2); return 2; main() int i,j; int NO; int begin=1; int h; while

溫馨提示

  • 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. 人人文庫(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)論