- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC课程设计说明书
●设计题目: 打砖块游戏
●所属系部: 计算机工程系
●专 业: 计算机科学与技术
●学 号: XXXX XXX
●姓 名: XXXX
●指导教师: XXXX
●设计日期: 12-26
设计任务
任务描述
使用MFC框架设计一个打砖块游戏。在客户区内显示砖块分布,小球和托盘。按空格键开始游戏,Esc键结束游戏。开始游戏小球可以跳起来打砖块,移动鼠标实现托盘的移动,打到的砖块消失。如果托盘没有接到小球,那么生命值减一,共有三次生命,生命都用完时,可以继续或结束。
设计要求
自定义屏幕二维坐标系:x轴水平向右为正,y轴垂直向上为正,坐标系原点位于客户区中心。
新加上两个类Brick类和Baffle类,分别用来定义并绘制砖块和托盘。
使用定时器函数控制小球的运动。
使用双缓冲技术实现动画。
在TestView类中实现砖块的分布
添加函数实现小球各种的碰撞速度大小和方向的改变。
添加函数实现鼠标移动控制托盘。
效果图
设计效果图如图1所示。
图1 小球打砖块效果图
设计思路
本设计首先构建双缓冲框架,小球和砖块、客户区边界发生碰撞后,改变运动方向。设置游戏关卡并绘制砖块分布。鼠标移动控制托盘。托盘没有接住小球,生命值则减一。游戏结束时显示对话框以便继续或退出游戏。
关键源代码及注释
3.1 关于窗口外观设计的代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
SetMenu(NULL);//去掉菜单栏
CMenu* p=GetSystemMenu(FALSE);
p-RemoveMenu(SC_SIZE,MF_BYCOMMAND);//禁止改变窗口大小
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
the CREATESTRUCT cs
cs.style =~(WS_MAXIMIZEBOX); //过滤最大化
cs.x = 100;
cs.y = 100;
cs.cx = 809;
cs.cy = 610;
return TRUE;
}
3.2 Baffle类中的各种定义
CBaffle::CBaffle(double x,double y,double w,double h,double s)
{
m_XPos=x,m_YPos=y;
m_Width=w,m_Height=h,m_HalfW=w/2.0,m_HalfH=h/2.0;
m_Speed=s,m_PreXPos=x;
}
void CBaffle::SetPositionX(double x)//设置x方向位置
{
m_PreXPos=m_XPos;
m_XPos=x;
}
void CBaffle::SetPositionY(double y)//设置y方向位置
{
m_YPos=y;
}
void CBaffle::SetWidth(double w)//设置宽度
{
m_Width=w;
m_HalfW=w/2.0;
}
void CBaffle::SetHeight(double h)//设置高度
{
m_Height=h;
m_HalfH=h/2.0;
}
void CBaffle::CalculateSpeed()//速度计算
{
m_Speed=(m_XPos-m_PreXPos);
}
void CBaffle::DrawBaffle(CDC* pDC)//绘制托盘
{
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap NewBitmap,*pOldBitmap;
NewBitmap.LoadBitmap(IDB_BAFFLE);
pOldBitmap=MemDC.SelectObject(NewBitmap);
pDC-BitBlt(int(m_XPos-m_HalfW),int(m_YPos-m_HalfH+2),int(m_Width),int(m_He
您可能关注的文档
最近下载
- GB50086-2015 岩土锚杆与喷射混凝土支护工程技术规范.docx
- T GAIA 031—2025 人血清中米酵菌酸的测定 高效液相色谱-串联质谱法.pdf VIP
- 内蒙古森工集团招聘考试真题2024.docx VIP
- 铁路客运组织.pptx VIP
- 2025江苏苏州市农业发展集团有限公司下属子公司工作人员招聘13人考试备考试题及答案解析.docx VIP
- 火车过桥问题课件.ppt VIP
- 2025年农村生活污水治理资金申请专项报告.docx
- YS_T 1092-2015有色重金属冶炼渣回收的铁精粉.pdf
- 主体结构验收汇报施工单位最新.doc VIP
- 05X101-2 地下通信线缆敷设(OCR).pdf VIP
文档评论(0)