程序应用毕业设计论文.docx
- 文档编号:30469968
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:65
- 大小:75.99KB
程序应用毕业设计论文.docx
《程序应用毕业设计论文.docx》由会员分享,可在线阅读,更多相关《程序应用毕业设计论文.docx(65页珍藏版)》请在冰豆网上搜索。
程序应用毕业设计论文
常州信息职业技术学院
学生毕业设计(论文)报告
系别:
电子与电气工程学院
专业:
电子信息工程技术
班号:
电子076
学生姓名:
郁胜波
学生学号:
0708143608
设计(论文)题目:
基于MFCWindows程序设应用
指导教师:
徐磊
设计地点:
常州信息职业技术学院
起迄日期:
2009.7.1~2009.8.26
毕业设计(论文)任务书
专业电子信息工程班级电子076姓名郁胜波
一、课题名称:
基于MFCWindows程序设计应用
二、主要技术指标:
可以通过给出的选择方式让用户自由选择游戏模式,如单机版,对战版;
而且可以通过每步的运行查看当前运行的分数,还可以设置游戏的速度和游戏的难度。
三、工作内容和要求:
利用微软提供的MicrosoftVisualC++6.0软件和C++语言来设计传统但却具有创新意义的俄罗斯方块。
设计要求能够与传统保持不变的基础上添加双人对战版。
并且设计风格具有自己的特性。
可以选择单机版和对战版模式,由用户来选择。
游戏运行的速度可以让玩家自由限制。
四、主要参考文献:
[1]深入编程内幕—VisualC++EPUBCN.COMPUBLISHED
[2]TomArcherNishantSivaKumar[美]·MFC应用程序北京:
电子工业出版社
学生(签名)2009年6月26日
指导教师(签名)2009年6月26日
教研室主任(签名)2009年6月27日
系主任(签名)2009年6月28日
毕业设计(论文)开题报告
设计(论文)题目
基于MFCWindows程序设计应用
一、选题的背景和意义:
背景:
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事,它看似简单但却变化无穷,令人上瘾。
相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。
然而,很少有人知道,这个著名的游戏在80年代曾经在法律界掀起轩然大波,那就是著名的俄罗斯方块产权之争。
这次产权争夺,几家欢喜,几家哀愁,几家公司倒闭,几家公司赚钱,其中的是是非非,一言难尽。
意义:
游戏,并非为娱乐而生,而是一个严肃的人类自发活动,怀有生存技能培训和智力培养的目标。
二、课题研究的主要内容:
利用自己已学的知识和互联网的帮助,通过以微软提供的MicrosoftVisualC++6.0软件,采用以C++语言,设计俄罗斯方块。
主要研究的是俄罗斯方块运行的内在原理。
怎样通过以MFC提供的类库添加相应的代码完成的。
本设计不仅深入了解游戏运行的本质,也对基于MFC的库的理解和软件的熟练使用。
三、主要研究(设计)方法论述:
利用微软提供的强大的类库,借助MSDN工具查找相关用到的函数,借助游戏图形学来设计出经典而又富有创新的游戏。
把主题框架(主函数)写出来后,写实现每一个子功能的函数,即核心的地方开始写:
先分析这一自功能最核心要实现的是什么,把它完成了,测试无错,再一步步实现外层的功能,这样是提高效率的方法。
工作不可能一天干完,干的过程中要特别注意对流程的控制。
首先要有一个计划,从什么时候到什么时候要完成一件什么工作,在一个阶段要留一定的机动时间以应付突发的一些问题。
当然一个计划定出来之后不是完全一成不变,根据实际情况做相应的改变,但应尽量保持计划的权威性。
四、设计(论文)进度安排:
时间(迄止日期)
工作内容
2009.6.18~2009.6.25
准备论文题目
2009.6.26~2009.6.30
上交论文开题报告
2009.7.1~2009.8.1
论文初稿
2009.8.2~2009.8.25
论文修改,确定并提交论文
2009.8.26~2009.8.30
论文答辩
五、指导教师意见:
指导教师签名:
2009年7月3日
六、系部意见:
系主任签名:
2009年7月4日
【摘要】
【关键词】
引言……………………………………………………………………………………7
第一章游戏基础
1.1动画………………………………………………………………………………7
1.2位变………………………………………………………………………………9
1.3色变………………………………………………………………………………10
第二章游戏内核………………………………………………………………………13
第三章俄罗斯方块单机版
3.1资源编辑…………………………………………………………………………14
3.2变量函数…………………………………………………………………………14
3.3具体实现…………………………………………………………………………16
3.4附加内容…………………………………………………………………………28
第四章俄罗斯方块对战版
4.1变量函数…………………………………………………………………………29
4.2具体实现…………………………………………………………………………30
4.3附加内容…………………………………………………………………………36
第五章小结…………………………………………………………………………40
结束语……………………………………………………………………………………41
第六章答谢词…………………………………………………………………………41
参考文献…………………………………………………………………………………41
基于MFCWindows程序设计应用
摘要:
MFC(MicrosoftFoundationClassLibrary)中的各种class结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。
因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
MicrosoftVisualC++提供了相应的工具来完成这个工作:
AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过class库实现了应用程序特定的逻辑。
我们本次毕业设计任务是初步掌握让许多大专生望而却步、头疼的MFC程序,由于它涉及到Win32SDK、Windows内存管理以及相关图形学等,在此通过我们小时候喜欢玩的手掌游戏来让我们开始编写它吧,让我们知道小时候那种游戏的真正奥秘所在,并且通过编写完后不仅让我们感觉到的成就感,更是让我们懂得微软公司开发的软件VisualC++6.0的基于MFCWindows真正运行的原理。
关键词:
框架;接口
TheApplicationOfTheBaseOnTheMFCWindowsOfTheProgramDesigning
Abstract:
ThecombinationofallclassfromMFCmakesupaframeoftheapplication.Theaimistofoundtheapplicationoftheprogrammefromthebasefortheprogrammer.ThisisaneasierthanSDK.Because,fromabove,TheframeoftheMFChasbeendefinedtheoutlineoftheapplicationoftheprogrammeandoffersthenormalwaysfortheinterfaceoftheusers.Theonlythingtodofortheprogrammeristofillthematerialtheapplicationalprogrammethathasbeendefinedtotheframe.MicrosoftVisualC++hasbeenofferedtheralativetoolstofinishthejob.TheAppWizardcanformthebasicframeoftheprogramme(code,resourceandsoon);Thecompileoftheresourceishelpfulfortheinterfaceoftheuserstodesigndirectly.ClassWizardassisttofillcodesinthefileoftheframe.Atlast,Theapplicationaloftheprogrammehasbeenfinishedbyclassresources.
ThemajorofthethesisthatweneedtofinishistomastertheMFCprogrammethatmademanystudentsflinchandbothersome.BecauseitrelateswithWin32SDK、Windowsmemoryrequirementsgrahicsandsoon.Soletusdoitthatwehadbeenplayedthegamesthatwhenwewereyoung.Letusknowthearcanumofthegamesthatweplayedandwewillnotonlygettheaccomplishmentoftheenjoyment,buttheknowingoftherealworkingprinciplefromMFCoftheVisualC++6.0toolthattheMicrosoftCompanydeveloped.
Keywords:
FrameInterface
引言
VisalC++作为一个功能强大的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一。
Microsoft的基本类库MFC使得开发Windows应用程序比以往任何时候都要容易。
用微软的基本类库MFC开发出功能强大的Windows应用程序。
近几年来,面向对象技术无论在理论还是在实践上都在飞速地发展。
面向对象技术中最重要的的就是对象的概念。
它把现实世界中的气球、自行车等客观实体抽象成程序中的对象。
这种对象具有一定的属性和方法,当把面向对象技术应用到程序设计中时,程序员只是在编写对象方法时才需关心对象本身的细节问题。
MFC的英文全称是MicrosoftFundationClasses,及微软的基本类库,MFC的本质就是一个包含了许多微软公司已经定义好的对象类库。
我们根据自己的需要加上所需的特性和方法,产生一个更专门的,功能强大的对象,并根据需要不断完善对象的功能。
正是由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得我们编写的代码大大减少,有力地保证程序的良好的调试性。
有关技术问题:
本题材用到的软件是VisualC++6.0版本。
联机帮助文件MSDN。
ISO标准C++:
ISO兼容的C++编译器可以为控制台应用程序、Windows服务等项目生成本地(x86)可执行文件和库。
真正让人感兴趣的就是这个编译器与MFC类的结合运用。
第一章游戏基础
1.1动画
游戏是动画的延伸,只要知道了动画的原理,在动画变化时,使它根据键盘或鼠标的输入操作而变化,就是游戏了。
所以在介绍游戏编程之前,先讲讲动画。
动画一般分三种形式:
形变、位变、色变。
如下:
a.形变
即几种形状的图形或位图依次转变而成。
(图1-1)
先看一个简单的实例:
a.a. 新建工程1_1,选择单文档,完成。
b.b. 在view类加变量intituxing,并在构造函数里赋值为ituxing=0;
c.c. 在OnDraw(CDC*pDC)函数上添上以下语句:
voidCMy1_1View:
:
OnDraw(CDC*pDC)
{
CMy1_1Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
//清除当前图形
CBrushmybrush1;
mybrush1.CreateSolidBrush(RGB(255,255,255));
CRectmyrect1(0,0,1024,768);
pDC->FillRect(myrect1,&mybrush1);
//判断当前图形ituxing
if(ituxing==1)
//ituxing=1,画矩形
pDC->Rectangle(20,20,89,89);
elseif(ituxing==2)
//ituxing=2,画圆
pDC->Ellipse(20,20,89,89);
else
//否则,画三角形
{
pDC->MoveTo(20,20);
pDC->LineTo(89,45);
pDC->LineTo(20,89);
pDC->LineTo(20,20);
}
}
d.d. 添加OnTimer(UINTnIDEvent)和OnCreate(LPCREATESTRUCTlpCreateStruct),并加上语句如下:
voidCMy1_1View:
:
OnTimer(UINTnIDEvent)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
//获取指针pdc
CDC*pDC=GetDC();
//调用OnDraw(pDC)重画
OnDraw(pDC);
//使ituxing循环
ituxing=(ituxing+1)%3;
CView:
:
OnTimer(nIDEvent);
}
intCMy1_1View:
:
OnCreate(LPCREATESTRUCTlpCreateStruct)
{
if(CView:
:
OnCreate(lpCreateStruct)==-1)
return-1;
//TODO:
Addyourspecializedcreationcodehere
//设置更新时间
SetTimer(1,750,NULL);
return0;
}
e.e. 完成。
1.2位变
即同一个图形或位图依次在不同的位置上出现而形成动画。
(图1-2)
1234567
(图1-2)
实例1_2:
a.a. 复制实例1_1文件,改名为1_2。
把voidCMy1_1View:
:
OnTimer(UINTnIDEvent)中的ituxing=(ituxing+1)%3;改为ituxing=(ituxing+1)%10;
b.b. 把OnDraw(CDC*pDC)函数改为:
voidCMy1_1View:
:
OnDraw(CDC*pDC)
{
CMy1_1Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
//清除当前图形
CBrushmybrush1;
mybrush1.CreateSolidBrush(RGB(255,255,255));
CRectmyrect1(0,0,1024,768);
pDC->FillRect(myrect1,&mybrush1);
//用当前图形位置ituxing
//画圆
pDC->Ellipse(30*ituxing,30*ituxing,30*ituxing+50,30*ituxing+50);
}
c.c. 执行,OK!
1.3色变
图1-3
实例1_3:
a.a. 新建单文档工程1_3。
b.b. 添加参数inticolor并赋值为0。
c.c. 添加函数OnTimer(UINTnIDEvent)和OnCreate(LPCREATESTRUCTlpCreateStruct),并添加语句如下:
voidCMy1_3View:
:
OnTimer(UINTnIDEvent)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
icolor+=1;
//此函数使客户区失效,以致重画
Invalidate();
CView:
:
OnTimer(nIDEvent);
}
intCMy1_3View:
:
OnCreate(LPCREATESTRUCTlpCreateStruct)
{
if(CView:
:
OnCreate(lpCreateStruct)==-1)
return-1;
//TODO:
Addyourspecializedcreationcodehere
SetTimer(1,750,NULL);
return0;
}
d.d. 最后在OnDraw(CDC*pDC)加上画圆语句:
voidCMy1_3View:
:
OnDraw(CDC*pDC)
{
CMy1_3Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
//获取icolor值
inti=icolor;
//在不同位置画四个不同颜色的圆
Cbrushbrush1(RGB(20+(64*i)%255,140+(64*i)%255,210*(64+i)%255));
CBrush*pOldBrush1=pDC->SelectObject(&brush1);
pDC->Ellipse(300,200,350,250);
pDC->SelectObject(pOldBrush1);
CBrushbrush2(RGB(84+(64*i)%255,204+(64*i)%255,24+(64*i)%255));
CBrush*pOldBrush2=pDC->SelectObject(&brush2);
pDC->Ellipse(350,200,400,250);
pDC->SelectObject(pOldBrush2);
CBrushbrush3(RGB(148+(64*i)%255,14+(64*i)%255,88+(64*i)%255));
CBrush*pOldBrush3=pDC->SelectObject(&brush3);
pDC->Ellipse(300,250,350,300);
pDC->SelectObject(pOldBrush3);
CBrushbrush4(RGB(212+(64*i)%255,78+(64*i)%255,152+(64*i)%255));
CBrush*pOldBrush4=pDC->SelectObject(&brush4);
pDC->Ellipse(350,250,400,300);
pDC->SelectObject(pOldBrush4);
}
e.e. 完成。
以上是三种最基本的动画。
当然,具体情况不会这么简单,而往往的其中二或三种的复杂的结合。
而作为游戏,它的关键在:
在动画的基础上加一些主观的操作。
如先画一个球,然后用方向键或鼠标移动。
如实例1_4:
a.a. 新建单文档工程1_4。
b.b. 添加半径和圆心
intir;//半径
CPointcenter;//圆心
在CMy1_4View()中赋值如下:
CMy1_4View:
:
CMy1_4View()
{
//TODO:
addconstructioncodehere
center.x=400;
center.y=200;
ir=50;
}
c.c. 在OnDraw(CDC*pDC)函数中画圆
voidCMy1_4View:
:
OnDraw(CDC*pDC)
{
CMy1_4Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
//画圆
pDC->Ellipse(center.x-ir,center.y-ir,center.x+ir,center.y+ir);
}
d.d. 添加OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags),使它按照键盘方向键的操作而移动圆的位置。
如下:
voidCMy1_4View:
:
OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
//利用方向键左右上下移动20
switch(nChar)
{
caseVK_LEFT:
center.x-=20;
break;
caseVK_RIGHT:
center.x+=20;
break;
caseVK_UP:
center.y-=20;
break;
case
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 应用 毕业设计 论文