C語言課程設(shè)計運動的小車動畫_第1頁
C語言課程設(shè)計運動的小車動畫_第2頁
C語言課程設(shè)計運動的小車動畫_第3頁
C語言課程設(shè)計運動的小車動畫_第4頁
C語言課程設(shè)計運動的小車動畫_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、xxx航空工業(yè)學(xué)院 課課 程程 設(shè)設(shè) 計計 報報 告告 課程設(shè)計名稱:c 語言課程設(shè)計語言課程設(shè)計 課程設(shè)計題目:運動的小車動畫 院(系):計算機學(xué)院 專 業(yè):網(wǎng)絡(luò)工程 班 級: 學(xué) 號: 姓 名: 指導(dǎo)教師: 完成日期:2009年07月17日 目目 錄錄 第第 1 章章 需求分析需求分析.1 1.1 題目的內(nèi)容與要求.1 1.2 開發(fā)工具.1 1.3 題目分析.1 第第 2 章章 概要設(shè)計概要設(shè)計.2 2.1 總體結(jié)構(gòu).2 第第 3 章章 詳細設(shè)計詳細設(shè)計.3 3.1 主函數(shù)模塊.3 2.2 圖形驅(qū)動模塊.3 2.3 場景游戲模塊.4 3.4 游戲過程模塊.5 3.5 結(jié)束模塊模塊.7 第第

2、 4 章章 調(diào)試分析調(diào)試分析.8 第第 5 章章使用說明使用說明.9 參考文獻參考文獻.11 附附 錄(程序清單)錄(程序清單).12 第 1 章 需求分析 1.1 題目的內(nèi)容與要求題目的內(nèi)容與要求 內(nèi)容:實現(xiàn)一個簡單動畫,屏幕背景為藍色,畫一簡單小車。小車在屏中隨 意移動。 要求: 1)實現(xiàn)簡單的游戲界面; 2)對小車運動進行控制; 3)熟練掌握基本的調(diào)試方法,并將程序調(diào)試通過; 4)采用 vc 環(huán)境進行調(diào)試運行。 1.2 開發(fā)工具開發(fā)工具 操作系統(tǒng):windowsxp sp2。 硬件環(huán)境:cpuamd3000+內(nèi)存 1g ,硬盤 120g。 軟件環(huán)境:turboc。 1.3 題目分析題目分

3、析 本程序首先分為四個模塊即編寫四個函數(shù),主程序按順序調(diào)用這四個函數(shù)最 后掉用關(guān)閉圖形系統(tǒng)函數(shù),至此整個程序算是真正結(jié)束。題目程序設(shè)計思想分析 是:先設(shè)置背景色和前景色,確定小車的初始位置和車頭方向,畫出小車,在沒 有按鍵的情況下,進入一個循環(huán)系統(tǒng)小車自動向前運動,直到撞墻,有按鍵的情 況下,判斷按鍵的性質(zhì)確定車頭的方向,計算小車的新坐標(biāo),進入另一個畫車循 環(huán),一直循環(huán),直到結(jié)束。 第 2 章 概要設(shè)計 2.1 總體結(jié)構(gòu)總體結(jié)構(gòu) 本程序主要分為五個模塊:主函數(shù)模塊,圖行驅(qū)動模塊,場景游戲模塊,游 戲過程模塊,結(jié)束模塊。主函數(shù)模塊實現(xiàn)函數(shù)調(diào)用。圖行驅(qū)動模塊對圖行操作系 統(tǒng)進行初使化。場景游戲模塊

4、建立簡單的游戲界面。游戲過程模塊畫小車,并通 過鍵盤控制小車的運動。結(jié)束模塊關(guān)閉作圖系統(tǒng),結(jié)束程序(如圖 2.1) 。 小車動畫程序 場 景 游 戲 模 塊 游 戲 過 程 模 塊 主 模 塊 圖 形 驅(qū) 動 模 塊 結(jié) 束 模 塊 圖圖 2.1 功能模塊功能模塊 1 主函數(shù)模塊:本模塊主要實現(xiàn)函數(shù)的調(diào)用,一共四個函數(shù)。 2 圖行驅(qū)動模塊:本模塊主要是實現(xiàn)對圖形系統(tǒng)進形初始化以及做出簡單界 面,設(shè)置屏幕背景顏色,還有顯示游戲開始時的菜單。 3 場景游戲模塊:本模塊主要是實現(xiàn)畫出游戲界面,利用循環(huán)畫出四面墻, 屏幕背景為藍色。 4 游戲過程模塊:本模塊主要是實現(xiàn)畫出初始小車及顯示其位置,用 sw

5、ich- case()來控制小車的移動情況。 5 結(jié)束模塊:本模塊主要是實現(xiàn)最后清屏以及關(guān)閉作圖系統(tǒng),顯示游戲結(jié)束 菜單。 第 3 章 詳細設(shè)計 3.1 主函數(shù)模塊主函數(shù)模塊 控制整個程序的運行,控制菜單操作,通過主函數(shù)模塊分別調(diào)用各個模塊, 實現(xiàn)各項功能,流程如圖 3.1 所示。 調(diào)用 init()函數(shù) 調(diào)用 drawplay()函數(shù) 調(diào)用 gameplay()函數(shù) 調(diào)用 close()函數(shù) 開始 結(jié)束 圖圖 3.1 主模塊流程圖主模塊流程圖 主函數(shù)主要完成函數(shù)的調(diào)用,一共有四個函數(shù):畫圖系統(tǒng)初始化函數(shù),畫開 始游戲界面函數(shù),游戲過程函數(shù),關(guān)閉圖形系統(tǒng)函數(shù)。 2.2 圖形驅(qū)動模塊圖形驅(qū)動模塊

