📄 loadsave.cpp
字号:
//==============存取进度函数==================
void SaveIt(int Num)
{
char *FileName[]={"save\\1.sav","save\\2.sav","save\\3.sav","save\\4.sav","save\\5.sav"};
FILE *fp;
fp=fopen(FileName[Num],"wb");
fwrite(&Scene,4,1,fp);
fwrite(&SX,4,1,fp);
fwrite(&SY,4,1,fp);
fwrite(&old_SX,4,1,fp);
fwrite(&old_SY,4,1,fp);
fwrite(&DX,4,1,fp);
fwrite(&DY,4,1,fp);
fwrite(&old_DX,4,1,fp);
fwrite(&old_DY,4,1,fp);
fwrite(&Flag_OutCity,4,1,fp);
fwrite(&Flag_GotoPalace,4,1,fp);
fwrite(&Hero,sizeof(Role),1,fp);
for(int i=0; i<MAPS; i++)
{
fwrite(Map[i].Name,32,1,fp);
fwrite(&Map[i].Width,4,1,fp);
fwrite(&Map[i].Hight,4,1,fp);
fwrite(&Map[i].Ground,4,1,fp);
fwrite(Map[i].res,7,1,fp);
fwrite(Map[i].Data, Map[i].Width*Map[i].Hight*2, 1, fp);
fwrite(&Map[i].Npc_Nums, 4, 1, fp);
fwrite(Map[i].NPC, sizeof(Role), Map[i].Npc_Nums, fp);
}
fclose(fp);
}
//**************************8
//存进度
BOOL SaveGame()
{
int MenuIt=0;
char *Menu[]={"进度一","进度二","进度三","进度四","进度五","取 消"};
int x=0,y=280;
Blt(lpDDSBackGround, x,y, lpDDSMainMenu, GetRect(0,0,150,200), FALSE);
ShowMenu(x+50, y+20, MenuIt, Menu, 6, RGB(255,255,255));
PressKey(VK_RETURN,1);
while( 1 )
{
if( GetAsyncKeyState(VK_DOWN) ) //下一项
{
PressKey(VK_DOWN,1);
MenuIt=(MenuIt+1)%6;
Blt(lpDDSBackGround, x,y, lpDDSMainMenu, GetRect(0,0,150,200), FALSE);
ShowMenu(x+50, y+20, MenuIt, Menu, 6, RGB(255,255,255));
}
if( GetAsyncKeyState(VK_UP) ) //上一项
{
PressKey(VK_UP,1);
if( MenuIt==0 ) MenuIt=5;
else MenuIt--;
Blt(lpDDSBackGround, x,y, lpDDSMainMenu, GetRect(0,0,150,200), FALSE);
ShowMenu(x+50, y+20, MenuIt, Menu, 6, RGB(255,255,255));
}
if( GetAsyncKeyState(VK_RETURN) ) //确定
{
while( GetAsyncKeyState(VK_RETURN) ) {}
switch( MenuIt )
{
case 0:
case 1:
case 2:
case 3:
case 4:
//存盘
SaveIt(MenuIt);
return TRUE;
break;
case 5: //取消
//ChangePalette(MainPal,NullPal,-1);
//PostMessage(hWnd, WM_CLOSE, 0, 0);
//GameTitle();
return FALSE;
break;
}
}
if( GetAsyncKeyState(VK_ESCAPE) ) //返回
{
while( GetAsyncKeyState(VK_ESCAPE) ) {}
//MainMove();
//Flip();
return FALSE;
}
}
}
//读进度
BOOL LoadIt(int Num)
{
char *FileName[]={"save\\1.sav","save\\2.sav","save\\3.sav","save\\4.sav","save\\5.sav"};
FILE *fp;
if( (fp=fopen(FileName[Num],"rb"))==NULL )
{
//fclose(fp);
return FALSE;
}
fread(&Scene,4,1,fp);
fread(&SX,4,1,fp);
fread(&SY,4,1,fp);
fread(&old_SX,4,1,fp);
fread(&old_SY,4,1,fp);
fread(&DX,4,1,fp);
fread(&DY,4,1,fp);
fread(&old_DX,4,1,fp);
fread(&old_DY,4,1,fp);
fread(&Flag_OutCity,4,1,fp);
fread(&Flag_GotoPalace,4,1,fp);
fread(&Hero,sizeof(Role),1,fp);
Hero.Surface=lpDDSSpirit; //页面关联
for(int i=0; i<MAPS; i++)
{
fread(Map[i].Name,32,1,fp);
fread(&Map[i].Width,4,1,fp);
fread(&Map[i].Hight,4,1,fp);
fread(&Map[i].Ground,4,1,fp);
fread(Map[i].res,7,1,fp);
fread(Map[i].Data, Map[i].Width*Map[i].Hight*2, 1, fp);
fread(&Map[i].Npc_Nums, 4, 1, fp);
fread(Map[i].NPC, sizeof(Role), Map[i].Npc_Nums, fp);
for(int j=0; j<Map[i].Npc_Nums; j++)
{
//页面关联
Map[i].NPC[j].Surface=lpDDSNpc[ Map[i].NPC[j].Pic ];
}
}
fclose(fp);
return TRUE;
}
//**************************8
//读进度
BOOL LoadGame()
{
int MenuIt=0;
char *Menu[]={"进度一","进度二","进度三","进度四","进度五","取 消"};
int x=0,y=280;
Blt(lpDDSBackGround, x,y, lpDDSMainMenu, GetRect(0,0,150,200), FALSE);
ShowMenu(x+45, y+20, MenuIt, Menu, 6, RGB(255,255,255));
PressKey(VK_RETURN,1);
while( 1 )
{
if( GetAsyncKeyState(VK_DOWN) ) //下一项
{
PressKey(VK_DOWN,1);
MenuIt=(MenuIt+1)%6;
Blt(lpDDSBackGround, x,y, lpDDSMainMenu, GetRect(0,0,150,200), FALSE);
ShowMenu(x+45, y+20, MenuIt, Menu, 6, RGB(255,255,255));
}
if( GetAsyncKeyState(VK_UP) ) //上一项
{
PressKey(VK_UP,1);
if( MenuIt==0 ) MenuIt=5;
else MenuIt--;
Blt(lpDDSBackGround, x,y, lpDDSMainMenu, GetRect(0,0,150,200), FALSE);
ShowMenu(x+45, y+20, MenuIt, Menu, 6, RGB(255,255,255));
}
if( GetAsyncKeyState(VK_RETURN) ) //确定
{
while( GetAsyncKeyState(VK_RETURN) ) {}
switch( MenuIt )
{
case 0:
case 1:
case 2:
case 3:
case 4:
//读盘
if( LoadIt(MenuIt)==TRUE )
return TRUE;
break;
case 5: //取消
//ChangePalette(MainPal,NullPal,-1);
//PostMessage(hWnd, WM_CLOSE, 0, 0);
//GameTitle();
return FALSE;
break;
}
}
if( GetAsyncKeyState(VK_ESCAPE) ) //返回
{
while( GetAsyncKeyState(VK_ESCAPE) ) {}
//MainMove();
//Flip();
return FALSE;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -