版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計 報 告</p><p> 課程設(shè)計名稱:C語言課程設(shè)計</p><p> 課程設(shè)計題目:運動的小車動畫 </p><p><b> 目 錄</b></p><p> 第1章 需求分析1</p><p> 1.1題目的內(nèi)容與要求1</
2、p><p><b> 1.2開發(fā)工具1</b></p><p><b> 1.3題目分析1</b></p><p> 第2章 概要設(shè)計2</p><p><b> 2.1總體結(jié)構(gòu)2</b></p><p> 第3章 詳細設(shè)計3<
3、/p><p> 3.1主函數(shù)模塊3</p><p> 2.2圖形驅(qū)動模塊3</p><p> 2.3場景游戲模塊4</p><p> 3.4游戲過程模塊5</p><p> 3.5結(jié)束模塊模塊7</p><p> 第4章 調(diào)試分析8</p><p>
4、 第5章使用說明9</p><p><b> 參考文獻11</b></p><p> 附 錄(程序清單)12</p><p><b> 第1章 需求分析</b></p><p> 1.1題目的內(nèi)容與要求</p><p> 內(nèi)容:實現(xiàn)一個簡單動畫,屏幕
5、背景為藍色,畫一簡單小車。小車在屏中隨意移動。</p><p><b> 要求:</b></p><p> 1)實現(xiàn)簡單的游戲界面;</p><p> 2)對小車運動進行控制;</p><p> 3)熟練掌握基本的調(diào)試方法,并將程序調(diào)試通過;</p><p> 4)采用VC環(huán)境進行調(diào)試運
6、行。</p><p><b> 1.2開發(fā)工具</b></p><p> 操作系統(tǒng):WindowsXP SP2。</p><p> 硬件環(huán)境:CPUAMD3000+內(nèi)存1G ,硬盤 120G。</p><p> 軟件環(huán)境:TurboC。</p><p><b> 1.3題目分析
7、</b></p><p> 本程序首先分為四個模塊即編寫四個函數(shù),主程序按順序調(diào)用這四個函數(shù)最后掉用關(guān)閉圖形系統(tǒng)函數(shù),至此整個程序算是真正結(jié)束。題目程序設(shè)計思想分析是:先設(shè)置背景色和前景色,確定小車的初始位置和車頭方向,畫出小車,在沒有按鍵的情況下,進入一個循環(huán)系統(tǒng)小車自動向前運動,直到撞墻,有按鍵的情況下,判斷按鍵的性質(zhì)確定車頭的方向,計算小車的新坐標,進入另一個畫車循環(huán),一直循環(huán),直到結(jié)束。&l
8、t;/p><p><b> 第2章 概要設(shè)計</b></p><p><b> 2.1總體結(jié)構(gòu)</b></p><p> 本程序主要分為五個模塊:主函數(shù)模塊,圖行驅(qū)動模塊,場景游戲模塊,游戲過程模塊,結(jié)束模塊。主函數(shù)模塊實現(xiàn)函數(shù)調(diào)用。圖行驅(qū)動模塊對圖行操作系統(tǒng)進行初使化。場景游戲模塊建立簡單的游戲界面。游戲過程模塊畫小
9、車,并通過鍵盤控制小車的運動。結(jié)束模塊關(guān)閉作圖系統(tǒng),結(jié)束程序(如圖2.1)。</p><p><b> 圖2.1功能模塊</b></p><p> 1 主函數(shù)模塊:本模塊主要實現(xiàn)函數(shù)的調(diào)用,一共四個函數(shù)。</p><p> 2 圖行驅(qū)動模塊:本模塊主要是實現(xiàn)對圖形系統(tǒng)進形初始化以及做出簡單界面,設(shè)置屏幕背景顏色,還有顯示游戲開始時的菜單。
10、</p><p> 3場景游戲模塊:本模塊主要是實現(xiàn)畫出游戲界面,利用循環(huán)畫出四面墻,屏幕背景為藍色。</p><p> 4游戲過程模塊:本模塊主要是實現(xiàn)畫出初始小車及顯示其位置,用swich-case()來控制小車的移動情況。</p><p> 5結(jié)束模塊:本模塊主要是實現(xiàn)最后清屏以及關(guān)閉作圖系統(tǒng),顯示游戲結(jié)束菜單。</p><p>
11、<b> 第3章 詳細設(shè)計</b></p><p><b> 3.1主函數(shù)模塊</b></p><p> 控制整個程序的運行,控制菜單操作,通過主函數(shù)模塊分別調(diào)用各個模塊,實現(xiàn)各項功能,流程如圖3.1所示。</p><p> 圖3.1 主模塊流程圖</p><p> 主函數(shù)主要完成函數(shù)的
12、調(diào)用,一共有四個函數(shù):畫圖系統(tǒng)初始化函數(shù),畫開始游戲界面函數(shù),游戲過程函數(shù),關(guān)閉圖形系統(tǒng)函數(shù)。</p><p><b> 2.2圖形驅(qū)動模塊</b></p><p> 此模塊完成圖形操做系統(tǒng)初始化,選擇適配器,設(shè)置背景顏色及前景色,顯示進入游戲界面,流程如圖3.2所示。</p><p> 圖3.2 顯示模塊流程圖</p>
13、<p> 圖形系統(tǒng)初始化:程序自動在當前選擇適配器,背景色設(shè)為藍色,前景色為白色,畫四面墻為游戲開始界面,outtextxy()函數(shù)確定字符顯示位置及其內(nèi)容。</p><p><b> 2.3場景游戲模塊</b></p><p> 此模塊主要完成在完成圖形初始化后畫出游戲界面,該游戲界面為四面墻,屏幕背景為藍色,畫墻面用了兩個for循環(huán)完成,流程如圖3
14、.3所示。</p><p> 圖3.3場景模塊流程圖</p><p><b> 3.4游戲過程模塊</b></p><p> 此程序是本游戲的主體部分,主要完成游戲的運動過程,首先確定小車的位置和車頭方向,接著在這個位置畫小車,利用循環(huán)畫小車,在沒有按鍵情況下,進入畫小車循環(huán),直到小車撞墻結(jié)束整個程序。如果有按鍵則判斷按鍵的數(shù)值,計算新的
15、坐標,再判斷小車頭是否撞墻,如果撞墻則結(jié)束循環(huán)顯示結(jié)束出結(jié)束界面的內(nèi)容,如果不 撞墻則進入畫小車循環(huán),接著進入有沒有按鍵的循環(huán),直到整個程序結(jié)束為止。流程如圖3.4所示。</p><p> 圖3.4游戲模塊流程圖</p><p><b> 3.5結(jié)束模塊模塊</b></p><p> 此模塊主要完成關(guān)閉圖形操作系統(tǒng),流程如圖3.5所示。
16、</p><p> 圖3.5結(jié)束模塊流程圖</p><p><b> 第4章 調(diào)試分析</b></p><p> 問題1:由于在編源代碼的時候我沒有掌握好屏幕的坐標,導(dǎo)致小車畫不出來,也答不到我想要的停止效果。</p><p> 解決辦法:我就采用嘗試法修改錯誤,我的程序中有四個坐標,我就已次改變一個坐標,一次
17、改變一點坐標的大小,最終完成了我想要的效果。</p><p> 問題2:小車運動時,小車運動的前一個位置仍然有小車圖像。</p><p> 解決辦法:在代碼適當?shù)奈恢眠m當加入cleardevice();函數(shù),使小車在屏幕上運行軌跡正確顯示。</p><p> 問題3:出現(xiàn)一些未定義的參數(shù)。</p><p> 解決方法:由于我的粗心且C
18、 語言大小敏感,我的錯誤就是弄錯了字母的大小寫。改了大小寫就可以了。</p><p><b> 問題4:小車不動。</b></p><p> 解決方法:函數(shù)調(diào)用順序出現(xiàn)了錯誤,導(dǎo)致一些函數(shù)無法運行,換了順序序就像我想象的運行了。</p><p><b> 使用說明 </b></p><p>
19、 以下圖5.1和圖5.2為程序執(zhí)行后小車運動的畫面。背景為藍色,小車為紅色。圖5.3為游戲結(jié)束界面圖。</p><p><b> 圖5.1小車運動圖</b></p><p><b> 圖5.2小車運動圖</b></p><p> 圖5.3 結(jié)束時的界面</p><p><b> 參
20、考文獻</b></p><p> [1]張長海.C語言程設(shè)計[M],北京高等教育出版社,2006</p><p> [2]劉紅偉.C++游戲開發(fā)[M],機械工業(yè)出版社,2006</p><p> [3]劉變紅.C語言高級編程及實例剖析[M],人民郵電出版社,2007</p><p> [4]石祥濱.C語言程序設(shè)計基礎(chǔ)與實踐
21、[M],遼寧大學(xué)出版社,2004</p><p> [5]譚浩強.C程序設(shè)計(第二版)[M],清華大學(xué)出版社,2000</p><p> 附 錄(程序清單)</p><p> #define N 200</p><p> #include <graphics.h></p><p> #incl
22、ude <stdlib.h></p><p> #include <dos.h></p><p> #define LEFT 0x4b00</p><p> #define RIGHT 0x4d00</p><p> #define DOWN 0x5000</p><p> #defi
23、ne UP 0x4800</p><p> #define ESC 0x011b</p><p> int i,key;</p><p> int gamespeed=60000;/*游戲速度自己調(diào)整*/</p><p> struct car</p><p><b> {</b><
24、;/p><p><b> int x[N];</b></p><p><b> int y[N];</b></p><p> int node;/*小車的節(jié)數(shù)*/</p><p> int direction;/*小車移動方向*/</p><p><b> }
25、car;</b></p><p> void Init(void);/*圖形驅(qū)動*/</p><p> void Close(void);/*圖形結(jié)束*/</p><p> void DrawK(void);/*開始畫面*/</p><p> void GameOver(void);/*結(jié)束*/</p>&l
26、t;p> void GamePlay(void);/*具體過程*/</p><p><b> /*主函數(shù)*/</b></p><p> void main(void)</p><p><b> {</b></p><p> Init();/*圖形驅(qū)動*/</p><
27、;p> DrawK();/*開始畫面*/</p><p> GamePlay();/*具體過程*/</p><p> Close();/*圖形結(jié)束*/</p><p><b> }</b></p><p><b> /*圖形驅(qū)動*/</b></p><p>
28、 void Init(void)</p><p><b> {</b></p><p> int gd=DETECT,gm;</p><p> initgraph(&gd,&gm,"c:\\tc");</p><p> cleardevice();</p><
29、;p><b> }</b></p><p> /*開始畫面,左上角坐標為(50,40),右下角坐標為(610,460)的圍墻*/</p><p> void DrawK(void)</p><p><b> {</b></p><p> setbkcolor(BLUE);</p
30、><p> setcolor(11);</p><p> setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/</p><p> for(i=50;i<=600;i+=10)/*畫圍墻*/</p><p><b> {</b></p><p>
31、 rectangle(i,40,i+10,49); /*上邊*/</p><p> rectangle(i,451,i+10,460);/*下邊*/</p><p><b> }</b></p><p> for(i=40;i<=450;i+=10)</p><p><b> {</b>
32、;</p><p> rectangle(50,i,59,i+10); /*左邊*/</p><p> rectangle(601,i,610,i+10);/*右邊*/</p><p><b> }</b></p><p><b> }</b></p><p> v
33、oid GamePlay(void)</p><p><b> {</b></p><p> car.direction=1;/*方向往右*/</p><p> car.x[0]=100;car.y[0]=100;/*車頭*/</p><p> car.x[1]=110;car.y[1]=100;</p&g
34、t;<p> car.node=4;/*節(jié)數(shù)*/</p><p><b> while(1){</b></p><p> while(!kbhit())/*在沒有按鍵的情況下,小車自己移動身體*/</p><p> {for(i=car.node-1;i>0;i--)/*小車的每個環(huán)節(jié)往前移動,也就是小車運行的關(guān)鍵算
35、法*/</p><p> {car.x[i]= car.x[i-1];</p><p> car.y[i]=car.y[i-1];}</p><p> /*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動車頭*/</p><p> switch(car.direction)</p><p><
36、b> {</b></p><p> case 1:car.x[0]+=20;break;</p><p> case 2: car.x[0]-=20;break;</p><p> case 3: car.y[0]-=20;break;</p><p> case 4: car.y[0]+=20;break;<
37、;/p><p><b> }</b></p><p> if(car.x[0]<55||car.x[0]>595||car.y[0]<65||</p><p> car.y[0]>455)/*小車是否撞到墻壁*/</p><p> {GameOver();/*本次演示結(jié)束*/</p>
38、;<p><b> getch();}</b></p><p> setcolor(4);/*畫出小車*/</p><p> for(i=0;i<car.node;i++)</p><p> rectangle(car.x[i],car.y[i],car.x[i]+20,</p><p>
39、car.y[i]-20);</p><p> delay(gamespeed);</p><p> setcolor(BLUE);/*用背景色去除車的的最后一節(jié)*/</p><p> rectangle(car.x[car.node-1],car.y[car.node-1],</p><p> car.x[car.node-1]+20
40、,car.y[car.node-1]-20);</p><p> /*endwhile(!kbhit)*/</p><p><b> } </b></p><p> key=bioskey(0);/*接收按鍵*/</p><p> if(key==ESC)/*按ESC鍵退出*/</p><p
41、> GameOver(); </p><p><b> else</b></p><p> if(key==UP&&car.direction!=4)</p><p> /*判斷是否往相反的方向移動*/</p><p> car.direction=3;</p><p
42、><b> else</b></p><p> if(key==RIGHT&&car.direction!=2)</p><p> car.direction=1;</p><p><b> else</b></p><p> if(key==LEFT&&am
43、p;car.direction!=1)</p><p> car.direction=2;</p><p><b> else</b></p><p> if(key==DOWN&&car.direction!=3)</p><p> car.direction=4;</p><
44、;p> }/*endwhile(1)*/</p><p><b> } </b></p><p> void GameOver(void)</p><p> { cleardevice(); </p><p> setcolor(RED);</p><p> settexts
45、tyle(0,0,4);</p><p> outtextxy(200,200,"GAME OVER");</p><p><b> Close(); </b></p><p><b> }</b></p><p><b> /*圖形結(jié)束*/</b>
46、</p><p> void Close(void)</p><p><b> { </b></p><p><b> getch();</b></p><p> closegraph();</p><p><b> }</b></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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計--c語言投票程序
- c語言程序課程設(shè)計
- c語言課程設(shè)計源程序
- c課程設(shè)計報告-- c語言程序設(shè)計
- c語言程序設(shè)計課程設(shè)計
- 《c語言程序設(shè)計》課程設(shè)計報告
- c語言程序設(shè)計課程設(shè)計報告
- c語言課程設(shè)計
- c語言課程設(shè)計
- c語言課程設(shè)計
- c++課程設(shè)計--c++程序設(shè)計語言
- c語言程序課程設(shè)計—歌手比賽系統(tǒng)
- 擲骰子游戲-c語言程序課程設(shè)計
- c語言程序課程設(shè)計—歌手比賽系統(tǒng)
- c語言程序課程設(shè)計-猜數(shù)字游戲
- c語言程序課程設(shè)計--模擬螞蟻覓食
- c語言程序課程設(shè)計--文件存取練習(xí)
- 【課程設(shè)計】c語言課程設(shè)計
- c語言語言課程設(shè)計報告
- 《c語言程序設(shè)計》課程設(shè)計推箱子
評論
0/150
提交評論