资源描述:
《陨石撞飞机实验心得》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、院系:计算机学院实验课程:计算机基础实验实验项目:陨石撞飞机指导老师:宋桂琴开课时间:2010〜2011年度第2学期业:软件工程(数字媒体)班级:10本8班学生:史文林学号:20102003056华南师范大学教务戍在这个实验中,我发现仅仅一个人的力量是有限的,我们必须学会与他人合作,在合作中竞争。我一开始对这个实验无从下手,最后在网上找到一些关于做这个“陨石撞飞机”实验的资料(徐永广老师的课件),按照上面步骤将代码写出来,然后再跟同学们一起讨论如何改进,以下就是我们修改的几个部分:(1)为了实现判断陨石是否和飞机相撞的并用t来记录相撞的
2、次数,当撞了三次时游戏就“GAMEOVER”了这一功能,便使用了以下这个函数:voidCPlaneView::GameOver(intx,inty,int&xljnt&yl)CClientDCClientDC(this);if(x+8O>xl&&xyl&&yvyl+80)AfxGetInstanceHandle(),PlaySound((LPCTSTR)IDR_WAVE2,〃爆炸的声音SND_RESOURCEISND_ASYNC);KillTimer(l);t++;〃记录相撞的次数if(t==1){_DrawB
3、itmap(&ClientDC,m_explosiony,x,y,xl,yl);〃画爆炸的位图MessageBox(n你还有2次,按确定继续!!!”);UpDate(&ClientDC,m_plane,x,y);UpDate(&ClientDC,m_explosiony,xl,yl);DrawBitmap(&ClientDC,m_plane,x,y,600,600);xl=rand()%1000;yl=10;planex=600;planey=600;Begine();〃初始化陨石SetTimer(l,70,NULL);}if(t==2
4、){DrawBitmap(&ClientDC,m_explosiony,x,y,xl,yl);MessageBoxC'你还有1次,發确定继续!!!”);UpDate(&ClientDC,m_plane,x,y);UpDate(&ClientDC,m_explosiony,xl,yl);DrawBitmap(&ClientDC,m_plane,x,y,600,600);x1=rand()%l000;y1=10;planex=600;planey=600;Begine();SetTimer(l,70,NULL);}if(t==3){Draw
5、Bitmap(&ClientDC,m_explosiony,x,y,xl,yl);MessageBox(nGAMEOVER!!!H);Begine();UpDate(&ClientDC,m_plane,x,y);UpDate(&ClientDC,m_explosiony,xl.yl);DrawBitmap(&ClientDC,m_over,260,5,260,5);〃游戏结束的位图//ExitProcess(O);PlaySound((LPCTSTR)IDR_WAVEl,AfxGetInstanceHandle(),SND.RESOUR
6、CEISND_ASYNCISND.LOOP);}(1)为了实现使游戏能够在中途暂停这一功能,我们使用了下面这个函数,该函数可使陨石在暂停时停留不动,在暂停结束后继续之前行为。开始编写这个函数时,暂停后陨石会不见了,后来经过几个人的讨论修改后,陨石在暂停后也能显示出来。elseif(nChar==VK_SPACE)〃停止{KillTimer(l);〃停止设备定时器触发MessageBox(”暂停!!!继续请按“确定””);newx=oldx;newy=oldy;SetTimer(l,80,NULL);}elsereturn;以下这一部
7、分实现让陨石斜着飘:oldx=stonelx;oldy=stonely;//IHstonel位置newx=oldx;newy=oldy+10;newx-=15;//新stonel位置GameOver(planex,planey,newx,newy);if(t==3)return;if(newy>ClientRect.bottomllnewx<=-100)newx=rand()%1300;newy=0;}DrawBitmap(&ClientDC,m_stonel,oldx,oldy,newx,newy);//绘制石头1stonelx=ne
8、wx;stonely=newy;//新石头2位置(2)为了实现当飞机被打中后,让陨石重新从最上面下落,我们增加了这个函数,用来初始化石头的下落位置的。一开始编写这个函数的时候,陨石在重新F落时仅仅出现在最上