📄 gamemain.cpp
字号:
TalkText(Girl2Face,"你最好看看军机处的资料.","小百合");
TalkText(YouFace,"谢谢.","Leo");
enter_6=true;
return;
}
if ((Scene==5)&&(ObjTmp_x==4)&& (ObjTmp_y==4)&&(enter_6)){
TalkText(WizaFace,"资料说,靖国神社中央 >>","Airy");
TalkText(WizaFace,"有一个小太阳神像","Airy");
TalkText(WizaFace,"它是邪恶力量之源.","Airy");
TalkText(YouFace,"了解.","Leo");
hStory=4;
return;
}
break;
//////////////////////
case 4:
if ((Scene==6)&&(ObjTmp_x==5)&& (ObjTmp_y==4)){
TalkText(Boy3Face,"Leo,我们都支持你!","城之内");
TalkText(YouFace,"谢谢,城之内.","Leo");
talk_czn=true;
return;
}
if ((Scene==6)&&(ObjTmp_x==6)&& (ObjTmp_y==4)){
TalkText(Girl1Face,"Leo,一定要成功啊!","杏子");
TalkText(YouFace,"我不会让你失望的,杏子.","Leo");
talk_xz=true;
return;
}
if ((Scene==6)&&(ObjTmp_x==7)&& (ObjTmp_y==4)){
TalkText(Girl3Face,"Leo,无论多艰难 >>","安倍绍惠");
TalkText(Girl3Face,"都不要放弃!","安倍绍惠");
TalkText(YouFace,"我一定不放弃.","Leo");
talk_apsh=true;
return;
}
break;
//////////////////////
case 5:
if ((Scene==7)&&(ObjTmp_x==8)&& (ObjTmp_y==4)&&(!Get_sun)&&(!enter_9)){
TalkText(Boy4Face,"Leo,你果然来了!","东条纯四");
TalkText(Boy4Face,"先给你看看我抓的一个人","东条纯四");
MoveNPC(1,Role_UP);
MoveNPC(1,Role_UP);
TalkText(YouFace,"东史郎!","Leo");
TalkText(Boy2Face,"Leo!救我!","东史郎");
enter_9=true;
return;
}
if ((Scene==7)&&(ObjTmp_x==6)&& (ObjTmp_y==5)&&(!Get_sun)&&(enter_9)){
TalkText(YouFace,"什么破太阳神!我把你打碎!","Leo");
Map[Scene].Data[5][6]=Floor1;
Get_sun=true;
TalkText(Boy4Face,"啊!怎么了!我在融化啊!","东条纯四");
TalkText(YouFace,"切!大笨蛋!","Leo");
NPC[Scene].NPCs[0].seeable=0;
DrawTmpMap(7);
MoveNPC(1,Role_DOWN);
TalkText(Boy2Face,"Leo!你成功啦!","东史郎");
TalkText(YouFace,"是啊!成功啦!","Leo");
TalkText(WizaFace,"Leo,恭喜啦!","Airy");
TalkText(Boy2Face,"我们回家玩吧,好吗?","东史郎");
TalkText(YouFace,"好啊,反正一切都过去了…","Leo");
TalkText(Boy2Face,"我们走吧—— >>","东史郎");
TalkText(Boy2Face,"看,Leo,太阳怎么那么紫啊?","东史郎");
TalkText(YouFace,"邪恶的太阳要下山了 >>.","Leo");
TalkText(YouFace,"就变紫了.","Leo");
TalkText(Boy2Face,"那明天早上,我们去看看 >>","东史郎");
TalkText(Boy2Face,"新的太阳的升起,它一定很美丽","东史郎");
TalkText(YouFace,"是啊,和平永远都是美丽的…","Leo");
TalkText(WizaFace,"那游戏就到这里吧!","Airy");
WinExec("Res\\Mplayer.exe",SW_SHOW);//播放片尾视频
ReleaseObjs();
PostQuitMessage(0);
return;
}
break;
//////////////////////
}
}
void CheckEvent(int Obj_y,int Obj_x)
{
switch(hStory)
{
case 0:
if ((Scene==0)&&(Role_X==7)&& (Role_Y==0)){//进入走廊
Scene=1;
DrawTmpMap(0);
Role_X=10;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入走廊");
if ((visit_1==true) && (visit_2==true) && (enter_3==true)){TalkText(WizaFace,"回基地吧.","Airy");TalkText(YouFace,"好的","Leo");hStory=1;}
return;
}
if ((Scene==1)&&(Role_X==10)&& (Role_Y==0)){//进入基地
Scene=0;
DrawTmpMap(1);
Role_X=7;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入基地");
return;
}
if ((Scene==1)&&(Role_X==7)&& (Role_Y==0)){//进入东史郎家
Scene=2;
DrawTmpMap(1);
Role_X=7;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入东史郎家");
if (!enter_2){ MoveNPC(0,Role_UP);MoveNPC(0,Role_UP);MoveNPC(0,Role_LEFT);MoveNPC(0,Role_UP);enter_2=true;}
return;
}
if ((Scene==2)&&(Role_X==7)&& (Role_Y==0)){//进入走廊
Scene=1;
DrawTmpMap(2);
Role_X=7;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入走廊");
if ((visit_1==true) && (visit_2==true) && (enter_3==true)){TalkText(WizaFace,"回基地吧.","Airy");TalkText(YouFace,"好的","Leo");hStory=1;}
return;
}
if ((Scene==1)&&(Role_X==4)&& (Role_Y==0)){//进入东条纯四家
Scene=3;
DrawTmpMap(1);
Role_X=4;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入东条纯四家");
if (!enter_1){ MoveNPC(0,Role_UP);MoveNPC(0,Role_RIGHT);enter_1=true;}
return;
}
if ((Scene==3)&&(Role_X==4)&& (Role_Y==0)){//进入走廊
Scene=1;
DrawTmpMap(3);
Role_X=4;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入走廊");
if ((visit_1==true) && (visit_2==true) && (enter_3==true)){TalkText(WizaFace,"回基地吧.","Airy");TalkText(YouFace,"好的","Leo");hStory=1;}
return;
}
if ((Scene==1)&&(Role_X==1)&& (Role_Y==0)){//进入佐藤洋一家
Scene=4;
DrawTmpMap(1);
Role_X=6;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入佐藤洋一家");
TalkText(WizaFace,"这家好像没人啊..","Airy");
TalkText(YouFace,"奇怪..","Leo");
enter_3=true;
return;
}
if ((Scene==4)&&(Role_X==6)&& (Role_Y==0)){//进入走廊
Scene=1;
DrawTmpMap(4);
Role_X=1;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入走廊");
if ((visit_1==true) && (visit_2==true) && (enter_3==true)){TalkText(WizaFace,"回基地吧.","Airy");TalkText(YouFace,"好的","Leo");hStory=1;}
return;
}
return;
break;
////////////////////
case 1:
if ((Scene==1)&&(Role_X==10)&& (Role_Y==0)){//进入基地
Scene=0;
DrawTmpMap(1);
Role_X=7;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入基地");
NPC[Scene].NPCs[0].seeable =true;
DrawTmpScene(0);
if (!enter_4){
MoveNPC(0,Role_UP);
MoveNPC(0,Role_RIGHT);
enter_4=true;}
return;
}
if ((Scene==0)&&(Get_Sunzi==true)&& (Get_Sanshi==true) && !visit_4){
TalkText(WizaFace,"都有了,我们去找佐藤洋一","Airy");
visit_4=true;
hStory=2;
return;
}
return;
break;
///////////////////////////////
case 2:
if ((Scene==0)&&(Role_X==7)&& (Role_Y==0)){//进入走廊
Scene=1;
DrawTmpMap(0);
Role_X=10;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入走廊");
return;
}
if ((Scene==1)&&(Role_X==10)&& (Role_Y==0)){//进入基地
Scene=0;
DrawTmpMap(1);
Role_X=7;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入基地");
return;
}
if ((Scene==1)&&(Role_X==1)&& (Role_Y==0)){//进入佐藤洋一家
Scene=4;
DrawTmpMap(1);
Role_X=6;
Role_Y=1;
NPC[Scene].NPCs[0].seeable=true;
DrawTmpScene(4);
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入佐藤洋一家");
if (!enter_zuo){ MoveNPC(0,Role_UP);MoveNPC(0,Role_UP);MoveNPC(0,Role_RIGHT);enter_zuo=true;}
}
return;
break;
//////////////////////////////////
case 3:
if ((Scene==4)&&(Role_X==2)&& (Role_Y==0)){//进入军机处
Scene=5;
DrawTmpMap(4);
Role_X=7;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入军机处");
if (!enter_5){
MoveNPC(0,Role_UP);
MoveNPC(0,Role_RIGHT);
enter_5=true;}
return;
}
return;
break;
/////////////////////////////////
case 4:
if ((Scene==5)&&(Role_X==4)&& (Role_Y==0)){//进入内阁
Scene=6;
DrawTmpMap(5);
Role_X=6;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入内阁");
if (!enter_7){
MoveNPC(0,Role_UP);
MoveNPC(0,Role_UP);
MoveNPC(1,Role_UP);
MoveNPC(1,Role_UP);
MoveNPC(2,Role_UP);
MoveNPC(2,Role_UP);
enter_7=true;
}
return;
}
if ((Scene==6)&&(Role_X==6)&& (Role_Y==0)&&(talk_apsh)&&(talk_czn)&&(talk_xz)){//进入军机处
Scene=5;
DrawTmpMap(6);
Role_X=4;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入军机处");
hStory=5;
return;
}
break;
////////////////////////////
case 5:
if ((Scene==5)&&(Role_X==1)&& (Role_Y==0)){//进入靖国神社
Scene=7;
DrawTmpMap(5);
Role_X=9;
Role_Y=1;
Map_x=(4-Role_X)*32;
Map_y=(3-Role_Y)*32;
Role_Status=Role_DOWN;
DrawInCheckEvent();
Enter_Scene("进入靖国神社");
TalkText(WizaFace,"靖国神社到了,你要小心啊","Airy");
TalkText(YouFace,"鬼子们也要小心我啦!","Leo");
if (!enter_8){
MoveNPC(0,Role_UP);
MoveNPC(0,Role_RIGHT);
enter_8=true;
}
return;
}
break;
}
}
bool CanMove(int Obj_y,int Obj_x)
{
ObjTmp_x=Obj_x;
ObjTmp_y=Obj_y;
ObjTmp=GetObj(Obj_y,Obj_x);
if ( ObjTmp==Floor1 || ObjTmp==Floor2 || ObjTmp==Door || ObjTmp==Carpet1
|| ObjTmp==Carpet2 || ObjTmp==Carpet3 || ObjTmp==Carpet4 || ObjTmp==Carpet5 ||
ObjTmp==Carpet6 || ObjTmp==Carpet7 || ObjTmp==CarpetM || ObjTmp==CarpetL||ObjTmp==Ladder) return true;
return false;
}
void CheckSysMsg(void)
{
MSG msg;
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&msg,NULL,0,0)) return;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
void DrawInCheckEvent(void)
{
int x;
int y;
int x1;
int y1;
x=4*Bmp_Width;
y=3*Bmp_Width;
x1=Role_Act*Bmp_Width+1;
y1=Role_Status*Bmp_Height+1;
ClearScr();
BitBlt(memDC,Map_x,Map_y,(Map[Scene].Width+1)*32 ,(Map[Scene].Height+1)*32,TmpSceneDC,0,0,SRCCOPY);
BitBlt(memDC,x,y,Bmp_Width,Bmp_Height,MainRoleDC,x1,y1,SRCAND);
BitBlt(memDC,x,y,Bmp_Width,Bmp_Height,MainRoleDC,x1+Bmp_Width*3,y1,SRCPAINT);
Draw();
}
void DrawInTalkText(void)
{
int x;
int y;
int x1;
int y1;
x=4*Bmp_Width;
y=3*Bmp_Width;
x1=Role_Act*Bmp_Width+1;
y1=Role_Status*Bmp_Height+1;
ClearScr();
BitBlt(memDC,Map_x,Map_y,(Map[Scene].Width+1)*32 ,(Map[Scene].Height+1)*32,TmpSceneDC,0,0,SRCCOPY);
BitBlt(memDC,x,y,Bmp_Width,Bmp_Height,MainRoleDC,x1,y1,SRCAND);
BitBlt(memDC,x,y,Bmp_Width,Bmp_Height,MainRoleDC,x1+Bmp_Width*3,y1,SRCPAINT);
BitBlt(memDC,0,236,320,42,msgboxDC,1,1,SRCAND);
BitBlt(memDC,0,236,320,42,msgboxDC,1,43,SRCPAINT);
TextOut(memDC,1,1, Map[Scene].name ,strlen(Map[Scene].name));
BitBlt(windowDC,0,0,325,320,memDC,0,0,SRCCOPY);
}
void DrawTmpScene(int Old_Scene)
{
int k;
int j;
k=Map[Old_Scene].Height;
j=Map[Old_Scene].Width;
rect.left =0;
rect.top =0;
rect.right =j*32;
rect.bottom = k*32;
FillRect(TmpSceneDC, &rect, (HBRUSH)GetStockObject(BLACK_BRUSH));
BitBlt(TmpSceneDC,0,0,(Map[Scene].Width+1)*32,(Map[Scene].Height+1)*32,TmpMapDC,0,0,SRCCOPY);
for (int i=0;i<Map[Scene].NpcNo;i++)
{
int TmpNPC_x=NPC[Scene].NPCs[i].Pos_x*32;
int TmpNPC_y=(NPC[Scene].NPCs[i].Pos_y)*32;
int Tmp_y1=NPC[Scene].NPCs[i].NPC_Status*Bmp_Height+1;
int Tmp_name=NPC[Scene].NPCs[i].name;
int cansee=NPC[Scene].NPCs[i].seeable;
if (cansee==1)
{
BitBlt(TmpSceneDC,TmpNPC_x ,TmpNPC_y,32,64,NameToDC(Tmp_name),1,Tmp_y1,SRCAND);
BitBlt(TmpSceneDC,TmpNPC_x ,TmpNPC_y,32,64,NameToDC(Tmp_name),97,Tmp_y1,SRCPAINT);
}
}
}
HDC const NameToDC(int tempint)
{
switch (tempint){
case 1:
return Boy1DC;
break;
case 2:
return Boy2DC;
break;
case 3:
return Girl1DC;
break;
case 4:
return Girl2DC;
}
}
void Enter_Scene(char * chr)
{
BitBlt(memDC,45,126,230,40,DiagDC,0,0,SRCCOPY);
TextOut(memDC,66,136,chr,strlen(chr));
Draw();
Delay(1000);
while(GetAsyncKeyState(VK_UP))
{CheckSysMsg();}
while(GetAsyncKeyState(VK_SPACE))
{CheckSysMsg();}
ClearScr();
DrawInCheckEvent();
Draw();
}
void ReleaseObjs(void)
{
for( int i=0; i<MAX_MAPS; i++)
{ delete[] NPC[i].NPCs;
for (int j=0;j<Map[i].Height;j++)
{
delete []Map[i].Data[j];
}
}
//释放
ReleaseDC(hwnd,MainRoleDC);
ReleaseDC(hwnd,windowDC);
ReleaseDC(hwnd,memDC);
ReleaseDC(hwnd,msgboxDC);
ReleaseDC(hwnd,MapDC);
ReleaseDC(hwnd,TmpMapDC);
ReleaseDC(hwnd,FaceDC);
ReleaseDC(hwnd,TmpSceneDC);
ReleaseDC(hwnd,Boy1DC);
ReleaseDC(hwnd,Boy2DC);
ReleaseDC(hwnd,Girl1DC);
ReleaseDC(hwnd,Girl2DC);
ReleaseDC(hwnd,DiagDC);
DeleteObject(MainRoleBMP);
DeleteObject(memBMP);
DeleteObject(msgboxBMP);
DeleteObject(MapBMP);
DeleteObject(Font);
DeleteObject(TmpMapBMP);
DeleteObject(TmpSceneBMP);
DeleteObject(Boy1BMP);
DeleteObject(Boy2BMP);
DeleteObject(Girl1BMP);
DeleteObject(Girl2BMP);
DeleteObject(DiagBMP);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -