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

下載本文檔

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

文檔簡介

1、<p>  《高級語言程序設(shè)計》</p><p><b>  課程設(shè)計報告</b></p><p><b>  計算機與信息工程系</b></p><p>  2013年6 月 28日</p><p> 學(xué)號1208010245</p><p><b> 

2、 目錄</b></p><p>  1 設(shè)計內(nèi)容及要求1</p><p>  1.1 設(shè)計內(nèi)容1</p><p>  1.2 設(shè)計任務(wù)及要求1</p><p><b>  2概要設(shè)計2</b></p><p>  2.1 系統(tǒng)的功能簡介2</p><p&g

3、t;  2.2 總體程序框圖2</p><p>  3設(shè)計過程或程序代碼3</p><p>  3.1各個模塊的程序流程圖3</p><p>  3.2關(guān)鍵代碼加以分析4</p><p>  4設(shè)計結(jié)果與分析7</p><p><b>  5小結(jié)8</b></p><

4、;p><b>  致謝9</b></p><p><b>  參考文獻10</b></p><p><b>  附:源程序11</b></p><p><b>  設(shè)計內(nèi)容及要求</b></p><p><b>  1.1 設(shè)計內(nèi)容&

5、lt;/b></p><p>  《高射炮打飛機游戲》主要根據(jù)課程設(shè)計要求進行設(shè)計,并了解了游戲進行的流程,該系統(tǒng)功能主要包括以下模塊:</p><p>  游戲控制函數(shù),用來設(shè)置背景以及控制移動。</p><p>  設(shè)置是否繼續(xù)游戲函數(shù),當(dāng)玩家有事暫停時提示詢問是否繼續(xù)。</p><p>  輸出函數(shù),輸出該游戲一切用到的數(shù)據(jù)。&l

6、t;/p><p>  子彈移動函數(shù),控制子彈移動來打敵機以獲取得分。</p><p>  飛機移動函數(shù),利用左右上快捷鍵移動飛機打敵人。</p><p>  設(shè)置函數(shù),供玩家選擇敵機密度,飛行快慢,游戲界面的大小等數(shù)據(jù)。</p><p>  菜單函數(shù),顯示開始界面。</p><p>  1.2 設(shè)計任務(wù)及要求 </p

7、><p>  主要利用c語言函數(shù)語句設(shè)計開發(fā)一個小游戲,可以實現(xiàn)炮彈發(fā)射,飛機移動來打射敵機,繼而獲得勝利。地面對高空飛過的飛機進行有提前量的射擊,顯示射擊效果并記分。該程序包含了不同的功能,對原來的程序作出了很大的改進,用到的主要語句有g(shù)etche語句、for語句、while語句printf語句、switch語句等等,添加了顏色函數(shù),實現(xiàn)了諸多功能。</p><p>  要求:課程設(shè)計是為了

8、讓我們對所學(xué)知識有進一步的了解和掌握,能運用所學(xué)的C語言編寫簡單算法,簡單的C程序設(shè)計(順序程序、選擇結(jié)構(gòu)程序、循環(huán)控制程序),用數(shù)組存放數(shù)據(jù),并運用各種函數(shù)及函數(shù)知識來編寫一個完整的符合題目要求的程序,將程序調(diào)試出成功的結(jié)果。由此提高了我們運用C語言知識的能力,初步了解了軟件開發(fā)的一般方法和步驟。</p><p><b>  2概要設(shè)計</b></p><p>  

9、2.1 系統(tǒng)的功能簡介</p><p>  該系統(tǒng)主要功能是通過c語言編寫一個射擊類的打飛機小游戲,可以通過鍵盤來進行游戲,操作方法是“a”“d”“w”或者“←”“↑”“→”來控制,擊中敵機可獲得積分,被敵機撞中死亡一次,每次游戲有3次生還機會,游戲結(jié)束后可選擇是否重新開始游戲。</p><p>  2.2 總體程序框圖</p><p>  圖2.1總體程序程序框圖

