c++課程設(shè)計報告--坦克游戲_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《面向?qū)ο缶幊碳夹g(shù)》</p><p><b>  課程設(shè)計實驗報告</b></p><p><b>  ——————坦克二</b></p><p><b>  目錄</b></p><p><b>  程序名稱</b></p&g

2、t;<p><b>  設(shè)計目的</b></p><p><b>  程序設(shè)計的意義</b></p><p><b>  功能介紹</b></p><p><b>  開發(fā)平臺</b></p><p><b>  課程設(shè)計總體規(guī)劃&

3、lt;/b></p><p><b>  處理流程圖</b></p><p><b>  結(jié)構(gòu)模塊分析</b></p><p><b>  主要代碼</b></p><p><b>  運行效果抓圖</b></p><p>&

4、lt;b>  創(chuàng)新和難點</b></p><p>  課程設(shè)計中目前存在的問題</p><p><b>  心得體會</b></p><p><b>  程序名稱</b></p><p>  以《坦克大戰(zhàn)》游戲為題材,自己動手,從零開始,寫出簡單坦克小游戲-----坦克二。<

5、/p><p><b>  二、設(shè)計目的</b></p><p>  1、進一步掌握C++進行類的定義和操作方法;</p><p>  2、學(xué)習(xí)和掌握C++程序設(shè)計方法以及上機調(diào)試技巧,為以后學(xué)校其他專業(yè)課程打好基礎(chǔ);</p><p>  3、能夠培養(yǎng)我們獨立分析問題、解決問題、查閱資料以及自學(xué)的能力,以適應(yīng)計算機只是日新月異

6、發(fā)展的形式;</p><p>  4、程序設(shè)計的目的不單單是課堂上的學(xué)習(xí),我覺得最重要的是讓我們學(xué)生掌握程序設(shè)計的思想與方法。在課程設(shè)計的過程中,我們充分運用我們課堂上學(xué)習(xí)到的知識,并且復(fù)習(xí)C語言中的函數(shù)等知識點。在這個過程中,我們能夠不斷提高對C++面向?qū)ο蟪绦蛟O(shè)計的理解,最終能夠獨立自主解決一些問題。</p><p><b>  三、程序設(shè)計的意義</b><

7、/p><p>  大學(xué)最重要無疑是動手能力與自學(xué)能力的培養(yǎng),課程設(shè)計明顯給了我們這樣的一個機會。遇到瓶頸的時候,我們需要去圖書館查閱書籍,代碼錯誤的時候我們需要反復(fù)的調(diào)試,在這個過程中,我們的動手能力以及自學(xué)能力都在不知不覺中得到了很大的提升。</p><p>  回顧起此次課程設(shè)計,我還是感慨頗多,從理論到實踐,在這幾乎一個學(xué)期的時間里(課程設(shè)計是C++第一次上課的時候提出來的),我學(xué)到了很

8、多很多的東西,不僅鞏固了以前所學(xué)過的C語言方面的知識,而且自己也去圖書館查閱資料學(xué)到了很多。通過這次的課程設(shè)計使我懂得了理論與實際結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐結(jié)合起來,從理論中得出結(jié)論,才是自己真正掌握了的,屬于自己的知識,才能提高自己的實際動手能力和獨立思考的能力。在課程設(shè)計的過程中遇到了各種各樣的問題,同時在設(shè)計的過程中也發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)的知識理解的不夠深刻,掌握的不夠牢固,通

9、過這次課程設(shè)計,把以前所學(xué)的知識重新溫故,鞏固了所學(xué)的知識。</p><p><b>  功能介紹</b></p><p>  在坦克二程序中,小坦克能夠上下左右自由移動,飛機能夠左右移動,并且能夠發(fā)射子彈,飛機每次只能發(fā)一顆子彈但是坦克可以多發(fā)子彈連續(xù)發(fā)射,在坦克子彈打中飛機或者飛機子彈打中坦克之后,游戲結(jié)束。</p><p><b&g

