资源描述:
《c++课程设计——打砖块游戏》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MFC课程设计说明书●设计题目:打砖块游戏●所属系部:计算机工程系●专业:计算机科学与技术●学号:XXXXXXX●姓名:XXXX●指导教师:XXXX●设计日期:12-26设计任务1.1任务描述使用MFC框架设计一个打砖块游戏。在客户区内显示砖块分布,小球和托盘。按空格键开始游戏,Esc键结束游戏。开始游戏小球可以跳起来打砖块,移动鼠标实现托盘的移动,打到的砖块消失。如果托盘没有接到小球,那么生命值减一,共有三次生命,生命都用完时,可以继续或结束。1.2设计要求1.自定义屏幕二维坐标系:x轴水平向右为正,y轴垂直向上为正,坐标系原
2、点位于客户区中心。2.新加上两个类Brick类和Baffle类,分别用来定义并绘制砖块和托盘。3.使用定时器函数控制小球的运动。4.使用双缓冲技术实现动画。5.在TestView类中实现砖块的分布6.添加函数实现小球各种的碰撞速度大小和方向的改变。7.添加函数实现鼠标移动控制托盘。1.3效果图设计效果图如图1所示。图1小球打砖块效果图一、设计思路本设计首先构建双缓冲框架,小球和砖块、客户区边界发生碰撞后,改变运动方向。设置游戏关卡并绘制砖块分布。鼠标移动控制托盘。托盘没有接住小球,生命值则减一。游戏结束时显示对话框以便继续或退出
3、游戏。二、关键源代码及注释3.1关于窗口外观设计的代码:intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CFrameWnd::OnCreate(lpCreateStruct)==-1)return-1;SetMenu(NULL);//去掉菜单栏CMenu*p=GetSystemMenu(FALSE);p->RemoveMenu(SC_SIZE,MF_BYCOMMAND);//禁止改变窗口大小return0;}BOOLCMainFrame::PreCreateWin
4、dow(CREATESTRUCT&cs){if(!CFrameWnd::PreCreateWindow(cs))returnFALSE;theCREATESTRUCTcscs.style&=~(WS_MAXIMIZEBOX);//过滤最大化cs.x=100;cs.y=100;cs.cx=809;cs.cy=610;returnTRUE;}3.2Baffle类中的各种定义CBaffle::CBaffle(doublex,doubley,doublew,doubleh,doubles){m_XPos=x,m_YPos=y;m_Wid
5、th=w,m_Height=h,m_HalfW=w/2.0,m_HalfH=h/2.0;m_Speed=s,m_PreXPos=x;}voidCBaffle::SetPositionX(doublex)//设置x方向位置{m_PreXPos=m_XPos;m_XPos=x;}voidCBaffle::SetPositionY(doubley)//设置y方向位置{m_YPos=y;}voidCBaffle::SetWidth(doublew)//设置宽度{m_Width=w;m_HalfW=w/2.0;}voidCBaffle::
6、SetHeight(doubleh)//设置高度{m_Height=h;m_HalfH=h/2.0;}voidCBaffle::CalculateSpeed()//速度计算{m_Speed=(m_XPos-m_PreXPos);}voidCBaffle::DrawBaffle(CDC*pDC)//绘制托盘{CDCMemDC;MemDC.CreateCompatibleDC(pDC);CBitmapNewBitmap,*pOldBitmap;NewBitmap.LoadBitmap(IDB_BAFFLE);pOldBitmap=M
7、emDC.SelectObject(&NewBitmap);pDC->BitBlt(int(m_XPos-m_HalfW),int(m_YPos-m_HalfH+2),int(m_Width),int(m_Height),&MemDC,0,0,SRCCOPY);MemDC.DeleteDC();}voidCBaffle::SetSpeed(doubles){m_Speed=s;//设置速度}3.3Brick类中的各种定义CBrick::CBrick(doublex,doubley,doublew,doubleh){m_XPos=
8、x,m_YPos=y;m_Width=w,m_Height=h;m_HalfW=w/2.0,m_HalfH=h/2.0;m_Enable=TRUE;m_Score=0;m_Color=RGB(255,255,255);}voidCBrick::SetEnable