10、</p><p>  圖2.2游戲參數(shù)函數(shù)設(shè)計</p><p>  3設(shè)計過程或程序代碼</p><p>  3.1各個模塊的程序流程圖</p><p>  1)主函數(shù)程序流程圖及運行界面</p><p>  a.主函數(shù)程序流程圖(N—S圖)</p><p>  圖3.1主函數(shù)流程圖</p

11、><p>  簡單說明:該功能主要給用戶顯示一個進入界面,告訴用戶有哪些功能能執(zhí)行。下面是顯示給用戶的界面。(如圖3.2)</p><p><b>  b.主函數(shù)運行界面</b></p><p>  圖3.2 游戲界面設(shè)置</p><p>  3.2關(guān)鍵代碼加以分析</p><p><b>

12、  1)游戲控制函數(shù)</b></p><p>  void run()</p><p>  { system("color 2e");//設(shè)置背景顏色</p><p>  int i=0,j=0;</p><p>  scr[21][pl]=1; //我方飛機初始位置</p><p> 

13、 scr[0][5]=3; </p><p>  while(death<3) //限制死亡次數(shù)</p><p>  { if(kbhit())</p><p>  switch(getch())//控制左右移動</p><p>  { case left:</p><p><b>  case &

14、#39;a':</b></p><p>  case 'A':if(pl>0)</p><p>  scr[21][pl]=0,scr[21][--pl]=1;break;</p><p>  case right:</p><p><b>  case 'd':</

15、b></p><p>  case 'D':if(pl<width-2)</p><p>  scr[21][pl]=0,scr[21][++pl]=1;break;</p><p><b>  case up:</b></p><p><b>  case 'W':

16、</b></p><p>  case 'w':scr[20][pl]=2;break;</p><p>  case 27 :exit(0);break;</p><p><b>  }</b></p><p>  if(++j%density==0)//控制生產(chǎn)敵機的速度</p>

17、;<p><b>  { j=0;</b></p><p>  srand(time(NULL));//產(chǎn)生隨機數(shù)</p><p>  scr[0][rand()%width]=3;//生成隨機敵方飛機</p><p><b>  }</b></p><p>  if(++i%spee

18、d==0)//控制敵機移動速度,相對于子彈移動速度</p><p>  movepla(scr);//飛機移動</p><p>  movebul(scr);//子彈移動</p><p>  print(scr);//繪制游戲畫面</p><p><b>  } </b></p><p>  本段

19、函數(shù)是對整個游戲進行的一個控制,以確保程序能供用戶使用。</p><p>  2)設(shè)置游戲是否繼續(xù)</p><p><b>  void yn()</b></p><p>  { system("cls");</p><p>  system("color 2e");</p&

20、gt;<p>  printf("\n");</p><p>  printf("\n");</p><p>  printf("\t\t\t\t *****GAME OVER*****\n\a");</p><p>  printf("\n");</p>&

21、lt;p>  printf("\n");</p><p>  printf("\t\t *****游***戲***結(jié)***束***** \n\n\n");</p><p>  printf("\t\t\t按y鍵繼續(xù)游戲,n鍵退出游戲(y/n)?\n");</p><p>  prin

22、tf("\t\t\t");</p><p>  switch(getch())//提示是否要繼續(xù)游戲</p><p>  { case 'y':</p><p>  case 'Y':death=0,score=0,run();break;</p><p><b>  case &

23、#39;n':</b></p><p>  case 'N':break;</p><p>  default :exit(0);break;</p><p><b>  }</b></p><p><b>  }</b></p><p>

24、<b>  圖3.3 詢問設(shè)置</b></p><p>  當(dāng)游戲被暫停時,程序不知道用戶的意圖,故寫此程序來詢問是否繼續(xù)游戲,以防游戲結(jié)束銷毀了正在進行的游戲。</p><p><b>  3)子彈移動函數(shù)</b></p><p>  void movebul(int a[][N])</p><p&g