10、t;  開發(fā)平臺</b></p><p>  操作系統(tǒng):win 7</p><p>  開發(fā)軟件:Mirosoft Visual C++ 6.0</p><p><b>  課程設(shè)計總體規(guī)劃</b></p><p><b>  處理流程圖</b></p><p>

11、<b>  結(jié)構(gòu)模塊分析</b></p><p>  Tankwar類是Bullet類、Tank類、Plane類的服務(wù)類,Tankwar類內(nèi)部只有幾個函數(shù)。</p><p><b>  主要代碼</b></p><p><b>  /*子彈類*/</b></p><p>  c

12、lass Bullet{</p><p><b>  public:</b></p><p>  void showTankBullet(){</p><p>  printf("T");</p><p><b>  }</b></p><p>  voi

13、d showPlaneBullet(){</p><p>  printf("F");</p><p><b>  }</b></p><p>  Bullet(int X,int Y){</p><p><b>  x=X;</b></p><p>&l

14、t;b>  y=Y;</b></p><p>  next=NULL;</p><p><b>  }</b></p><p><b>  Bullet(){</b></p><p><b>  x=36;</b></p><p>&l

15、t;b>  y=23;</b></p><p>  next=NULL;</p><p><b>  }</b></p><p>  void setlocationBullet(int X,int Y){</p><p><b>  x=X;</b></p><

16、;p><b>  y=Y;</b></p><p><b>  }</b></p><p>  void move_up(){</p><p>  gotoxy(x,y);</p><p>  printf(" ");</p><p>  //set

17、locationBullet(x,y-1);</p><p><b>  if(y!=0)</b></p><p><b>  {</b></p><p><b>  y--;</b></p><p>  gotoxy(x,y);</p><p>  s

18、howTankBullet();</p><p><b>  }</b></p><p><b>  }</b></p><p>  int getX(){</p><p><b>  return x;</b></p><p><b>  }

19、</b></p><p>  int getY(){</p><p><b>  return y;</b></p><p><b>  }</b></p><p>  ~Bullet(){}</p><p>  Bullet *next;</p>

20、<p><b>  private:</b></p><p><b>  int x,y;</b></p><p><b>  };</b></p><p><b>  //飛機類</b></p><p>  class Plane{</p

21、><p><b>  public:</b></p><p>  void showPlane(){</p><p>  gotoxy(x,y-2);</p><p>  printf("Y");</p><p>  gotoxy(x,y-1);</p><p&

22、gt;  printf("Y");</p><p>  gotoxy(x-1,y);</p><p>  printf("YYY");</p><p>  gotoxy(x,y+1);</p><p>  printf("Y");</p><p><b&

23、gt;  }</b></p><p>  Plane(int X=1,int Y=2){</p><p><b>  x=X;</b></p><p><b>  y=Y;</b></p><p><b>  mmm=0;</b></p><p&

24、gt;<b>  }</b></p><p>  void setlocationPlane(int X,int Y){</p><p><b>  x=X;</b></p><p><b>  y=Y;</b></p><p><b>  }</b>&l

