C語(yǔ)言課程設(shè)計(jì)運(yùn)動(dòng)的小車(chē)動(dòng)畫(huà)_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)運(yùn)動(dòng)的小車(chē)動(dòng)畫(huà)_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)運(yùn)動(dòng)的小車(chē)動(dòng)畫(huà)_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)運(yùn)動(dòng)的小車(chē)動(dòng)畫(huà)_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)運(yùn)動(dòng)的小車(chē)動(dòng)畫(huà)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

6、 此模塊完成圖形操做系統(tǒng)初始化,選擇適配器,設(shè)置背景顏色及前景色,顯示 進(jìn)入游戲界面,流程如圖 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é)束 開(kāi)始 圖圖 3.3 場(chǎng)景模塊流程圖場(chǎng)景模塊流程圖 3.4 游戲過(guò)程模塊游戲過(guò)程模塊 此程序是本

7、游戲的主體部分,主要完成游戲的運(yùn)動(dòng)過(guò)程,首先確定小車(chē)的位 置和車(chē)頭方向,接著在這個(gè)位置畫(huà)小車(chē),利用循環(huán)畫(huà)小車(chē),在沒(méi)有按鍵情況下, 進(jìn)入畫(huà)小車(chē)循環(huán),直到小車(chē)撞墻結(jié)束整個(gè)程序。如果有按鍵則判斷按鍵的數(shù)值, 計(jì)算新的坐標(biāo),再判斷小車(chē)頭是否撞墻,如果撞墻則結(jié)束循環(huán)顯示結(jié)束出結(jié)束界 面的內(nèi)容,如果不 撞墻則進(jìn)入畫(huà)小車(chē)循環(huán),接著進(jìn)入有沒(méi)有按鍵的循環(huán),直到 整個(gè)程序結(jié)束為止。流程如圖 3.4 所示。 進(jìn)入 設(shè)置小車(chē)初始方 向和位置 i=0 i4 畫(huà)第i節(jié)小車(chē) i- 沒(mé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;/*小車(chē)的節(jié)數(shù)*/ int direction;/*小車(chē)移動(dòng)方向*/ car; void init(void);/*圖形驅(qū)動(dòng)*/ void close(void);/*圖形結(jié)束*/ void drawk(void);/*開(kāi)始畫(huà)面*/ void gameover(void);/*結(jié)束*/ void gameplay(void);/*具體過(guò)程*/ /*主函數(shù)*/ void main(void) init();/*圖形驅(qū)動(dòng)*/ drawk();/*開(kāi)始畫(huà)面*/ game

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

10、/ rectangle(i,451,i+10,460);/*下邊*/ for(i=40;i0;i-)/*小車(chē)的每個(gè)環(huán)節(jié)往前移動(dòng),也就是小車(chē)運(yùn)行的關(guān) 鍵算法*/ car.xi= car.xi-1; car.yi=car.yi-1; /*1,2,3,4表示右,左,上,下四個(gè)方向,通過(guò)這個(gè)判斷來(lái)移動(dòng)車(chē)頭*/ 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、/*小車(chē)是否撞到墻壁*/ gameover();/*本次演示結(jié)束*/ getch(); setcolor(4);/*畫(huà)出小車(chē)*/ for(i=0;icar.node;i+) rectangle(car.xi,car.yi,car.xi+20, car.yi-20); delay(gamespeed); setcolor(blue);/*用背景色去除車(chē)的的最后一節(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è)計(jì)總結(jié):課程設(shè)

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論