25、t;  { int i,j;</p><p>  for(i=0;i<22;i++)</p><p>  for(j=0;j<width;j++)</p><p>  { if(i==0&&a[i][j]==2)</p><p>  a[i][j]=0;</p><p>  if(a[i

26、][j]==2)</p><p>  { if(a[i-1][j]==3)//加分</p><p>  { score+=1;</p><p>  printf("\7");</p><p><b>  }</b></p><p>  a[i][j]=0,a[i-1][j]=2

27、;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  在打飛機游戲中需要瞄準(zhǔn)再射擊這樣才能打中目標(biāo),通過這段程序來控制子彈移動,可以打中更多敵機,獲得高分。</p><

28、p><b>  4設(shè)計結(jié)果與分析</b></p><p>  當(dāng)把程序?qū)懞貌⑦M行調(diào)試時,并不是一帆風(fēng)順的,總會遇到很多在調(diào)試時遇到的錯誤。</p><p>  1)首先在定義函數(shù)時,不能輸入漢字。否則會程序會顯示錯誤。</p><p>  2)前后定義變量要統(tǒng)一。</p><p>  3)如果要調(diào)用添加函數(shù),修改函

29、數(shù),修改函數(shù),查找函數(shù),統(tǒng)計函數(shù)等要在主函數(shù)前面進行申明。否則會顯示警告。</p><p>  4)對背景顏色設(shè)置的時候,當(dāng)你輸入的顏色在內(nèi)存中不存在時,運行程序過后,系統(tǒng)會告訴你相應(yīng)的顏色符號常數(shù)及數(shù)值。</p><p>  5)如果程序在運行的過程中,對于一個循環(huán)語句,如果你返回的值始終是真的,那么程序?qū)⑦M如死循環(huán)。</p><p>  6)對應(yīng)該有花括弧的復(fù)合

30、語句,忘記加花括弧。</p><p>  7)所調(diào)用的函數(shù)在調(diào)用語句之后才定義,而又在調(diào)用前未加說明。</p><p>  圖4.1 游戲運行結(jié)果圖</p><p><b>  5小結(jié)</b></p><p>  通過本次試驗,使我對c語言有了更深一層次的了解,對getche語句、for語句、while語句、printf

31、語句、switch語句、顏色函數(shù)等等的了解及使用更加詳細了一些,明白了這些語句的用法,明確了c語言的使用環(huán)境,功能。C語言作為一個基礎(chǔ)性編程語言是我們在以后編程中不可或缺的語言,使用率肯定會進一步增高。掌握了c語言就相當(dāng)于掌握了一門技術(shù),同時c語言相對而言簡單一些,更容易理解。自己雖然對這個小游戲進行一部分的改造,但是我也感覺這只是其中的很很小的一部分,肯定會有更加強大的功能等待著我們?nèi)ジ纳啤?lt;/p><p> 

32、 同時,我也發(fā)現(xiàn)了自己很多的不足,需要進一步加強這一方面的學(xué)習(xí),明白了自己的在哪一方面的欠缺,希望可以在以后的學(xué)習(xí)中更加徹底的彌補自己的不足,改善這種情況,</p><p>  也希望自己也可很容易的就可以輕松寫出一些小游戲代碼 ,我相信我也可以在以后的學(xué)習(xí)過程中逐步地掌握它,徹底的掌握它,使它成為自己手中的一把利劍。</p><p><b>  致謝</b><

33、/p><p>  在這次C語言課程設(shè)計中,我的老師和同學(xué)給了我及大的幫助。特別是我的指導(dǎo)老師孫淮寧老師,還有我的C語言任課老師徐寧老師。在此,我對他們表示感謝!感謝他們在我面對困難時給了我?guī)椭椭С?。也感謝那些給我?guī)椭乃型瑢W(xué)!</p><p><b>  參考文獻</b></p><p>  [1] 譚浩強.C程序設(shè)計[M].清華大學(xué)出版社,2

34、005年,第三版.</p><p>  [2] 譚浩強.C程序設(shè)計[M].清華大學(xué)出版社,1999年,第二版.</p><p>  [3] 譚浩強,張基溫,唐永炎.C語言程序設(shè)計[M].高等教育出版社,1992年</p><p><b>  附錄:</b></p><p><b>  源程序</b>

35、;</p><p>  #include <stdio.h></p><p>  #include <conio.h></p><p>  #include <stdlib.h></p><p>  #include <time.h></p><p>  #define

36、N 35</p><p>  #define up 72</p><p>  #define left 75</p><p>  #define right 77</p><p>  void run();//游戲控制函數(shù)</p><p>  void yn();//設(shè)置是否繼續(xù)游戲函數(shù)</p><

