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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

11、<b>  結(jié)構(gòu)模塊分析</b></p><p>  Tankwar類是Bullet類、Tank類、Plane類的服務(wù)類,Tankwar類內(nèi)部只有幾個(gè)函數(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>  //飛機(jī)類</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; //飛機(jī)如果到達(dá)最右邊,則返回最左邊</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')//左移動(dòng)</p><p>  move_to_left();</p><p>  else if(ch==

71、'd')//右移動(dòng)</p><p>  move_to_right();</p><p>  else if(ch=='w')//上移動(dòng)</p><p>  move_to_up();</p><p>  else if(ch=='s')//下移動(dòng)</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è)計(jì)者

78、: 張景東 **"<<endl;</p><p>  cout<<"** 設(shè)計(jì)時(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.注意事項(xiàng) **"<<endl;</p><p>  cout<<"** 3.開(kāi)始游戲 **"<<endl;</p><

84、;p>  cout<<"**請(qǐng)選擇: **"<<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. 你不打飛機(jī)的話,飛機(jī)也不會(huì)打你的 "<<endl;</p><p>  cout<<" 2. 最開(kāi)始你發(fā)兩顆子彈飛機(jī)才會(huì)打你一次,把握住這個(gè)機(jī)會(huì)消滅飛機(jī) &qu

94、ot;<<endl;</p><p>  cout<<" 3. 在打飛機(jī)的過(guò)程中,你移動(dòng)的越頻繁飛機(jī)發(fā)射子彈打你的次數(shù)會(huì)越多"<<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(" 恭喜你成功打掉灰機(jī)?。。?!您的命中率為百分之%.2f?。。?!\n繼續(xù)加油哈,親。。。。滿意的話記得給個(gè)贊哈",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(" 很遺憾你沒(méi)有打掉灰機(jī)?。。?!你以后還是不要打飛機(jī)了吧。。。。");</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>  運(yùn)行效果抓圖</b></p><p><

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

114、t;</p><p>  6、坦克連續(xù)多發(fā)子彈與飛機(jī)發(fā)子彈界面</p><p>  7、飛機(jī)被打中界面(飛機(jī)在閃爍)</p><p>  8、坦克被打中界面(坦克在閃爍)</p><p>  飛機(jī)子彈與坦克子彈相碰,也會(huì)爆炸,出現(xiàn)閃爍,但因?yàn)樽ヅ牟坏酱私缑?,故這里就不顯示出來(lái)了</p><p><b>  創(chuàng)

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

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

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

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

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

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

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

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

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

124、腦海中必須要有清晰的思路,能構(gòu)建出坦克程序的框架 ,這樣我們?cè)趧?dòng)手寫代碼的時(shí)候就不會(huì)沒(méi)有頭緒,就能有條不紊的把代碼繼續(xù)敲下去。另外,我覺(jué)得在寫代碼的時(shí)候在旁邊寫一定的注釋還是很重要的。因?yàn)槲业奶箍顺绦蚴窃诎杨惿贤曛缶烷_(kāi)始動(dòng)手寫的,整個(gè)完成代碼的時(shí)間跨度比較長(zhǎng),注釋能讓我下次動(dòng)手寫這個(gè)程序的時(shí)候知道每一個(gè)變量代表什么意思以及編寫這個(gè)程序的整體的思路。</p><p>  C++課程設(shè)計(jì)是我們學(xué)生綜合運(yùn)用所學(xué)知識(shí)、

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論