版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)報(bào)告--猜數(shù)游戲
- 猜單詞游戲c++課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)-教學(xué)游戲
- c++課程設(shè)計(jì)拼圖游戲
- c++課程設(shè)計(jì)報(bào)告
- c++剪刀石頭布游戲課程設(shè)計(jì)
- c++剪刀石頭布游戲課程設(shè)計(jì)
- c++課程設(shè)計(jì)---吃豆子游戲程序
- c++掃雷課程設(shè)計(jì)報(bào)告
- c++猜單詞課程設(shè)計(jì)--——猜單詞游戲
- c++面向?qū)ο笳n程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)報(bào)告--幸運(yùn)52
- c++課程設(shè)計(jì)報(bào)告--幻方
- c++推箱子課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)——日期類設(shè)計(jì)報(bào)告
- c++高射炮打飛機(jī)游戲課程設(shè)計(jì)
- c++課程設(shè)計(jì)--五子棋游戲
- c++程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)--gui小游戲的設(shè)計(jì)與實(shí)現(xiàn)
- c課程設(shè)計(jì)報(bào)告-打字游戲
評(píng)論
0/150
提交評(píng)論