25、t;/p><p>  void move(){</p><p>  if(mmm==2)</p><p><b>  {</b></p><p>  int X=x,Y=y;</p><p><b>  mmm=0;</b></p><p>  delet

26、ePlane(X,Y);</p><p>  if(X==78) X=0; //飛機如果到達最右邊,則返回最左邊</p><p>  setlocationPlane(X+1,Y);</p><p>  showPlane();</p><p><b>  }</b></p><p><b&

27、gt;  mmm++;</b></p><p><b>  }</b></p><p>  void deletePlane(int x_myplane,int y_myplane){</p><p>  gotoxy(x_myplane,y_myplane-2);</p><p>  printf(&qu

28、ot; ");</p><p>  gotoxy(x_myplane,y_myplane-1);</p><p>  printf(" ");</p><p>  gotoxy(x_myplane-1,y_myplane);</p><p>  printf(" ");</p>

29、<p>  gotoxy(x_myplane,y_myplane+1);</p><p>  printf(" ");</p><p><b>  }</b></p><p>  int getX(){</p><p><b>  return x;</b><

30、/p><p><b>  }</b></p><p>  int getY(){</p><p><b>  return y;</b></p><p><b>  }</b></p><p>  ~Plane(){}</p><p>

31、;  int judge_bulletoftank_plane(Bullet *head);</p><p><b>  private:</b></p><p>  int x,y,mmm;</p><p><b>  };</b></p><p>  int Plane::judge_bulle

32、toftank_plane(Bullet *head)</p><p><b>  {</b></p><p>  Bullet *p1;</p><p><b>  int a,b;</b></p><p><b>  p1=head;</b></p><

33、p>  while(p1!=NULL)</p><p><b>  {</b></p><p>  a=p1->getX();b=p1->getY();</p><p>  if((a==(x-1)&&b==y)||(a==x&&b==(y+1))||(a==x+1&&b==y

34、)||(a==x&&b==y))</p><p><b>  return 1;</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p><b>  return 0;</b></p>&

35、lt;p><b>  }</b></p><p><b>  /*TANK類*/</b></p><p>  class Tank{</p><p><b>  public:</b></p><p>  void showTank(){</p><p

36、>  gotoxy(x+1,y-1);</p><p>  printf("W");</p><p>  gotoxy(x,y);</p><p>  printf("WWW");</p><p><b>  }</b></p><p>  void

37、setLocationofTank(int X,int Y){</p><p><b>  x=X;</b></p><p><b>  y=Y;</b></p><p><b>  }</b></p><p>  Tank(int X=35,int Y=24)</p&g

38、t;<p><b>  {</b></p><p><b>  x=X;</b></p><p><b>  y=Y;</b></p><p><b>  }</b></p><p>  int getX(){</p><

39、p><b>  return x;</b></p><p><b>  }</b></p><p>  int getY(){</p><p><b>  return y;</b></p><p><b>  }</b></p>&l

40、t;p><b>  ~Tank(){}</b></p><p>  void deleteTank(int x_myTank,int y_myTank){</p><p>  gotoxy(x_myTank+1,y_myTank-1);</p><p>  printf(" ");</p><p&g

41、t;  gotoxy(x_myTank,y_myTank);</p><p>  printf(" ");</p><p><b>  }</b></p><p>  void move_to_left()</p><p><b>  {</b></p><

42、;p>  int X=x,Y=y;</p><p>  if(X==0) X++;</p><p>  setLocationofTank(X-1,Y);</p><p>  deleteTank(X,Y);</p><p>  //gotoxy(x_myTank-1,y_myTank);</p><p>  

43、showTank();</p><p><b>  }</b></p><p>  Bullet* creat_bullet(Bullet *head,Bullet *bullet);</p><p>  void bullet_fired(Bullet *head);</p><p>  Bullet* destroy

44、_bullet(Bullet *head);</p><p>  int judge_bullet_of_plane_tank(Bullet *head,int x_plane_bullet,int y_plane_bullet);</p><p>  void move_to_right();</p><p>  void move_to_up();</p&

45、gt;<p>  void move_to_down();</p><p>  void move(char ch);</p><p><b>  private:</b></p><p><b>  int x,y;</b></p><p><b>  };</b&g

46、t;</p><p>  int Tank::judge_bullet_of_plane_tank(Bullet *head,int x_plane_bullet,int y_plane_bullet)</p><p><b>  {</b></p><p>  Bullet *p1;</p><p><b>

47、  int a,b;</b></p><p><b>  p1=head;</b></p><p>  while(p1!=NULL)</p><p><b>  {</b></p><p>  a=p1->getX();b=p1->getY();</p>&

48、lt;p>  if(a==x_plane_bullet&&b==y_plane_bullet)</p><p><b>  return 1;</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p><b>

49、  return 0;</b></p><p><b>  }</b></p><p>  Bullet* Tank::destroy_bullet(Bullet *head)</p><p><b>  {</b></p><p>  Bullet *p1,*p2;</p>

50、;<p>  if(head==NULL)</p><p>  return head;</p><p><b>  else </b></p><p><b>  p1=head;</b></p><p>  while(0!=p1->getY()&&p1-&g

51、t;next!=NULL)</p><p><b>  {</b></p><p><b>  p2=p1;</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p>  if(0==p1->

52、;getY())</p><p><b>  {</b></p><p>  if(p1==head)</p><p><b>  {</b></p><p>  gotoxy(p1->getX(),p1->getY());</p><p>  printf(&q

53、uot; ");</p><p>  head=p1->next;</p><p>  delete p1;</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b>&

54、lt;/p><p>  gotoxy(p1->getX(),p1->getY());</p><p>  printf(" ");</p><p>  p2->next=p1->next;</p><p>  delete p1;</p><p><b>  }<

55、/b></p><p><b>  } </b></p><p>  return head;</p><p><b>  }</b></p><p>  void Tank::bullet_fired(Bullet *head)</p><p><b>  

56、{</b></p><p>  Bullet *p1;</p><p><b>  p1=head;</b></p><p>  if(p1!=NULL)</p><p><b>  {</b></p><p>  p1->move_up();</p&

57、gt;<p>  while(p1->next!=NULL)</p><p><b>  {</b></p><p>  p1=p1->next;</p><p>  p1->move_up();</p><p><b>  }</b></p><

58、p><b>  }</b></p><p><b>  }</b></p><p>  Bullet* Tank::creat_bullet(Bullet *head,Bullet *bullet)</p><p><b>  { </b></p><p>  Bulle

59、t *p0,*p1;</p><p><b>  p1=head;</b></p><p>  p0=bullet;</p><p>  if(head==NULL) </p><p><b>  {</b></p><p><b>  head=p0;</b

60、></p><p>  p0->next=NULL;</p><p><b>  } </b></p><p>  else if(head!=NULL)</p><p><b>  {</b></p><p>  if(p1->next==NU

61、LL)</p><p><b>  {</b></p><p>  p1->next=p0;</p><p>  p0->next=NULL;</p><p><b>  }</b></p><p><b>  else</b></p&

62、gt;<p><b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  p1=p1->next;</p><p>  if(p1->next==NULL)</p>

63、;<p><b>  {</b></p><p>  p1->next=p0;</p><p>  p0->next=NULL;</p><p><b>  break;</b></p><p><b>  }</b></p><p

64、><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  return head; </p><p>

65、;<b>  }</b></p><p>  void Tank::move_to_right()</p><p><b>  {</b></p><p>  int X=x,Y=y;</p><p>  if(X==77) X--;</p><p>  setLocatio

66、nofTank(X+1,Y);</p><p>  deleteTank(X,Y);</p><p>  //gotoxy(x_myTank+1,y_myTank);</p><p>  showTank();</p><p><b>  }</b></p><p>  void Tank::m

67、ove_to_up()</p><p><b>  {</b></p><p>  int X=x,Y=y;</p><p>  if(Y==5) Y++;</p><p>  setLocationofTank(X,Y-1);</p><p>  deleteTank(X,Y);</p&g

68、t;<p>  //gotoxy(x_myTank,y_myTank-1);</p><p>  showTank();</p><p><b>  }</b></p><p>  void Tank::move_to_down()</p><p><b>  {</b></p

69、><p>  int X=x,Y=y;</p><p>  if(Y==24) Y--;</p><p>  setLocationofTank(X,Y+1);</p><p>  deleteTank(X,Y);</p><p>  showTank();</p><p><b>  }

70、</b></p><p>  void Tank::move(char ch)</p><p><b>  {</b></p><p>  if(ch=='a')//左移動</p><p>  move_to_left();</p><p>  else if(ch==

71、'd')//右移動</p><p>  move_to_right();</p><p>  else if(ch=='w')//上移動</p><p>  move_to_up();</p><p>  else if(ch=='s')//下移動</p><p>  m

72、ove_to_down();</p><p><b>  }</b></p><p><b>  //坦克大戰(zhàn)處理類</b></p><p>  class tankwar{</p><p><b>  public:</b></p><p>  int

73、 cover();</p><p>  void showsuccess(int x_myplane,int y_myplane);</p><p>  void showfailure(int x,int y);</p><p>  void the_picture_of_success(int temp,int count);</p><p&

74、gt;  //void delay(DWORD dur);</p><p>  void show_unexpected(int x_plane_bullet,int y_plane_bullet);</p><p>  void initialization()</p><p><b>  {</b></p><p>

75、  gotoxy(35,24);</p><p>  myTank.showTank();</p><p>  myPlane.showPlane();</p><p><b>  }</b></p><p><b>  private:</b></p><p>  void

76、 the_way_to_play_game();</p><p>  void attention_place();</p><p>  Tank myTank;</p><p>  Plane myPlane;</p><p><b>  };</b></p><p>  int tankwar

77、:: cover(){</p><p>  printf("\n\n\n");</p><p>  cout<<"********************************************"<<endl;</p><p>  cout<<"** 設(shè)計者

78、: 張景東 **"<<endl;</p><p>  cout<<"** 設(shè)計時間: 2013/10/25 **"<<endl;</p><p>  cout<<"**

79、 **"<<endl;</p><p>  cout<<"** 歡迎使用!??! **"<<endl;</p><p>  cout<<"********************************************"<<

80、;endl;</p><p>  cout<<"Do you want to start the game?(y or n)"<<endl;</p><p><b>  char ch;</b></p><p><b>  cin>>ch;</b></p>

81、<p>  if(ch=='y'||ch=='Y') </p><p><b>  {</b></p><p><b>  while(1){</b></p><p>  system("cls");</p><p>  printf

82、("\n\n\n");</p><p>  cout<<"********************************************"<<endl;</p><p>  cout<<"** 1.使用方法 **"<<

83、endl;</p><p>  cout<<"** 2.注意事項 **"<<endl;</p><p>  cout<<"** 3.開始游戲 **"<<endl;</p><

84、;p>  cout<<"**請選擇: **"<<endl;</p><p>  cout<<"********************************************"<<endl;</p><p><b> 

85、 int n;</b></p><p>  scanf("%d",&n);</p><p>  if(n==3) return 1;</p><p><b>  if(n==1)</b></p><p><b>  {</b></p><p

86、>  system("cls");</p><p>  the_way_to_play_game();</p><p><b>  }</b></p><p><b>  if(n==2){</b></p><p>  system("cls");<

87、;/p><p>  attention_place();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(ch=='n'||ch=='N

88、') return 0;</p><p><b>  }</b></p><p>  void tankwar::the_way_to_play_game()</p><p><b>  {</b></p><p>  printf("\n\n\n");</p>

89、;<p>  cout<<"********************************************"<<endl;</p><p>  cout<<"** W 上 **"<<endl;</p><p> 

90、 cout<<"** ASD 左下右 J發(fā)射子彈 **"<<endl;</p><p>  cout<<"** **"<<endl;</p><p>  cout<<"

91、** 注意:按空格鍵可以中途退出游戲 **"<<endl;</p><p>  cout<<"********************************************"<<endl;</p><p>  delay(3000);</p><p><b>  }

92、</b></p><p>  void tankwar::attention_place(){</p><p>  printf("\n\n\n");</p><p>  cout<<"****************************************************************

93、****************"<<endl;</p><p>  cout<<" 1. 你不打飛機的話,飛機也不會打你的 "<<endl;</p><p>  cout<<" 2. 最開始你發(fā)兩顆子彈飛機才會打你一次,把握住這個機會消滅飛機 &qu

94、ot;<<endl;</p><p>  cout<<" 3. 在打飛機的過程中,你移動的越頻繁飛機發(fā)射子彈打你的次數(shù)會越多"<<endl;</p><p>  cout<<"*******************************************************************

95、*************"<<endl;</p><p>  delay(6000);</p><p><b>  }</b></p><p>  void tankwar:: showsuccess(int x_myplane,int y_myplane)</p><p><b>  

96、{</b></p><p><b>  int i=15;</b></p><p>  while(i--){</p><p>  gotoxy(x_myplane,y_myplane-2);</p><p>  printf("-");</p><p>  got

97、oxy(x_myplane,y_myplane-1);</p><p>  printf("-");</p><p>  gotoxy(x_myplane-1,y_myplane);</p><p>  printf("---");</p><p>  gotoxy(x_myplane,y_myplan

98、e+1);</p><p>  printf("-");</p><p>  delay(100);</p><p>  gotoxy(x_myplane,y_myplane-2);</p><p>  printf("*");</p><p>  gotoxy(x_myplan

99、e,y_myplane-1);</p><p>  printf("*");</p><p>  gotoxy(x_myplane-1,y_myplane);</p><p>  printf("***");</p><p>  gotoxy(x_myplane,y_myplane+1);</p&

100、gt;<p>  printf("*");</p><p>  delay(100);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void tankwar::showfailure(int x_myTank,

101、int y_myTank)</p><p><b>  {</b></p><p>  system("cls");</p><p><b>  int i=15;</b></p><p>  while(i--)</p><p><b>  {

102、</b></p><p>  gotoxy(x_myTank-1,y_myTank);</p><p>  printf("+");</p><p>  gotoxy(x_myTank,y_myTank);</p><p>  printf("+");</p><p>

103、;  gotoxy(x_myTank+1,y_myTank);</p><p>  printf("+");</p><p>  gotoxy(x_myTank,y_myTank-1);</p><p>  printf("+");</p><p>  delay(90);</p><

104、;p>  gotoxy(x_myTank-1,y_myTank);</p><p>  printf("-");</p><p>  gotoxy(x_myTank,y_myTank);</p><p>  printf("-");</p><p>  gotoxy(x_myTank+1,y_my

105、Tank);</p><p>  printf("-");</p><p>  gotoxy(x_myTank,y_myTank-1);</p><p>  printf("-");</p><p>  delay(90);</p><p><b>  }</b&

106、gt;</p><p><b>  }</b></p><p>  void tankwar::the_picture_of_success(int temp,int count)</p><p><b>  {</b></p><p>  if(temp==1){</p><p

107、>  printf("\n\n\n\n");</p><p>  printf(" 恭喜你成功打掉灰機?。。?!您的命中率為百分之%.2f?。。?!\n繼續(xù)加油哈,親。。。。滿意的話記得給個贊哈",100.0/count);</p><p><b>  }</b></p><p><

108、b>  else {</b></p><p>  system("cls");</p><p>  printf("\n\n\n\n");</p><p>  printf(" 很遺憾你沒有打掉灰機?。。。∧阋院筮€是不要打飛機了吧。。。。");</p><

109、p><b>  }</b></p><p><b>  }</b></p><p>  void tankwar::show_unexpected(int x_plane_bullet,int y_plane_bullet)</p><p><b>  {</b></p><

110、p><b>  int i=5;</b></p><p>  while(i--)</p><p><b>  {</b></p><p>  gotoxy(x_plane_bullet,y_plane_bullet);</p><p>  printf("*");<

111、/p><p>  delay(90);</p><p>  gotoxy(x_plane_bullet-1,y_plane_bullet);</p><p>  printf("***");</p><p>  delay(90);</p><p>  gotoxy(x_plane_bullet-1,y

112、_plane_bullet);</p><p>  printf(" ");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  運行效果抓圖</b></p><p><

113、;b>  1、主界面</b></p><p><b>  2、選擇界面</b></p><p><b>  3、使用方法界面</b></p><p><b>  4、注意事項界面</b></p><p><b>  5、游戲初始化界面</b&g

114、t;</p><p>  6、坦克連續(xù)多發(fā)子彈與飛機發(fā)子彈界面</p><p>  7、飛機被打中界面(飛機在閃爍)</p><p>  8、坦克被打中界面(坦克在閃爍)</p><p>  飛機子彈與坦克子彈相碰,也會爆炸,出現(xiàn)閃爍,但因為抓拍不到此界面,故這里就不顯示出來了</p><p><b>  創(chuàng)

115、新和難點</b></p><p><b>  創(chuàng)新:</b></p><p>  坦克子彈能夠連續(xù)多發(fā)(new創(chuàng)建,delete銷毀),飛機死亡、坦克死亡、飛機子彈與坦克子彈相碰都會發(fā)生爆炸,在爆炸地方會出現(xiàn)閃爍,并且還會發(fā)出|“嘟嘟”聲。</p><p>  遇到的問題及解決過程:</p><p>  延遲

116、設(shè)不好。一開始的時候延遲并沒有統(tǒng)一,飛機發(fā)子彈與不發(fā)子彈程序運行一個周期的時間不同,坦克發(fā)不發(fā)子彈也是如此。這樣的話,會感覺到界面有一種”卡“的感覺。后來減少延遲時間,統(tǒng)一程序每運行一個周期的時間,就解決這個問題了。</p><p>  程序剛初始化的時候飛機是不動的,只有在輸入鍵之后飛機才開始動。這個問題看起來很小,其實不是這樣的。如果飛機一開始就不動的話,那么單步調(diào)試就無法進行下去了。坦克代碼我覺得也不短了,

117、如果僅憑觀察來找錯誤的話未免太浪費時間了,并且不一定能找出錯誤。最后我把kbhit()函數(shù)換了位置之后最終解決了這個問題。</p><p>  碰撞與坐標(biāo)問題。一開始的時候坦克子彈打中飛機、飛機子彈打中坦克、坦克子彈與飛機子彈相碰撞并沒有什么結(jié)果,碰撞之后仍能繼續(xù)運動。后來發(fā)現(xiàn)這是因為坐標(biāo)的問題,坦克是由好幾個字母組成的,飛機也是。但實際上只要確定了一個飛機的字母的位置,所有飛機的字母也就都確定了。所以我在判斷是

118、否碰撞的時候要以參考的那個字母的坐標(biāo)為標(biāo)準(zhǔn),之前有錯誤就是因為判斷是否碰撞的坐標(biāo)標(biāo)準(zhǔn)不一樣,改正之后錯誤也就解決了。</p><p>  坦克子彈的連續(xù)多發(fā)問題。一開始的時候,我的坦克的子彈其實只有一顆,只是他的坐標(biāo)在不斷的變化罷了。后來老師要求坦克子彈能夠連續(xù)多發(fā),所以我就用的數(shù)組,我設(shè)的數(shù)組的容量是500,里面有begin和last變量,記錄屏幕上出現(xiàn)的坦克子彈在坦克子彈數(shù)組中開始與結(jié)束的序號。但是這樣做其實

119、是有一個問題的,那就是當(dāng)last的值達到500時,程序就會死掉。這是必然的,比較坦克子彈的容量就那么大,所以用數(shù)組來寫的話,是不合適的。另外,用數(shù)組來寫的話,如果發(fā)射的子彈較少的話就會造成空間的浪費。最后在改為用new創(chuàng)建坦克子彈對象。用delete刪除坦克子彈對象就可以解決空間不夠以及浪費空間的問題。要用new的話就必然要用到鏈表了,一開始的時候,我對怎么樣在C++的類中把子彈的指針串聯(lián)起來還是很困惑的,不知道該如何下手。最后我重新翻

120、看了結(jié)構(gòu)體方面的知識,將結(jié)構(gòu)體與類類比起來,在類中設(shè)定公有成員next(next為Bullet的指針),經(jīng)過調(diào)試后,最終解決了問題(調(diào)試的過程太麻煩了,有很多不容易發(fā)現(xiàn)的小錯誤,在這個過程中,我充分認(rèn)識到了單步調(diào)試的重要性)。</p><p>  十、課程設(shè)計中目前存在的問題</p><p>  程序的主函數(shù)有點長,沒有把一些小段代碼寫進類里面去,這是因為寫坦克游戲的時候比較早,那時候?qū)

121、++的理解還不是很深刻,還是有著面向過程的思想在里面的,而不是完全的都是面向?qū)ο蟮乃枷搿?lt;/p><p>  在代碼中,沒有明確的分工,有些僅僅是圖著使用的方便而已,沒有充分體現(xiàn)面向?qū)ο蟮乃枷搿?lt;/p><p>  飛機雖然能夠發(fā)子彈。但飛機只有一個且只能在固定的軌道上移動,我覺得這個地方是可以改善的,而且不是很難。</p><p>  碰撞之后的聲音是調(diào)用系統(tǒng)聲音

122、的,雖然能夠調(diào)節(jié)音調(diào)和響的時間長度,但聲音都不是很好聽,我一直都想插入一段音樂進去,但始終不知道正確的方法,我覺得這個是我這次課程設(shè)計的一個遺憾。</p><p>  坦克二程序中雖然運用了C++方面的知識,但對父類子類等知識并很好的沒有涉及。</p><p>  坦克程序的界面并不是很好,我覺得如果時間允許的話這里也可以有所改善的。</p><p><b&g

123、t;  十一、心得體會</b></p><p>  時間過的真快,上學(xué)期期末還在忙著寫軟件工程課程設(shè)計報告,寫著無聊的翻頁功能,現(xiàn)在卻已經(jīng)完成了坦克二的編程工作。即使坦克程序并不是很理想,有自己的缺陷,但我覺得在這個過程中我還是學(xué)到了很多。</p><p>  經(jīng)過這次的C++課程設(shè)計,我發(fā)現(xiàn)做軟件并不僅僅是寫代碼這么簡單的事。就拿這次的坦克程序來說吧。在做坦克程序之前,我們在

124、腦海中必須要有清晰的思路,能構(gòu)建出坦克程序的框架 ,這樣我們在動手寫代碼的時候就不會沒有頭緒,就能有條不紊的把代碼繼續(xù)敲下去。另外,我覺得在寫代碼的時候在旁邊寫一定的注釋還是很重要的。因為我的坦克程序是在把類上完之后就開始動手寫的,整個完成代碼的時間跨度比較長,注釋能讓我下次動手寫這個程序的時候知道每一個變量代表什么意思以及編寫這個程序的整體的思路。</p><p>  C++課程設(shè)計是我們學(xué)生綜合運用所學(xué)知識、

125、發(fā)現(xiàn)、提出,分析和解決實際問題,鍛煉實際動手能力的重要環(huán)節(jié)。把課堂上學(xué)到的理論知識運用到實際的編程中,可以說是一個苦多于甜的過程。但是在這個過程中我們可以學(xué)到很多很多的東西,同時不僅可以鞏固大一的C語言知識,而且可以學(xué)到很多課本上沒有涉及的知識。通過這次的課程設(shè)計使我懂得了把理論和實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的。只有把理論和實踐結(jié)合起來,在實踐中檢驗理論的正確性,才能真正的提高自己的獨立思考的能力和實際動手能力。<

126、/p><p>  在這次的課程設(shè)計中,我在敲代碼的過程中,遇到了很多的問題。每次遇到代碼問題,我都是很掙扎的,因為調(diào)試代碼的過程實在是太枯燥了,反復(fù)的單步調(diào)試,查看變量,然后尋找異常變量,從中找到錯誤并改正。這一切都太煩人了,所以我覺得調(diào)試代碼必須要有一個很好的耐心,耐力不夠,代碼中的錯誤是很難找出來的,我覺得這樣的人學(xué)軟件工程也不會走的很遠(yuǎn)的。</p><p>  正是這次的課程設(shè)計讓我積累

溫馨提示

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

評論

0/150

提交評論