版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> C語言課程設(shè)計</b></p><p><b> 推箱子游戲</b></p><p> 院(系)別 信息工程系 </p><p> 班 級 </p><p> 學(xué) 號
2、</p><p> 姓 名 </p><p> 指導(dǎo)教師 </p><p> 時 間 2010-4-6—2010-4-1</p><p><b> 成 績 評 定 表</b></p><p><
3、;b> 摘 要</b></p><p> ちょうど1週間では、訓(xùn)練學(xué)校の學(xué)生の手-能力に、我々はC言語のカリキュラムデザインを開催します。教師と生徒の助けを借り、私は最終的にゲーム倉庫番を終えた。</p><p> カリキュラムは、私たちだけに、プログラミングの経験を持っていないが、我々は協(xié)力の重要性を理解する。お気軽に學(xué)期が本當(dāng)にで継続的な改善の上昇を行い、試運
4、転徐々に私のプログラムを改善します。自分のプログラミングに同じ時間も深い洞察力で、常に改善され、魂を作成します。</p><p> わずか1週間だけ、実際に私たちのプラットフォームを自分たちの知識を適用する指定されたが。そして、我々の最愛のプログラムの熱意に影響を與えた。私は以上の教科書はいくつかのプログラミングの知識とスキルをお持ち得ているこの1週間で展開します。私は勉強したいこれはバーの定數(shù)の拡大で完了する
5、はずです。</p><p> 關(guān)鍵字:カリキュラムデザイン、C言語、ゲーム倉庫番</p><p><b> 目 錄</b></p><p><b> 前言9</b></p><p> 1推箱子游戲軟件預(yù)覽10</p><p> 1.1推箱子游戲軟件發(fā)展之路
6、10</p><p> 1.2程序結(jié)構(gòu)流程圖10</p><p> 1.3程序總體模塊分析11</p><p> 2推箱子游戲軟件函數(shù)分析11</p><p> 2.1程序中的函數(shù)組成及其功能11</p><p> 2.2各函數(shù)實現(xiàn)原理11</p><p> 3
7、程序各界面截圖及說明12</p><p> 3.1開始界面12</p><p> 3.2a、b或c對應(yīng)界面及計時和限時功能12</p><p> 3.3選d后進入界面14</p><p> 4程序相關(guān)源代碼及相應(yīng)注釋14</p><p> 4.1輸出函數(shù)14</p>&l
8、t;p> 4.2移動函數(shù)(僅以向左代表)16</p><p> 4.2.1當(dāng)輸入d時16</p><p> 4.2.2向左移動16</p><p> 4.3設(shè)置背景函數(shù)18</p><p> 4.4主函數(shù)20</p><p><b> 致 謝22</b>&l
9、t;/p><p><b> 參考文獻23</b></p><p><b> 前 言</b></p><p> 隨著科技的不斷發(fā)展,世界對計算機的依賴逐漸加深。而編程作為指導(dǎo)計算機工作的的一門學(xué)科也正在逐步被發(fā)展完善。</p><p> 作為信息技術(shù)的重要部分,編程無疑是學(xué)習(xí)計算機科學(xué)路途中的
10、的重要組成部分。而作為一個編程初學(xué)者,說實在話這是編程生涯的第一次課程設(shè)計,因此難免會有許多不盡如人意的地方,希望各位讀者能夠以寬闊的胸懷給予諒解。</p><p> 在課程設(shè)計之初選課題時,我和我的組友為了給自己一個挑戰(zhàn)而選擇了推箱子游戲軟件開發(fā)。本來按我們的能力編一個游戲軟件其實是有一定難度的,但最終我們通過自己一個星期的努力,終于將它調(diào)試通過并初步完善,心中真的很高心。</p><p&
11、gt; 因為我們學(xué)習(xí)是調(diào)試環(huán)境多是在 VC 6.0 下,所以我們放棄了Win TC 下的編程,這其實也為我們下一步的C++課程的學(xué)習(xí)做好鋪墊。</p><p> 要說程序中有令自己遺憾的地方那就應(yīng)該說沒能用到圖形驅(qū)動函數(shù),在此希望讀者能夠諒解。在此謹(jǐn)向那些在我編程過程中為我提供幫助的老師和同學(xué)表示真摯的感謝和敬意。</p><p><b> 推箱子游戲軟件預(yù)覽</b&
12、gt;</p><p> 推箱子游戲軟件發(fā)展之路</p><p> 在剛接到這個程序時我的要求還僅僅只是要求能夠推著箱子到達目的地,其他功能還沒敢考慮??涩F(xiàn)在重新回顧才發(fā)現(xiàn)原來隨著不斷地調(diào)試與補充,最終使程序向豐滿和功能完善發(fā)展。</p><p> 由剛開始的移動問題到后來的推箱子問題再到后來到目的地后變化,進而達到限時和獲勝提示。這之間有太多的努力與學(xué)習(xí),直
13、到答辯完成才發(fā)現(xiàn)原來在無形之間自己已經(jīng)獲得了太多太多。</p><p> 我想這也正是一個正常編程員的成長史。所以在本文之初想用這幾段文字與大家一塊分享自己的成功喜悅及經(jīng)驗,希望能對大家能有一定幫助……</p><p><b> 程序結(jié)構(gòu)流程圖</b></p><p><b> 程序總體模塊分析</b></p&
14、gt;<p> 本程序總體大致可分為三大模塊,即讀入、判斷調(diào)整、輸出。</p><p> ?。?)讀 入 :即設(shè)置讀入操作把使用者的輸入操作符讀入程序,并定義變量儲存起來為下一步的判斷做好準(zhǔn)備;</p><p> (2)判斷調(diào)整:這一操作為下一步的調(diào)整二維數(shù)組內(nèi)容提供依據(jù),通過大量的判斷語句對所有可能出現(xiàn)的情況提供相對應(yīng)的唯一操作,使用戶能順利使用軟件并起到規(guī)范化輸入
15、的目的——當(dāng)輸入不明字符時不作處理。判斷結(jié)束后,執(zhí)行相應(yīng)操作改變數(shù)組內(nèi)容從而改變輸出內(nèi)容,使用戶順利進行下一步操作。</p><p> ?。?)輸 出 :通過刷屏后重新輸出從而使背景得以改變,進而等待用戶下一步的輸入操作。</p><p> 推箱子游戲軟件函數(shù)分析</p><p> 程序中的函數(shù)組成及其功能</p><p> (1)
16、輸出函數(shù)(show函數(shù)):輸出轉(zhuǎn)義背景;</p><p> ?。?)移動函數(shù)(move):改變二維數(shù)組內(nèi)部數(shù)據(jù)并判斷結(jié)束與否;</p><p> ?。?)設(shè)置背景函數(shù)(map):設(shè)置游戲場景提供基礎(chǔ)游戲數(shù)據(jù);</p><p> (4)其他系統(tǒng)函數(shù):略。</p><p><b> 各函數(shù)實現(xiàn)原理</b></p&g
17、t;<p><b> 移動函數(shù):</b></p><p> 移動函數(shù)又可分為上、下、左、右四種移動方式。在移動的時候還會遇到許多情況,如遇到墻不能移動、不能同時推動兩個箱子、進入目的地后需要改變圖標(biāo)、離開目的地后要還原圖標(biāo)等問題。在可操作情況下設(shè)置相應(yīng)操作,在不可操作情況下設(shè)置空執(zhí)行從而不進行任何操作(也起到規(guī)范化輸入作用)。</p><p><
18、;b> 輸出函數(shù):</b></p><p> 通過for語句套用從而達到輸出二維數(shù)組的效果,另外通過if語句判斷轉(zhuǎn)義進而實現(xiàn)輸出更加人性化的背景,從而達到更高的可用性。</p><p><b> 設(shè)置背景函數(shù):</b></p><p> 通過二維數(shù)組初始化對游戲背景進行設(shè)置,并在其內(nèi)部設(shè)計移動函數(shù)調(diào)用從而達到每一關(guān)都是
19、一個獨立的個體,可以單獨實現(xiàn)計時、限時、刷屏等功能,另外還可以輸出相應(yīng)的提示界面。從而為下一步添加場景提供了寬闊的空間。</p><p> 計時、限時、刷屏和調(diào)色函數(shù):</p><p> 提供了更加人性化的游戲界面,提高了使用者的游戲興趣。使dos界面不再僅是黑白的、毫無生氣的操作窗口。</p><p> 程序各界面截圖及說明</p><p
20、><b> 開始界面</b></p><p> 通過按abcd四個鍵來選擇是進入特定游戲還是退出。</p><p> a、b或c對應(yīng)界面及計時和限時功能</p><p> 第一層游戲界面,按方向鍵移動 游戲結(jié)束,下部有提示單個共用時數(shù), </p><p> 星號(代人)去推箱子;
21、 提高游戲樂趣。</p><p> 同時有提示限制時間30秒。</p><p> 第二層游戲界面,按方向鍵移動 游戲結(jié)束,下部有提示單個共用時</p><p> 星號(代人)去推箱子; 數(shù),提高游戲樂趣。</p><p> 同時有提示限制時間30秒。
22、</p><p> 第三層游戲界面,按方向鍵移動 游戲結(jié)束,下部有提示單個共用時</p><p> 星號(代人)去推箱子; 數(shù),提高游戲樂趣。</p><p> 同時有提示限制時間30秒。</p><p> 提示游戲已超時按回車鍵回到主界面重新選擇游戲。</p>&
23、lt;p><b> 選d后進入界面</b></p><p> 回到主界面后繼續(xù)按d,結(jié)束總游戲并計算游戲過程</p><p><b> 總共用時。</b></p><p> 程序相關(guān)源代碼及相應(yīng)注釋</p><p><b> 輸出函數(shù)</b></p>
24、<p> void show(char b[9][9])</p><p><b> {</b></p><p> printf("\t\t\t\t***************************\n");</p><p> printf("\t\t\t\t 推箱子游戲
25、 ");</p><p> printf("\n\t\t\t\t***************************\n");</p><p> printf("\t\t\t\t 人:★ 墻:■\n\t\t\t\t 箱子:◎ 目的地:□\n\t\t\t\t 按 d 鍵 退出游戲\n\t\t\t\t 限時30秒!
26、");</p><p> printf("\n\t\t\t\t***************************\n");</p><p> for(int i=0;i<9;i++) //使用循環(huán)將地圖轉(zhuǎn)換輸出</p><p><b> {</b></p>
27、<p> printf("\t\t\t\t ");</p><p> for(int k=0;k<9;k++)</p><p><b> {</b></p><p> if(b[i][k]=='#')</p><p><b> {<
28、/b></p><p> printf("■");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(b[i][k]==3)
29、</p><p><b> {</b></p><p> printf("□");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>
30、</p><p> if(b[i][k]==5)</p><p><b> {</b></p><p> printf("◎");</p><p><b> }</b></p><p><b> else</b></p
31、><p><b> {</b></p><p> if(b[i][k]==1)</p><p><b> {</b></p><p> printf("★");</p><p><b> }</b></p><
32、;p><b> else</b></p><p><b> {</b></p><p> if(b[i][k]=='!')</p><p><b> {</b></p><p> printf("⊙");</p>
33、<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> printf("%c ",b[i][k]);</p><p><b> }</b>&
34、lt;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p
35、><p> printf("\n");</p><p><b> }</b></p><p> printf("\t\t\t\t***************************\n");</p><p><b> }</b></p>&
36、lt;p> 移動函數(shù)(僅以向左代表) </p><p><b> 當(dāng)輸入d時</b></p><p> void move(char c[9][9],int *x,int *y,int X,int Y,int A,int B,int N,int M,char *t)</p><p><b> {</b><
37、;/p><p> *t=getch();</p><p> if(*t=='d')//遇到d返回</p><p><b> {</b></p><p><b> }</b></p><p><b> 向左移動</b></p&g
38、t;<p> if(*t==75)</p><p><b> {</b></p><p> if(c[*x][*y-1]=='#'||c[*x][*y-1]==5&&c[*x][*y-2]==5||c[*x][*y-1]==5&&</p><p> c[*x][*y-2]==
39、'!')//遇到墻或推兩個箱子</p><p><b> {</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p>
40、 if(c[*x][*y-1]=='!')//把箱子推出目的地</p><p><b> {</b></p><p> if(c[*x][*y-2]!=0)</p><p><b> {</b></p><p><b> }</b></p>
41、<p><b> else</b></p><p><b> {</b></p><p> c[*x][*y]=0;</p><p><b> *y-=1;</b></p><p> c[*x][*y]=1;</p><p> c
42、[*x][*y-1]=5;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(c[*x
43、][*y-1]==5&&c[*x][*y-2]!='#')//推箱子</p><p><b> {</b></p><p> if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]</p><p> ||c[*x][*y]==c[N][M]) //推著箱子離開目的地</p&
44、gt;<p><b> {</b></p><p> c[*x][*y]=3;</p><p><b> *y-=1;</b></p><p> c[*x][*y]=1;</p><p> c[*x][*y-1]=5;</p><p><b>
45、; }</b></p><p><b> else</b></p><p><b> {</b></p><p> c[*x][*y]=0;</p><p><b> *y-=1;</b></p><p> c[*x][*y]=1
46、;</p><p> c[*x][*y-1]=5;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p&
47、gt;<p> if(c[*x][*y-1]==5&&c[*x][*y-2]=='#')//推不動箱子</p><p><b> {</b></p><p><b> }</b></p><p><b> else</b></p>&
48、lt;p><b> {</b></p><p> if(c[*x][*y-1]==c[X][Y]||c[*x][*y-1]==c[A][B]</p><p> ||c[*x][*y-1]==c[N][M)//進到目的地</p><p><b> {</b></p><p> c[*x
49、][*y]=0;</p><p><b> *y-=1;</b></p><p> c[*x][*y]=1;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b&
50、gt;</p><p> if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]</p><p> ||c[*x][*y]==c[N][M]) //離開目的地</p><p><b> {</b></p><p> c[*x][*y]=3;</p><p>
51、<b> *y-=1;</b></p><p> c[*x][*y]=1;</p><p><b> }</b></p><p> else //走到空地</p><p><b> {</b></p><p> c[*x][*y]=0;&l
52、t;/p><p><b> *y-=1;</b></p><p> c[*x][*y]=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
53、<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子推到目的地</p><p><b>
54、 {</b></p><p> c[*x][*y-1]='!';</p><p><b> }</b></p><p><b> }</b></p><p><b> 設(shè)置背景函數(shù)</b></p><p> void
55、 map1()</p><p><b> {</b></p><p> time_t p,q,o;</p><p><b> time(&p);</b></p><p> int i=4,j=4,m=6,n=2,t=1,k=3;</p><p> syste
56、m("cls");//刷屏</p><p> system("color 1E");</p><p> int x=1,y=7;</p><p> char z,a[9][9]=</p><p> { /*為背景設(shè)置初始資料*/</p><p> {'#&
57、#39;,'#','#','#','#','#','#','#','#'},</p><p> {'#','#','#', 3 , 0 , 0 , 0 , 1 ,'#'},</p><p> {&
58、#39;#','#', 0 , 0 , 0 ,'#', 0 ,'#','#'},</p><p> {'#', 0 , 0 ,'#', 0 , 0 , 0 , 0 ,'#'},</p><p> {'#', 0 , 5 , 0 , 3 , 5 , 5
59、, 0 ,'#'},</p><p> {'#','#','#','#', 0 , 0 ,'#','#','#'},</p><p> {'#','#', 3 , 0 , 0 , 0 ,'#','#
60、9;,'#'},</p><p> {'#','#','#','#','#','#','#','#','#'},</p><p> {'#','#','#','#'
61、,'#','#','#','#','#'}</p><p><b> };</b></p><p> show(a);//調(diào)用輸出函數(shù)</p><p><b> loop:</b></p><p> move(a
62、,&x,&y,i,j,m,n,t,k,&z);</p><p> if(a[i][j]=='!'&&a[m][n]=='!'&&a[t][k]=='!')</p><p><b> {</b></p><p> system("
63、;cls");//刷屏</p><p><b> show(a);</b></p><p> printf("\t\t\t\t YOU ARE WIN!\n");</p><p><b> time(&q);</b></p><p> p
64、rintf("\t\t\t\t\t 用時%.3d秒\n",q-p);</p><p> printf("\t\t\t\t*******回車重 新選擇*******\n\t\t\t\t");</p><p><b> getch();</b></p><p><b> }</b>
65、;</p><p><b> else</b></p><p><b> {</b></p><p><b> time(&o);</b></p><p> if(z=='d')</p><p><b> {&
66、lt;/b></p><p><b> return;</b></p><p><b> }</b></p><p> if(o-p>30)</p><p><b> {</b></p><p> loop1:system(&q
67、uot;cls");//刷屏</p><p> printf("\t\t\t\t時間已過請重新回車選關(guān)!");</p><p> int g=getch();</p><p> if(g==13)//判斷是否為回車符</p><p><b> {</b></p><
68、;p><b> return;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> goto loop1;</p><p>
69、;<b> }</b></p><p><b> }</b></p><p> system("cls");//刷屏</p><p> show(a);//調(diào)用輸出函數(shù)</p><p> goto loop;</p><p><b>
70、 }</b></p><p><b> }</b></p><p><b> 主函數(shù)</b></p><p> void main(int argc,char*argv[])</p><p><b> {</b></p><p>
71、time_t a,b;</p><p><b> time(&a);</b></p><p> system("color 4E");</p><p><b> loop1:{</b></p><p> system("cls");//刷屏&
72、lt;/p><p> printf("\n\n\n\n\n\n\t\t\t\t歡迎進入推箱子游戲\n\n\t\t\t\t 請按a b c選擇游戲\n\n\t\t\t\t 按 d 鍵 結(jié)束");</p><p> int t=getch();</p><p> if(t=='d')</p><p>&l
73、t;b> {</b></p><p> printf("\n\t\t\t ");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
74、<p> if(t=='a')</p><p><b> {</b></p><p><b> map1();</b></p><p> goto loop1;</p><p><b> }</b></p><p>
75、; if(t=='b')</p><p><b> {</b></p><p><b> map2();</b></p><p> goto loop1;</p><p><b> }</b></p><p> if(t==
76、'c')</p><p><b> {</b></p><p><b> map3();</b></p><p> goto loop1;</p><p><b> }</b></p><p><b> else&l
77、t;/b></p><p><b> {</b></p><p> printf("\n\n\t\t\t\t 請重新輸入:");</p><p> goto loop1;</p><p><b> }</b></p><p><b
78、> }</b></p><p><b> }</b></p><p><b> time(&b);</b></p><p> printf("\n\n\n\n\t\t\t\t 游戲總共用時%.3d秒\n\t\t\t ",b-a);</p><
79、p> getch();//等待讀取回車符以結(jié)束程序</p><p><b> }</b></p><p><b> 致 謝</b></p><p> 在此報告結(jié)尾之際,謹(jǐn)感謝*老師及各位同學(xué)的幫助,讓我能夠在實踐中學(xué)到書本上沒有的知識。也感謝學(xué)校提供給我們這次寶貴的實踐機會,讓我們可以在實踐中尋找經(jīng)驗與能力
80、。</p><p> 懷念與老師和同學(xué)在一起的每一刻,期待下一次的合作早日到來!</p><p><b> 參考文獻</b></p><p> 1.《C程序設(shè)計(第三版)》, 譚浩強 編,清華大學(xué)出版社</p><p> 2.《Turbo C 2.0實用大全》, 常玉龍等 編寫,北京航空航天大學(xué)出版社</p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計--推箱子游戲
- 推箱子游戲課程設(shè)計
- 推箱子游戲課程設(shè)計
- 《c語言程序設(shè)計》課程設(shè)計推箱子
- 推箱子c課程設(shè)計報告
- javame課程設(shè)計-- 手機推箱子游戲
- 匯編語言推箱子課程設(shè)計
- c++推箱子課程設(shè)計報告
- java課程設(shè)計--經(jīng)典推箱子趣味游戲設(shè)計與實現(xiàn)
- 【畢業(yè)設(shè)計論文】基于c語言推箱子游戲設(shè)計畢業(yè)論文
- c語言課程設(shè)計-數(shù)組游戲
- c語言小游戲課程設(shè)計
- 推箱子任務(wù)計劃-C語言.docx
- c語言課程設(shè)計報告---游戲設(shè)計
- c語言課程設(shè)計----猜字游戲
- c語言課程設(shè)計報告-游戲2048
- c語言課程設(shè)計--猜數(shù)字游戲
- c語言課程設(shè)計--猜數(shù)字游戲
- c語言課程設(shè)計--猜數(shù)游戲
- c語言課程設(shè)計--- 21點游戲設(shè)計
評論
0/150
提交評論