K多媒体111朱在吉综合作业报告Word文档下载推荐.docx
- 文档编号:20487203
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:37
- 大小:551.14KB
K多媒体111朱在吉综合作业报告Word文档下载推荐.docx
《K多媒体111朱在吉综合作业报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《K多媒体111朱在吉综合作业报告Word文档下载推荐.docx(37页珍藏版)》请在冰豆网上搜索。
我们可以利用“if-else”条件句以及“switch-case”语句这类的判断式来完成。
voidSenceMove(HWNDhwnd,HDChdc,HDCmemDC,intScreen)
{
switch(Screen)
{
case1:
//战?
斗·
场?
景°
{
PaintBattle(hwnd,hdc,memDC);
}break;
case2:
//特?
殊篴战?
toolgate++;
_sleep(500);
InvalidateRect(hwnd,NULL,FALSE);
ZeroMemory(maps,sizeof(maps));
TCHARtogate[256];
ZeroMemory(togate,sizeof(togate)/sizeof(TCHAR));
wsprintf(togate,TEXT("
%d.map"
),toolgate);
FILE*fp;
fp=fopen(togate,"
r+"
);
fread(maps,sizeof(MAP),320,fp);
fclose(fp);
LoadMap(hdc,memDC);
SenceMove(hwnd,hdc,memDC,maps[hero.x][hero.y].Global);
case3:
//商Θ?
店台?
读á
取?
case4:
PaintEnd(hwnd,hdc,memDC);
//读á
结á
束?
case5:
//关?
卡¨
偏?
移?
门?
楼¥梯琘,?
switch(maps[hero.x][hero.y].Events)
{
case35:
toolgate++;
break;
case36:
toolgate--;
default:
}
case99:
//升级?
PaintLevel(hwnd,hdc,memDC);
case100:
//死à
亡?
PaintDead(hwnd,hdc,memDC);
default:
break;
}
}
voidHeroPaint(HDChdc,HDCmemDC)//英?
雄?
行D走?
voidLoadMap(HDChdc,HDCmemDC)//读á
地?
图?
voidMain_OnKey(HWNDhwnd,UINTvk,BOOLfDown,intcRepeat,UINTflags)//Main_OnKey
voidSenceMove(HWNDhwnd,HDChdc,HDCmemDC,intScreen)//场?
voidEnemyPaint(HWNDhwnd,HDChdc,HDCmemDC)//场?
怪?
物?
voidBattleEnemyPaint(HDChdc,HDCmemDC)//战?
画-面?
功能流程图:
游戏开始
第二关
第一关
战斗
失败胜利
英雄死亡场景
英雄加经验
特殊战斗
概率
英雄升级
进入商店
与大魔王对战
失败
游戏结束
胜利
三、设计步骤说明
1.开发环境配置(路径、头文件、静态或动态链接库等):
头文件:
resource.h、OEM.h、map.h、stdafx.h
2.全局以及局部的各种变量说明
3.自定义类及其成员函数的说明
怪物
英雄
4.实现功能的关键代码及代码含义。
POINThero;
//英?
坐?
标
MAPmaps[20][16];
inttoolgate=1;
intMkeydown=0;
//0无T1下?
2左哩?
3上?
4右?
intidown=0,iup=0,ileft=0,iright=0;
TCHARmoney[256];
TCHARlose[256];
voidMain_OnPaint(HWNDhwnd)
HINSTANCEhi=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
PAINTSTRUCTps;
HDChdc;
hdc=BeginPaint(hwnd,&
ps);
HDCmemDC=CreateCompatibleDC(hdc);
HDCmemDC2=CreateCompatibleDC(hdc);
if(maps[hero.x][hero.y].Events!
=0)
//场?
SenceMove(hwnd,hdc,memDC,maps[hero.x][hero.y].Global);
else
//Map
HBITMAPBitMap=LoadBitmap(hi,MAKEINTRESOURCE(IDB_WALL));
SelectObject(memDC,BitMap);
LoadMap(hdc,memDC);
DeleteObject(BitMap);
//Hero
HBITMAPHero=LoadBitmap(hi,MAKEINTRESOURCE(IDB_HERO));
SelectObject(memDC,Hero);
HeroPaint(hdc,memDC);
DeleteObject(Hero);
//Enemy
EnemyPaint(hwnd,hdc,memDC);
ReleaseDC(hwnd,memDC);
EndPaint(hwnd,&
//////////////////////////////////////////////////////////////////////////
//英?
voidHeroPaint(HDChdc,HDCmemDC)
switch(Mkeydown)
case0:
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HERODOWN,RGB(0,0,0));
//下?
if(idown%3==0)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HERODOWN,RGB(0,0,0));
elseif(idown%3==1)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HERODOWN1,RGB(0,0,0));
elseif(idown%3==2)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HERODOWN2,RGB(0,0,0));
//左哩?
if(ileft%3==0)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HEROLEFT,RGB(0,0,0));
elseif(ileft%3==1)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HEROLEFT1,RGB(0,0,0));
elseif(ileft%3==2)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HEROLEFT2,RGB(0,0,0));
//上?
if(iup%3==0)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HEROUP,RGB(0,0,0));
elseif(iup%3==1)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HEROUP1,RGB(0,0,0));
elseif(iup%3==2)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HEROUP2,RGB(0,0,0));
//右?
if(iright%3==0)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HERORIGHT,RGB(0,0,0));
elseif(iright%3==1)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HERORIGHT1,RGB(0,0,0));
elseif(iright%3==2)
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HERORIGHT2,RGB(0,0,0));
TransparentBlt(hdc,32*hero.x,32*hero.y,32,31,memDC,HERODOWN,RGB(0,0,0));
break;
voidLoadMap(HDChdc,HDCmemDC)
inti,j;
for(i=0;
i<
20;
i++)
for(j=0;
j<
15;
j++)
switch(maps[i][j].Expect)
case0:
TransparentBlt(hdc,32*i,32*j,32,32,memDC,EXPECT1,RGB(255,255,255));
case1:
TransparentBlt(hdc,32*i,32*j,32,32,memDC,EXPECT2,RGB(255,255,255));
......
......
case8:
TransparentBlt(hdc,32*i,32*j,32,32,memDC,EXPECT9,RGB(255,255,255));
case9:
//////////////////////////////////////////////////////////////////////////
//树骸?
背?
此?
处鋦错洙?
误ó
TransparentBlt(hdc,32*i,32*j,32,32,memDC,EXPECT7,RGB(255,255,255));
TransparentBlt(hdc,32*i,32*j,32,32,memDC,EXPECT10,RGB(255,255,255));
}
//Main_OnKey
//E2(材?
质ê
2)30生Θ?
命ü
药?
水?
31攻¥+32防え?
33武?
器÷
34防え?
具?
35上?
楼¥梯琘36下?
楼¥梯琘
voidMain_OnKey(HWNDhwnd,UINTvk,BOOLfDown,intcRepeat,UINTflags)
InvalideHero.left=32*(hero.x-2);
InvalideHero.right=32*(hero.x+2);
InvalideHero.top=32*(hero.y-2);
InvalideHero.bottom=32*(hero.y+2);
switch(vk)
caseVK_DOWN:
{
if(maps[hero.x][hero.y].Events==0)
Mkeydown=1;
if((hero.y<
14)&
&
(!
maps[hero.x][hero.y+1].Block))//碰?
撞?
路·
径?
检ì
测a
{
hero.y++;
idown++;
if(maps[hero.x][hero.y].Events!
{
InvalidateRect(hwnd,FALSE,NULL);
return;
}
InvalidateRect(hwnd,&
InvalideHero,FALSE);
}
else
elseif(maps[hero.x][hero.y].Events>
29)
switch(maps[hero.x][hero.y].Events)
case30:
if(hr.Life<
400)
{
hr.Life+=100;
}
else
hr.Life=500;
break;
case31:
hr.attack+=20;
}break;
case32:
hr.recover+=5;
case33:
hr.addedattack+=20;
case34:
hr.addrecover+=5;
case36:
HDChdc=GetDC(hwnd);
HDCmemDC=CreateCompatibleDC(hdc);
LoadMap(hdc,memDC);
ReleaseDC(hwnd,memDC);
ReleaseDC(hwnd,hdc);
default:
maps[hero.x][hero.y].Events=0;
InvalidateRect(hwnd,&
caseVK_LEFT:
.....
.....
caseVK_RIGHT:
Mkeydown=4;
if((hero.x<
19)&
maps[hero.x+1][hero.y].Block))
hero.x++;
iright++;
InvalidateRect(hwnd,FALSE,NULL);
return;
......
caseVK_UP:
.....
caseVK_RETURN:
if((hr.Life>
0)&
(maps[hero.x][hero.y].Events!
=0))
maps[hero.x][hero.y].Global=0;
InvalidateRect(hwnd,NULL,FALSE);
caseVK_ESCAPE:
if(IDYES==MessageBox(hwnd,TEXT("
确ā?
认?
退?
出?
?
"
),TEXT("
信?
息¢"
),MB_YESNO|MB_ICONINFORMATION|MB_DEFBUTTON2))
PostQuitMessage(0);
//场?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多媒体 111 综合 作业 报告