版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告書</p><p> 學(xué)生 : </p><p><b> 指導(dǎo)老師: </b></p><p> 課程設(shè)計(jì)名稱: 推箱子小游戲</p><p> 班級(jí): </p><p><b> 設(shè)計(jì)任務(wù)</
2、b></p><p> 介紹推箱子游戲的實(shí)現(xiàn)方法,并逐步介紹C語言圖形編程的方法和技巧。在C語言編寫軟件WIN-TC上,涉及軟中斷、二維數(shù)組、鍵盤操作及圖形化函數(shù)等方法,顯示器中斷寄存器的設(shè)置、二維數(shù)組的定義、鍵盤上鍵值的獲取、圖形方式下光標(biāo)的顯示和定位,以及部分圖形函數(shù)的使用實(shí)現(xiàn)了一個(gè)完整的推箱子游戲界面,界面清晰可見。</p><p><b> 設(shè)計(jì)目的</b
3、></p><p> 訓(xùn)練學(xué)生掌握C的數(shù)據(jù)結(jié)構(gòu)和綜合編程能力和游戲開發(fā)技巧等應(yīng)用能力。</p><p><b> 初步設(shè)想</b></p><p> 推箱子是一款經(jīng)典的益智小游戲,目的是在訓(xùn)練人的邏輯思考能力。在一個(gè)狹小的空間中,要求把木箱從起始位置處推放到指定位置。在空間中有地方限制,稍不小心就會(huì)出現(xiàn)箱子無法移動(dòng)或者通道被堵住的情
4、況,而且箱子只能推不能拉,所以需要玩家巧妙的利用有限的空間和通道,合理的移動(dòng)次序和位置,才能完成任務(wù)。本游戲一共分14關(guān),由易到難,每一關(guān)都隨著關(guān)數(shù)的增加來增加難度,從而達(dá)到吸引游戲玩家的目的。 </p><p><b> 三 功能</b></p><p> 1、菜單功能,玩家通過看目錄按對(duì)應(yīng)的鍵可以進(jìn)入對(duì)應(yīng)的功能菜單,其中1進(jìn)入游戲,2選擇游戲關(guān)卡,3游戲幫助指
5、南 ,4退出游戲。</p><p> 2 游戲功能: 玩家可以通過操縱鍵盤中的上下左右鍵進(jìn)入游戲進(jìn)行各種操作來完成游戲。</p><p> 3 循環(huán)功能:當(dāng)玩家正在游戲的時(shí)候如果某一步走錯(cuò)了,導(dǎo)致游戲無法完成,可以隨時(shí)重新開始游戲來完成關(guān)卡,游戲過程中可以隨時(shí)按Ctrl+V退出游戲。</p><p> 4 順序功能: 當(dāng)玩家完成了某一關(guān)之后,隨著進(jìn)入下一關(guān)門可
6、以按順序進(jìn)入下一關(guān),繼續(xù)開始更有挑戰(zhàn)的關(guān)卡,如果該關(guān)是最后一關(guān),則顯示通關(guān)完成。</p><p><b> 總體設(shè)計(jì)</b></p><p><b> 功能模塊設(shè)計(jì)</b></p><p> 函數(shù)功能描述本程序包括5個(gè)模塊,分別是初始化模塊、畫圖模塊、移動(dòng)箱子模塊、移動(dòng)小人模塊和功能控制模塊。各個(gè)模塊功能的功能描述如
7、下:</p><p> ?。?)初始化模塊。該模塊包括屏幕初始化和游戲第一關(guān)到第最后一關(guān)的初始化。屏幕初始化用于輸出歡迎信息和操作提示,游戲每一關(guān)的初始化是構(gòu)建每一關(guān)的關(guān)卡。</p><p> (2)畫圖模塊。該模塊主要是被其他模塊調(diào)用,用于畫墻、在空地畫箱子、在目的地畫箱子、畫小人和畫目的地。</p><p> (3)移動(dòng)箱子模塊。該模塊用于移動(dòng)箱子,包括目的
8、地之間、空地之間和目的地與空地之間箱子的移動(dòng)。</p><p> ?。?)移動(dòng)小人模塊。該模塊是幾個(gè)功能函數(shù)的集合,包括屏幕輸出功能、指定位置狀態(tài)判斷功能和關(guān)卡重置功能。</p><p> ?。?)功能控制模塊。該模塊是幾個(gè)功能函數(shù)的集合,包括屏幕輸出功能、指定位置狀態(tài)判斷功能和關(guān)卡重置功能。</p><p><b> 任務(wù)執(zhí)行流程圖</b>
9、</p><p><b> 數(shù)據(jù)流程圖</b></p><p> 游戲從第一關(guān)開始,按上下左右方向鍵控制小人移動(dòng)來推動(dòng)箱子,可以在游戲中的任何時(shí)候按Esc鍵退出。如果游戲無成功希望,可以按CTRI+V回到當(dāng)前任務(wù)的開始狀態(tài);如果成功完成當(dāng)前關(guān),則進(jìn)入下一關(guān),如果當(dāng)前關(guān)是最后一關(guān),則顯示通關(guān)信息,提示游戲結(jié)束。</p><p><b&g
10、t; 小人移動(dòng)流程圖</b></p><p> 小人移動(dòng)的方向有4個(gè),move()函數(shù)(處理小人移動(dòng)的函數(shù))對(duì)這4個(gè)方向移動(dòng)的處理都一致,只是調(diào)用函數(shù)時(shí)的參數(shù)有所不同。首先判斷小人移動(dòng)的方向,然后根 據(jù)小人所處世的當(dāng)前狀態(tài)、下一步狀態(tài)或者下下一步狀態(tài)進(jìn)行適當(dāng)?shù)奶幚怼?lt;/p><p><b> 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p&g
11、t;<b> 設(shè)置全局變量</b></p><p> 定義int v[13][17],用于記錄箱子在屏幕中哪個(gè)坐標(biāo)上。其中“0”表示什么都沒有。定義了int num_guan指現(xiàn)在的關(guān)數(shù),int num_xiang;箱子的個(gè)數(shù),int move_num人行走的次數(shù);int push_num人推箱子的次數(shù);定義數(shù)組int M[2]表示人所在的位置; M[0] 是人所在位置的橫坐標(biāo) M[1]
12、是人所在位置的縱坐標(biāo);定義數(shù)組int door[2]表示門所在的坐標(biāo),door[0]是“下一關(guān)門”的橫坐標(biāo),door[1]是“下一關(guān)門”的縱坐標(biāo)。</p><p><b> 3主函數(shù)</b></p><p> 下面讓我們來看看主函數(shù)的操作流程,主函數(shù)首先進(jìn)入游戲目錄,提醒游戲玩家輸入對(duì)應(yīng)的數(shù)字來進(jìn)行的對(duì)應(yīng)的操作,如果玩家輸入1則進(jìn)入游戲第一關(guān),輸入2選擇關(guān)卡進(jìn)入,
13、輸入3顯示游戲幫助菜單,幫助玩家更好的理解這個(gè)游戲的規(guī)則,輸入4退出游戲。進(jìn)入游戲后,首先調(diào)用chushi1()函數(shù)初始化要使用的頁面,之后程序進(jìn)入play()函數(shù),play()函數(shù)中通過if語句通過判斷i的值來初始化不同的關(guān)卡(設(shè)置好關(guān)卡的人,箱子,箱子的目的地,門),接著程序進(jìn)入control函數(shù)通過獲取玩家在鍵盤上的操作來分別對(duì)游戲人物進(jìn)行操作,最后通過wancheng函數(shù)來對(duì)操作進(jìn)行判斷,如果判斷成功的話則進(jìn)入下一關(guān)游戲。反之則
14、失敗。一直通過到最后一個(gè)則通關(guān)成功。</p><p> 四 代碼設(shè)計(jì)(或編程)</p><p> ?、賳蝹€(gè)模塊或函數(shù)處理</p><p> 將整個(gè)系統(tǒng)程序分解為各個(gè)單獨(dú)的模塊,即C的函數(shù),各模塊可單獨(dú)編譯;</p><p><b> ?、谡麄€(gè)程序的聯(lián)調(diào)</b></p><p> 在各個(gè)模塊基
15、本的單獨(dú)編譯通過后,用主函數(shù)將他們集成在一起,實(shí)現(xiàn)調(diào)用,并進(jìn)行輸出數(shù)據(jù)的可靠性、輸入數(shù)據(jù)及系統(tǒng)的容錯(cuò)性測(cè)試。</p><p><b> 五 程序說明書</b></p><p><b> 功能模塊</b></p><p><b> play()</b></p><p>&l
16、t;b> control()</b></p><p><b> Daying()</b></p><p> Wancheng()</p><p><b> 解析</b></p><p><b> play()</b></p><p
17、> play()函數(shù)在這個(gè)程序中的功能主要是按1進(jìn)入游戲系統(tǒng)后自動(dòng)按照順序進(jìn)行游戲和完成每一關(guān)游戲后進(jìn)入下一關(guān)關(guān)卡,其中變量i控制關(guān)卡的關(guān)數(shù),j控制進(jìn)入下一關(guān),首先利用if語句將i從一開始,初始化完成第一關(guān),通過play()函數(shù)中的內(nèi)嵌函數(shù)control()函數(shù)來控制游戲中人和箱子的各種操作,當(dāng)過關(guān)了control()函數(shù)return 0.即j=control()中的j等于0,游戲進(jìn)入下一關(guān)。依次類推,當(dāng)完成14關(guān)之后j=1游
18、戲結(jié)束。</p><p> void play()</p><p><b> {</b></p><p> int i,j=0;</p><p> for(i=1;i<=20;i++)</p><p><b> {</b></p><p&g
19、t; tem=0;system("cls");//清屏</p><p> if(i==1) chushihua_guan1(); //設(shè)置關(guān)卡1的墻,箱子,人。 門 </p><p> else if(i==2) chushihua_guan2();</p><p> else if(i==3) chushihua_guan3
20、();</p><p> else if(i==4) chushihua_guan4();</p><p> else if(i==5) chushihua_guan5();</p><p> else if(i==6) chushihua_guan6();</p><p> else if(i==7) chushihua_guan7
21、();</p><p> else if(i==8) chushihua_guan8();</p><p> else if(i==9) chushihua_guan9();</p><p> else if(i==10) chushihua_guan10();</p><p> else if(i==11) chushihua_gu
22、an11();</p><p> else if(i==12) chushihua_guan12();</p><p> else if(i==13) chushihua_guan13();</p><p> else if(i==14) chushihua_guan14();</p><p> j=control();if(j==1
23、){system("cls");return ;}</p><p><b> }</b></p><p><b> }</b></p><p> 2 control()</p><p> Control()在這個(gè)程序中主要控制游戲中人物和箱子的運(yùn)動(dòng),當(dāng)玩家在鍵盤進(jìn)行各
24、種操作時(shí)系統(tǒng)會(huì)給出不同的反應(yīng)。模塊中定義了command變量,來接收玩家在鍵盤上的各種操作,首先調(diào)用getch()函數(shù)為command賦一個(gè)初值command=(“空字符”)22, 進(jìn)入界面圖表初始化,根據(jù)num_guan的大小來具體初始化對(duì)應(yīng)的關(guān)卡(箱子,人,墻的圖標(biāo)),接著模塊進(jìn)入了“控制階段”,再次通過getch()函數(shù)command獲得一個(gè)字符,當(dāng)command=”H”(也就是↑)時(shí)人進(jìn)行向上前進(jìn)的動(dòng)作,對(duì)應(yīng)的(“P” ”K”
25、”M”)進(jìn)行人的↓、←、→操作,以及人的上下左右推箱子的動(dòng)作,同時(shí)當(dāng)人的前進(jìn)的方向是墻或者雙層箱子的時(shí)候人則不能運(yùn)動(dòng),人推箱子如果箱子的前面是墻或者箱子的話箱子和人都不能運(yùn)動(dòng)。運(yùn)動(dòng)過程中如果玩家輸入ctrl+c時(shí)游戲此關(guān)卡重新開始,同時(shí)在control函數(shù)中調(diào)用一個(gè)win變量來判斷是否完成了游戲,調(diào)用內(nèi)嵌函數(shù)wancheng() 函數(shù),當(dāng)((win=wancheng())==1&&v[door[0]][door[1]]=
26、=ren)時(shí),表示這個(gè)關(guān)卡已經(jīng)完成了,return 0,</p><p> int control()</p><p><b> { </b></p><p><b> int win;</b></p><p><b> int temm;</b></p>
27、<p> char command; //存放接收到命令 </p><p><b> while(1)</b></p><p><b> { </b></p><p> command=get
28、ch(); //輸入一個(gè)字符 </p><p> /*if(command==1)</p><p> if(command==22) </p><p><b> {</b></p><p> if(num_guan==1) {system("cls");chushihua
29、_guan1();}</p><p> else if(num_guan==2) {system("cls");chushihua_guan2();}</p><p> else if(num_guan==3) {system("cls");chushihua_guan3();}</p><p> else if(num
30、_guan==4) {system("cls");chushihua_guan4();}</p><p> else if(num_guan==5) {system("cls");chushihua_guan5();}</p><p> else if(num_guan==6) {system("cls");chushihua
31、_guan6();}</p><p> else if(num_guan==7) {system("cls");chushihua_guan7();}</p><p> else if(num_guan==8) {system("cls");chushihua_guan8();}</p><p> else if(num
32、_guan==9) {system("cls");chushihua_guan9();}</p><p> else if(num_guan==10) {system("cls");chushihua_guan10();}</p><p> else if(num_guan==11) {system("cls");chushi
33、hua_guan11();}</p><p> else if(num_guan==12) {system("cls");chushihua_guan12();}</p><p> else if(num_guan==1113) {system("cls");chushihua_guan13();}</p><p> e
34、lse if(num_guan==14) {system("cls");chushihua_guan14();}</p><p><b> }</b></p><p> if(command==-32) //F11,F12:-123,-122<
35、/p><p><b> {</b></p><p> temm=0;command=getch(); </p><p> if(temm==0&&command=='H' && (v[M[0]-1][M[1]]==xiang||v[M[0]-1][M[1]]==oxiang) &&a
36、mp; v[M[0]-2][M[1]]==jia) //箱子在人的上邊或者 人的上邊的箱子已經(jīng)放好了且人的上面兩行就是箱子的家</p><p> { v[M[0]-1][M[1]]=ren; //H指的是向上推箱子到家</p><p> v[M[0]][M[1]]=0;</p><p> v[M[0]-2][M[1]]=oxiang;</p
37、><p> M[0]=M[0]-1;move_num=move_num+1;push_num=push_num+1;</p><p> temm=temm+1;}</p><p> if(temm==0&&command=='P' && (v[M[0]+1][M[1]]==xiang||v[M[0]+1][M[1]]
38、==oxiang) && v[M[0]+2][M[1]]==jia) </p><p> { v[M[0]+1][M[1]]=ren;temm=temm+1; //P指向下推箱子到家 </p><p> v[M[0]][M[1]]=0;</p><p> v[M[0]+2][M[1]]=oxiang;</p><p
39、> M[0]=M[0]+1;move_num=move_num+1;push_num=push_num+1;}</p><p> if(temm==0&&command=='K' && (v[M[0]][M[1]-1]==xiang||v[M[0]][M[1]-1]==oxiang) && v[M[0]][M[1]-2]==jia)<
40、/p><p> { v[M[0]][M[1]-1]=ren; //K指向左推箱子到家</p><p> v[M[0]][M[1]]=0;temm=temm+1; </p><p> v[M[0]][M[1]-2]=oxiang; </p><p> M[1]=M[1]-1;move_num=move_num+1;push_
41、num=push_num+1;}</p><p> if(temm==0&&command=='M' && (v[M[0]][M[1]+1]==xiang||v[M[0]][M[1]+1]==oxiang) && v[M[0]][M[1]+2]==jia)</p><p> { v[M[0]][M[1]+1]=ren;t
42、emm=temm+1; //M指向右推箱子到家 </p><p> v[M[0]][M[1]]=0;</p><p> v[M[0]][M[1]+2]=oxiang;</p><p> M[1]=M[1]+1;move_num=move_num+1;push_num=push_num+1;}//H指人把箱子向上推,不是推到家 </p&g
43、t;<p> if(temm==0&&command=='H' && (v[M[0]-1][M[1]]==xiang||v[M[0]-1][M[1]]==oxiang) && (v[M[0]-2][M[1]]==0||v[M[0]-2][M[1]]==jia)) </p><p> { v[M[0]-1][M[1]]=re
44、n;temm=temm+1;v[M[0]][M[1]]=0;v[M[0]-2][M[1]]=xiang;M[0]=M[0]-1;move_num=move_num+1;push_num=push_num+1;}</p><p> if(temm==0&&command=='H' && (v[M[0]-1][M[1]]==0||v[M[0]-1][M[1]]==ji
45、a||v[M[0]-1][M[1]]==men)) </p><p> { v[M[0]-1][M[1]]=ren;temm=temm+1;v[M[0]][M[1]]=0;move_num=move_num+1;M[0]=M[0]-1;} //人向上走 </p><p> if(temm==0&&command=='P' &&
46、; (v[M[0]+1][M[1]]==0||v[M[0]+1][M[1]]==jia||v[M[0]+1][M[1]]==men)) </p><p> { v[M[0]+1][M[1]]=ren;temm=temm+1; //人的下面為空或者下面為家或者下面為門的時(shí)候 向下走</p><p> v[M[0]][M[1]]=0;</p><p> M[
47、0]=M[0]+1;move_num=move_num+1;}</p><p> if(temm==0&&command=='P' && (v[M[0]+1][M[1]]==xiang||v[M[0]+1][M[1]]==oxiang) && (v[M[0]+2][M[1]]==0||v[M[0]+2][M[1]]==jia)) </p>
48、;<p> { v[M[0]+1][M[1]]=ren; //人的下面為箱子或者下面已經(jīng)有箱子找到家了 切 下面的下面是空或者下面的下面是家,人把箱子向下推,人往下面走 </p><p> v[M[0]][M[1]]=0;temm=temm+1;</p><p> v[M[0]+2][M[1]]=xiang;</p><p>
49、M[0]=M[0]+1;move_num=move_num+1;push_num=push_num+1;}</p><p> if(temm==0&&command=='K' && (v[M[0]][M[1]-1]==0||v[M[0]][M[1]-1]==jia||v[M[0]][M[1]-1]==men))</p><p> { v
50、[M[0]][M[1]-1]=ren;temm=temm+1; //人的左邊為空或者左邊是家或者左邊是門的時(shí)候人可以往左邊走 </p><p> v[M[0]][M[1]]=0;</p><p> M[1]=M[1]-1;move_num=move_num+1;}</p><p> if(temm==0&&command=='
51、K' && (v[M[0]][M[1]-1]==xiang||v[M[0]][M[1]-1]==oxiang) && (v[M[0]][M[1]-2]==0||v[M[0]][M[1]-2]==jia))</p><p> {v[M[0]][M[1]-1]=ren;temm=temm+1;//人的左邊是箱子或者人的左邊是已經(jīng)找到家的箱子切 人的左邊的左邊是空或者人的
52、左邊的左邊是家的時(shí)候箱子可以往左邊移動(dòng),</p><p> v[M[0]][M[1]]=0;</p><p> v[M[0]][M[1]-2]=xiang;</p><p> M[1]=M[1]-1;move_num=move_num+1;push_num=push_num+1;}</p><p> if(temm==0&&a
53、mp;command=='M' && (v[M[0]][M[1]+1]==0||v[M[0]][M[1]+1]==jia||v[M[0]][M[1]+1]==men))</p><p> { v[M[0]][M[1]+1]=ren;temm=temm+1;v[M[0]][M[1]]=0;M[1]=M[1]+1;move_num=move_num+1;} //人的右邊是空的
54、或者人的右邊是家或者人的右邊的門的時(shí)候人可以往右邊走。</p><p> if(temm==0&&command=='M' && (v[M[0]][M[1]+1]==xiang||v[M[0]][M[1]+1]==oxiang) && (v[M[0]][M[1]+2]==0||v[M[0]][M[1]+2]==jia))</p>&l
55、t;p> { v[M[0]][M[1]+1]=ren;temm=temm+1;v[M[0]][M[1]]=0;v[M[0]][M[1]+2]=xiang; //人的右邊是箱子或者人的右邊是一個(gè)已經(jīng)找到家的箱子切右邊的右邊是空的或者右邊的右邊是家的時(shí)候可以推箱子 </p><p> M[1]=M[1]+1;move_num=move_num+1;push_num=push_num+1;}</
56、p><p> //else if(command==-122 || command==-123) ;</p><p><b> //else ;</b></p><p><b> }</b></p><p> //else if(command==0)</p><p
57、> //command=getch(); //接收Fn的下一個(gè)字符 //F1~F10:59~68 </p><p> else if(command>=2&&command<=26){if(command==3)return 1;} else ; //Ctrl+a~z:1~26 當(dāng)為ctrl+c的時(shí)
58、候程序結(jié)束</p><p> if(win=wancheng()==0) tem=0; </p><p> system("cls");dayin();</p><p> if((win=wancheng())==1&&v[door[0]][door[1]]==ren) {Sleep(225);return 0;}}<
59、;/p><p> return 0; //如果門的坐標(biāo)和人的坐標(biāo)相等的時(shí)候直接退出此語句,進(jìn)入下一個(gè)程序(俗稱下一關(guān) )</p><p><b> }</b></p><p> 3 Daying()</p><p> Daying函數(shù)在這個(gè)程序主要在游戲
60、中的功能是畫出游戲中人和箱子和“完成門”家,人的圖標(biāo)和對(duì)游戲中的關(guān)卡和人走的步數(shù)和推箱子的步數(shù)進(jìn)行計(jì)數(shù)數(shù),根據(jù)游戲中玩家的操作隨時(shí)的對(duì)游戲畫面進(jìn)行變換。通過變量i,j來獲得men, qiang, oxiang ,ren, jia, xiang(分別表示完成門、墻、箱子放在家中、人、家、箱子)的坐標(biāo)來找到各個(gè)變量的位置,從而運(yùn)用畫圖函數(shù)畫出對(duì)應(yīng)的圖標(biāo)。</p><p> void dayin()</p>
61、;<p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=0;i<=12;i++)</p><p> for(j=0;j<=16;j++)</p><p> if(fuben[i][j]==jia&&
62、amp;v[i][j]==0) </p><p> v[i][j]=jia;</p><p> for(i=0;i<=12;i++)</p><p> {for(j=0;j<=16;j++)</p><p><b> {</b></p><p> if(v[i][j]==q
63、iang){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_INTENSITY);printf("█");}</p><p> else if(v[i][j]==men){SetConsoleTextAttribute(GetStdHandle(STD_OUTP
64、UT_HANDLE),FOREGROUND_BLUE | FOREGROUND_RED);printf("П");}</p><p> else if(v[i][j]==oxiang){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN);printf(
65、"■");}</p><p> else if(v[i][j]==ren){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE|FOREGRO
66、UND_RED);printf("囧");}</p><p> else if(v[i][j]==jia){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_RED);printf("★");}</p&
67、gt;<p> else if(v[i][j]==xiang){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);printf("■");}</p><p> else {SetConsoleTex
68、tAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);printf(" ");}</p><p> }printf("\n");}</p><p> SetCon
69、soleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);</p><p> printf("\n\n 關(guān)卡 %3d 步數(shù) %3d 推箱子次數(shù) %3d\n",num_guan,move_
70、num,push_num);</p><p><b> }</b></p><p> 4 Wancheng()</p><p> Wancheng()函數(shù)在這個(gè)程序中的功能主要是判斷游戲是否完成,其中定義了變量n來控制oxiang(進(jìn)入了目標(biāo)位置(家)的箱子)的個(gè)數(shù),用fuben[i][j]==men來定義“完成門”,當(dāng)n等于此關(guān)中箱子
71、的個(gè)數(shù)且v[i][j]=men,即人的位置在“完成門”上的時(shí)候return(1)即玩家完成了這個(gè)一關(guān),如果完成門在oxiang或者人不在完成門上則未完成。</p><p> int wancheng()</p><p> {int i,j,n=0;</p><p> for(i=0;i<=12;i++)for(j=0;j<=16;j++)
72、if(v[i][j]==oxiang) n=n+1; //n是對(duì)進(jìn)入家的箱子計(jì)數(shù)</p><p> if(n==num_xiang) </p><p><b> {</b></p><p> if(tem==0)</p><p> for(i=0;i<=12;i++) </p>&l
73、t;p> for(j=0;j<=16;j++) </p><p> if(fuben[i][j]==men) </p><p> v[i][j]=men;</p><p> tem=tem+1;</p><p> return 1; //正確</p><p><b> }&l
74、t;/b></p><p> else if(v[door[0]][door[1]]==xiang) </p><p><b> {</b></p><p> v[door[0]][door[1]]=xiang; //錯(cuò)誤</p><p><b> return 0;</b><
75、;/p><p><b> }</b></p><p> else if(v[door[0]][door[1]]!=ren)</p><p><b> {</b></p><p> v[door[0]][door[1]]=0; //錯(cuò)誤</p><p> return
76、0;//程序結(jié)束 </p><p><b> }</b></p><p> return 0; //錯(cuò)誤</p><p><b> }</b></p><p><b> 六 不足之處</b></p><p> 由于技術(shù)等原因,有一些代碼
77、在效率上還有待提高,功能上有所不足。</p><p><b> 七 程序特色</b></p><p> 程序改變了傳統(tǒng)的方式,實(shí)現(xiàn)了非黑框的窗口,并且實(shí)現(xiàn)了游戲人物的繪制以及運(yùn)動(dòng),關(guān)卡的由易到難的逐級(jí)推進(jìn)功能,讓游戲變得更加有趣味有難度,從而吸引玩家玩這個(gè)游戲。</p><p><b> 八 總結(jié) </b><
78、/p><p> 通過這從課程,首先真正的感覺到了自己技術(shù)的提高,也認(rèn)識(shí)到了自己的不足和編寫代碼上的不熟練,在很多很多地方也需要花時(shí)間去練習(xí),去提升。 然后,通過這一次課程設(shè)計(jì)的經(jīng)驗(yàn),我們能夠發(fā)現(xiàn),原來我們以前認(rèn)為的非常難的一些東西在不懈的努力下也是可以完成的,“世上無難事,只怕有心人。” ,只要努力了,都會(huì)有收獲,同時(shí)相信經(jīng)過這一次課程設(shè)計(jì),我們?cè)谝院蟮膶W(xué)習(xí)生活中一定會(huì)有更大的提升,更大的進(jìn)步!</p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++推箱子課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)--推箱子游戲
- c語言課程設(shè)計(jì)--推箱子游戲
- 《c語言程序設(shè)計(jì)》課程設(shè)計(jì)推箱子
- 推箱子游戲課程設(shè)計(jì)
- 推箱子游戲課程設(shè)計(jì)
- javame課程設(shè)計(jì)-- 手機(jī)推箱子游戲
- 匯編語言推箱子課程設(shè)計(jì)
- java課程設(shè)計(jì)--經(jīng)典推箱子趣味游戲設(shè)計(jì)與實(shí)現(xiàn)
- 推箱子任務(wù)計(jì)劃-C語言.docx
- c課程設(shè)計(jì)報(bào)告
- c課程設(shè)計(jì)報(bào)告
- 推箱子
- 推箱子程序設(shè)計(jì)與報(bào)告
- 推箱子
- c語言課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論