37、p>  void print(int [][N]);//輸出函數(shù)</p><p>  void movebul(int [][N]);//子彈移動函數(shù)</p><p>  void movepla(int [][N]);//敵機移動函數(shù)</p><p>  void setting(void);//設(shè)置函數(shù)</p><p>  void

38、 menu(void);//菜單函數(shù)</p><p>  int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局變量:界面、我機初始位、界面寬度、敵機速度、敵機密度、得分、死亡</p><p>  void main()</p><p><b>  { menu();

39、</b></p><p><b>  run();</b></p><p><b>  }</b></p><p>  void print(int a[][N])//輸出函數(shù)</p><p>  { system("cls");</p><p&g

40、t;<b>  int i,j;</b></p><p>  for(i=0;i<22;i++)</p><p>  { a[i][width-1]=4;</p><p>  for(j=0;j<width;j++)</p><p>  { if(a[i][j]==0)printf(" "

41、);</p><p>  if(a[i][j]==1)printf("\5");//輸出我機的符號</p><p>  if(a[i][j]==2)printf("^");//子彈</p><p>  if(a[i][j]==3)printf("\3"); //輸出敵機符號</p><p

42、>  if(a[i][j]==4)printf("\2");</p><p>  if(i==1&&j==width-1)printf("您成功殺敵:%d 架",score);//右上角顯示得分</p><p>  if(i==2&&j==width-1)</p><p>  printf

43、("設(shè)置:Esc");</p><p>  if(i==4&&j==width-1)printf("您已經(jīng)死亡了:%d 次",death);//右上角顯示死亡次數(shù)</p><p>  if(i==9&&j==width-1)printf(" 你還剩余 %d 條命!",3-death);</p

44、><p>  if(i==18&&j==width-1)</p><p>  printf("制作人:張曉依");</p><p>  if(i==19&&j==width-1)</p><p>  printf("班級:計科2班");</p><p>

45、;  if(i==20&&j==width-1)</p><p>  printf("學(xué) 號:1208010245");</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b&

46、gt;</p><p><b>  }</b></p><p>  void movebul(int a[][N])</p><p>  { int i,j;</p><p>  for(i=0;i<22;i++)</p><p>  for(j=0;j<width;j++)</

47、p><p>  { if(i==0&&a[i][j]==2)</p><p>  a[i][j]=0;</p><p>  if(a[i][j]==2)</p><p>  { if(a[i-1][j]==3)//加分</p><p>  { score+=1;</p><p>  

48、printf("\7");</p><p><b>  }</b></p><p>  a[i][j]=0,a[i-1][j]=2;</p><p><b>  }</b></p><p><b>  }</b></p><p>&l

49、t;b>  }</b></p><p>  void movepla(int a[][N])</p><p><b>  {int i,j;</b></p><p>  for(i=21;i>=0;i--)//從最后一行往上是為了避免把敵機直接沖出數(shù)組。</p><p>  for(j=0;j&l

50、t;width;j++)</p><p>  {if(i==21&&a[i][j]==3)</p><p>  a[i][j]=0;//消除敵機,在最低層</p><p>  if(a[i][j]==3)a[i][j]=0,a[i+1][j]=3;//敵機移動</p><p><b>  }</b><

51、;/p><p>  if(a[20][pl]==3&&a[21][pl]==1)death++;//死亡</p><p><b>  }</b></p><p><b>  void yn()</b></p><p>  { system("cls");</p&

52、gt;<p>  system("color 2e");</p><p>  printf("\n");</p><p>  printf("\n");</p><p>  printf("\t\t\t\t *****GAME OVER*****\n\a");</p&

53、gt;<p>  printf("\n");</p><p>  printf("\n");</p><p>  printf("\t\t *****游***戲***結(jié)***束***** \n\n\n");</p><p>  printf("\t\t\t按y鍵繼續(xù)游戲,n鍵退出游戲

54、(y/n)?\n");</p><p>  printf("\t\t\t");</p><p>  switch(getch())//提示是否要繼續(xù)游戲</p><p>  { case 'y':</p><p>  case 'Y':death=0,score=0,run();b

55、reak;</p><p><b>  case 'n':</b></p><p>  case 'N':break;</p><p>  default :exit(0);break;</p><p><b>  }</b></p><p>

56、<b>  }</b></p><p>  void setting(void)</p><p>  { int sw=0,i,j;</p><p>  system("cls");</p><p><b>  do</b></p><p><b&g

57、t;  { sw=0;</b></p><p>  printf("\n 游戲界面的大?。?.大2.小>> ");</p><p>  switch(getche())</p><p>  { case '1':width=34;break;</p><p>  case '

58、2':width=24;;break;</p><p>  default:printf("\n 錯誤,請重新選擇...\n");</p><p><b>  sw=1;</b></p><p><b>  }</b></p><p>  }while(sw);</

59、p><p><b>  do</b></p><p><b>  { sw=0;</b></p><p>  printf("\n 請選擇敵機密度:1.大2.中3.小>> ");</p><p>  switch(getche())</p><p>

60、;  { case '0':density=10;break;</p><p>  case '1':density=20;break;</p><p>  case '2':density=30;break;</p><p>  case '3':density=40;break;</p>

61、<p>  default:printf("\n 錯誤,請重新選擇...\n");</p><p><b>  sw=1;</b></p><p><b>  }</b></p><p>  }while(sw);</p><p><b>  do<

62、/b></p><p><b>  { sw=0;</b></p><p>  printf("\n 敵機的飛行速度:1.快2.中3.慢>> ");</p><p>  switch(getche())</p><p>  { case '1':speed=2;bre

63、ak;</p><p>  case '2':speed=3;break;</p><p>  case '3':speed=4;break;</p><p>  default:printf("\n 錯誤,請重新選擇...\n");</p><p><b>  sw=1;<

64、/b></p><p><b>  }</b></p><p>  }while(sw);</p><p>  for(i=0;i<22;i++)</p><p>  for(j=0;j<45;j++)</p><p>  scr[i][j]=0;</p><

65、p>  scr[21][pl=9]=1;</p><p>  printf("\n 按任意鍵保存...");</p><p><b>  getch();</b></p><p><b>  }</b></p><p>  void run()</p><

66、;p>  { system("color 2e");//設(shè)置背景顏色</p><p>  int i=0,j=0;</p><p>  scr[21][pl]=1; //我方飛機初始位置</p><p>  scr[0][5]=3; </p><p>  while(death<3) //限制死亡次數(shù)<

67、;/p><p>  { if(kbhit())</p><p>  switch(getch())//控制左右移動</p><p>  { case left:</p><p><b>  case 'a':</b></p><p>  case 'A':if(pl

68、>0)</p><p>  scr[21][pl]=0,scr[21][--pl]=1;break;</p><p>  case right:</p><p><b>  case 'd':</b></p><p>  case 'D':if(pl<width-2)<

69、/p><p>  scr[21][pl]=0,scr[21][++pl]=1;break;</p><p><b>  case up:</b></p><p><b>  case 'W':</b></p><p>  case 'w':scr[20][pl]=2;br

70、eak;</p><p>  case 27 :exit(0);break;</p><p><b>  }</b></p><p>  if(++j%density==0)//控制生產(chǎn)敵機的速度</p><p><b>  { j=0;</b></p><p>  sra

71、nd(time(NULL));//產(chǎn)生隨機數(shù)</p><p>  scr[0][rand()%width]=3;//生成隨機敵方飛機</p><p><b>  }</b></p><p>  if(++i%speed==0)//控制敵機移動速度,相對于子彈移動速度</p><p>  movepla(scr);//飛機

72、移動</p><p>  movebul(scr);//子彈移動</p><p>  print(scr);//繪制游戲畫面</p><p><b>  } </b></p><p><b>  yn();</b></p><p><b>  }</b>

73、</p><p>  void menu(void)</p><p>  { system("color 2e");//設(shè)置背景顏色</p><p>  printf("說明:按A D 控制我機左右飛行,W 發(fā)射子彈\n 設(shè)置:請按Esc\n 開始游戲:任意鍵");</p><p>  if(getc

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論