东南大学MFC课程设计个人小结Word文件下载.docx
- 文档编号:15908458
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:12
- 大小:17.89KB
东南大学MFC课程设计个人小结Word文件下载.docx
《东南大学MFC课程设计个人小结Word文件下载.docx》由会员分享,可在线阅读,更多相关《东南大学MFC课程设计个人小结Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
本人在项目设计的过程中主要担任程序编写的工作,包括程序设计、代码编写、代码检查修改等。
1.2搜集资料
在程序编写的过程中我需要上网查找各种相关资料,阅读相关书籍,从而有足够的知识去编写程序。
1.3提供建议及解释
在项目需要做presentation的时候,我会给做presentation的同学提供一些建议以及程序代码的解释,让他更了解我们的程序,做好充分准备。
在项目需要撰写报告的时候,我会给撰写报告的同学提供一些建议以及程序代码的解释,以便他写好报告。
2二、遇到的困难
2.1核心算法的设计
此困难在于我们以前从没试过设计游戏,因此不知道怎样去用计算机的语言来表达推箱子游戏的规则。
2.2显示的方法
老师一直在强调后台的程序运行和前台的显示应该是分开的,最终才连接起来,其中的连接问题是比较困扰的,也是无法用计算机的语言去表达这种“连接”。
2.3插入图片
我们小组的打算本来是不用枯燥的小人作推箱子的,想换成一个同学的头像,但是一直苦于没找到这么一个函数:
在指定的坐标插入指定大小的图片。
2.4地图的表示方法
我们想要知道怎样储存地图的信息,怎样的表示方法可以完全包含地图的信息。
3三、如何解决困难
3.1核心算法的设计
核心算法我们采用三个点的坐标来控制游戏的进行:
第一个点的坐标是小人当前的位置;
第二个点的坐标是小人将要走向的位置;
第三个点的坐标是,如果小人走向的是箱子,箱子将要被推向到那一点的坐标。
利用这三个坐标可以实现游戏的基本规则设置。
比如,如果小人将要走向的位置是箱子,而箱子前面是空地,那么将“箱子在空地上”改为“人在空地上”;
将“空地”改成“箱子在空地上”;
再将原来的“人在空地上”改为“空地”。
下面是对应的代码:
voidCBoxMan:
:
UpdateMap(intx1,inty1,intx2,inty2,intx3,inty3)
{
switch(m_cMap[y2][x2])
{
caseMAP_BACKGROUP:
//地图设计错误,不应该出现
AfxMessageBox("
wrongmap"
);
break;
caseMAP_WHITEWALL:
//遇到墙,不做任何事情
caseMAP_BLUEWALL:
//通道,可以行走
m_cMap[y2][x2]=MAP_MANWALL;
if(m_cMap[y1][x1]==MAP_MANWALL)
m_cMap[y1][x1]=MAP_BLUEWALL;
elseif(m_cMap[y1][x1]==MAP_MANBALL)
m_cMap[y1][x1]=MAP_BALL;
m_ptManPosition.x=x2;
m_ptManPosition.y=y2;
m_soundState=SOUND_STATE_MOVE;
caseMAP_BALL:
//目的地,可以行走
m_cMap[y2][x2]=MAP_MANBALL;
caseMAP_YELLOWBOX:
//箱子
if(m_cMap[y3][x3]==MAP_BALL)//目的地可以行走
m_cMap[y3][x3]=MAP_REDBOX;
m_soundState=SOUND_STATE_PUSH;
}
elseif(m_cMap[y3][x3]==MAP_BLUEWALL)//通道,可以行走
m_cMap[y3][x3]=MAP_YELLOWBOX;
caseMAP_REDBOX:
//安放好的箱子
m_soundState=SOUND_STATE_PUSH;
}
caseMAP_MANWALL:
caseMAP_MANBALL:
}
至于如何判断游戏是否完成,我们采用的方法是,扫描一次全地图,如果全地图上没有“人在目的地”或者“目的地上什么都没有”这两项,那么游戏完成。
对应代码如下:
boolCBoxMan:
IsFinish()
boolbFinish=true;
for(inti=0;
i<
M_TAB_HEIGHT;
i++)
for(intj=0;
j<
M_TAB_WIDTH;
j++)
if(m_cMap[i][j]==MAP_BALL||m_cMap[i][j]==MAP_MANBALL)
bFinish=false;
returnbFinish;
3.2显示的方法以及插入图片
鉴于我们最终还是没能找到那个函数(在指定的坐标插入指定大小的图片),最终我们采用用函数画图的方法来显示当前游戏的状况,对应代码如下:
DrawGameArea(CDC*pDC)
inti,j,x,y;
//绘制整个地图游戏区域
for(i=0;
for(j=0;
x=j*BLOCK_WIDTH;
y=i*BLOCK_HEIGHT;
switch(m_cMap[i][j])
//背景
DrawBackGroup(x,y,pDC);
//墙
DrawWhiteWall(x,y,pDC);
//通道
DrawBlueWall(x,y,pDC);
//目的地
DrawBall(x,y,pDC);
//未安放好的箱子
DrawYellowBox(x,y,pDC);
//安放好的箱子
DrawRedBox(x,y,pDC);
//人在通道区域
DrawManWall(x,y,pDC);
//人在目的地区域
DrawManBall(x,y,pDC);
//获取旧的文本配置
COLORREFcrOldText=pDC->
GetTextColor();
COLORREFcrOldBack=pDC->
GetBkColor();
//更改当前的文本配置
pDC->
SetTextColor(RGB(0,0,102));
SetBkColor(RGB(0,0,0));
//输出文本
CStringsTmp;
sTmp.Format("
当前关数:
%d"
m_iMissionNum);
TextOut(50,270,sTmp);
//恢复原来文本配置
SetTextColor(crOldText);
SetBkColor(crOldBack);
//
//绘制背景
DrawBackGroup(intx,inty,CDC*pDC)
COLORREFclr=RGB(0,0,0);
FillSolidRect(x,y,BL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 MFC 课程设计 个人 小结