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