2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論