6、 此模塊完成圖形操做系統(tǒng)初始化,選擇適配器,設(shè)置背景顏色及前景色,顯示 進入游戲界面,流程如圖 3.2 所示。 initgraph( setbkcolor(blue) etcolor(11); setlinestyle(); i=50 i=600 rectangle(i,40,i+10,49) rectangle(i,451,i+10,460) i+ i=40 i=450 rectangle(50,i,59,i+10) rectangle(601,i,610,i+10 ) i+ y n y n 結(jié)束 開始 圖圖 3.3 場景模塊流程圖場景模塊流程圖 3.4 游戲過程模塊游戲過程模塊 此程序是本

7、游戲的主體部分,主要完成游戲的運動過程,首先確定小車的位 置和車頭方向,接著在這個位置畫小車,利用循環(huán)畫小車,在沒有按鍵情況下, 進入畫小車循環(huán),直到小車撞墻結(jié)束整個程序。如果有按鍵則判斷按鍵的數(shù)值, 計算新的坐標(biāo),再判斷小車頭是否撞墻,如果撞墻則結(jié)束循環(huán)顯示結(jié)束出結(jié)束界 面的內(nèi)容,如果不 撞墻則進入畫小車循環(huán),接著進入有沒有按鍵的循環(huán),直到 整個程序結(jié)束為止。流程如圖 3.4 所示。 進入 設(shè)置小車初始方 向和位置 i=0 i4 畫第i節(jié)小車 i- 沒有按鍵 i=3 i=0 car.xi=car.xi-1; car.yi=car.yi-1; i-; 判斷按鍵等于 esc key=up int

8、 gamespeed=60000;/*游戲速度自己調(diào)整*/ struct car int xn; int yn; int node;/*小車的節(jié)數(shù)*/ int direction;/*小車移動方向*/ car; void init(void);/*圖形驅(qū)動*/ void close(void);/*圖形結(jié)束*/ void drawk(void);/*開始畫面*/ void gameover(void);/*結(jié)束*/ void gameplay(void);/*具體過程*/ /*主函數(shù)*/ void main(void) init();/*圖形驅(qū)動*/ drawk();/*開始畫面*/ game

9、play();/*具體過程*/ close();/*圖形結(jié)束*/ /*圖形驅(qū)動*/ void init(void) int gd=detect,gm; initgraph( cleardevice(); /*開始畫面,左上角坐標(biāo)為(50,40),右下角坐標(biāo)為(610,460)的圍墻*/ void drawk(void) setbkcolor(blue); setcolor(11); setlinestyle(solid_line,0,thick_width);/*設(shè)置線型*/ for(i=50;i=600;i+=10)/*畫圍墻*/ rectangle(i,40,i+10,49); /*上邊*

10、/ rectangle(i,451,i+10,460);/*下邊*/ for(i=40;i0;i-)/*小車的每個環(huán)節(jié)往前移動,也就是小車運行的關(guān) 鍵算法*/ car.xi= car.xi-1; car.yi=car.yi-1; /*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動車頭*/ switch(car.direction) case 1:car.x0+=20;break; case 2: car.x0-=20;break; case 3: car.y0-=20;break; case 4: car.y0+=20;break; if(car.x0595|car.y0455)

11、/*小車是否撞到墻壁*/ gameover();/*本次演示結(jié)束*/ getch(); setcolor(4);/*畫出小車*/ for(i=0;icar.node;i+) rectangle(car.xi,car.yi,car.xi+20, car.yi-20); delay(gamespeed); setcolor(blue);/*用背景色去除車的的最后一節(jié)*/ rectangle(car.xcar.node-1,car.ycar.node-1, car.xcar.node-1+20,car.ycar.node-1-20); /*endwhile(!kbhit)*/ key=bioskey

12、(0);/*接收按鍵*/ if(key=esc)/*按esc鍵退出*/ gameover(); else if(key=up else if(key=right else if(key=left else if(key=down /*endwhile(1)*/ void gameover(void) cleardevice(); setcolor(red); settextstyle(0,0,4); outtextxy(200,200,game over); close(); /*圖形結(jié)束*/ void close(void) getch(); closegraph(); 課程設(shè)計總結(jié):課程設(shè)

13、計總結(jié): 這次 c 語言課程設(shè)計是我的第一次編寫一個相對平時實驗課寫的小程序大 得多也復(fù)雜得多的程序。我的題目是小車動畫,屬于游戲類,用到的函數(shù)全是新的, 這說明我必須自修,對我來說是一個挑戰(zhàn)。 在這一個暑假的的開發(fā)工作中,雖然遇到不少困難和難題,但是我都以堅 堅持不懈的毅力和頑強的拼搏精神一一解決了它們。雖然暑假沒玩好,看書看 到眼睛疼,但是當(dāng)小車動畫程序最終按自己的意圖執(zhí)行時的欣慰亦足以彌補。 通過此次的課程設(shè)計,我也意識到了自身的不足。無論是從程序模塊化還 是系統(tǒng)穩(wěn)定性都還有很大的改進優(yōu)化余地,自己 c 語言知識學(xué)的太少,以后學(xué)習(xí) 應(yīng)該開闊眼界,應(yīng)當(dāng)多閱讀他人的優(yōu)秀程序,取人所長,補己之短

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論