Red de conocimientos turísticos - Información de alquiler - Acerca del problema de guardar y leer códigos de progreso en la programación de juegos en C

Acerca del problema de guardar y leer códigos de progreso en la programación de juegos en C

//==============Función de progreso de acceso===================

void SaveIt(int Num)

{

char *FileName[]={"save\\1.sav", "save\\2.sav", "save \ \3.sav", "save\\4.sav", "save\\5.sav"};

ARCHIVO *fp;

fp=fopen(NombreArchivo[ Núm. ], "wb");

fwrite(amp; Escena, 4, 1, fp);

fwrite(amp; SX, 4, 1, fp); > p>

fwrite(amp;SY,4,1,fp);

fwrite(amp;old_SX,4,1,fp);

fwrite(amp; old_SY, 4, 1, fp);

fwrite(amp; DX, 4, 1, fp);

fwrite(amp; DY, 4, 1, fp); /p> p>

fwrite(amp; old_DX, 4, 1, fp);

fwrite(amp; old_DY, 4, 1, fp); amp; Flag_OutCity, 4, 1, fp);

fwrite(amp; Flag_GotoPalace, 4, 1, fp);

fwrite(amp; Hero, sizeof(Rol), 1); , fp) ;

for(int i=0; ilt; MAPAS; i )

{

fwrite(Mapa[i].Nombre, 32, 1, fp );

fwrite(y Mapa[i].Ancho, 4, 1,

fwrite(y Mapa[i].Alto, 4,); 1, fp );

fwrite(amp;Mapa[i].Ground, 4, 1,

fwrite(Mapa[i].res, 7, 1, fp);

fwrite(Mapa[i].Datos, Mapa[i].Ancho*Mapa[i].Alto*2, 1,

fwrite(amp); ;Mapa[ i].Npc_Nums, 4, 1, fp);

fwrite(Mapa[i].NPC, tamaño de (Rol), Mapa[i].Npc_Nums,

);

}

fclose(fp);

}

//****************** *** ******8

//Guardar progreso

BOOL SaveGame()

{

int MenuIt= 0;

char *Menu[]={"Progreso uno", "Progreso dos", "Progreso tres", "Progreso cuatro", "Progreso cinco", "Cancelar"};

int x=0, y=280;

Blt(lpDDSBackGround, x, y, lpDDSMainMenu, GetRect(0, 0, 150, 200),

MostrarMenú(x 50

, y 20, MenuIt, Menú, 6, RGB(255, 255, 255));

PresioneTecla(VK_RETURN, 1

while( 1 )

<); p> {

if( GetAsyncKeyState(VK_DOWN) ) //Siguiente elemento

{

PressKey(VK_DOWN, 1);

MenuIt=(MenuIt 1)6;

Blt(lpDDSBackGround, x, y, lpDDSMainMenu, GetRect(0, 0, 150, 200),

ShowMenu(x 50); , y 20, MenuIt, Menu, 6, RGB(255, 255, 255));

}

if( GetAsyncKeyState(VK_UP) ) //Elemento anterior

{

PressKey(VK_UP, 1);

if( MenuIt==0 ) MenuIt=5

else MenuIt--; p>

Blt(lpDDSBackGround, x, y, lpDDSMainMenu, GetRect(0, 0, 150, 200), FALSE);

ShowMenu(x 50, y 20, MenuIt, Menú, 6. RGB(255, 255, 255));

}

if( GetAsyncKeyState(VK_RETURN) ) //Confirmar

{

while( GetAsyncKeyState(VK_RETURN) ) {}

cambiar( MenuIt )

{

caso 0:

caso 1:

caso 2:

caso 3:

caso 4:

//Guardar

SaveIt(MenuIt );

return TRUE;

break;

caso 5: //Cancelar

//ChangePalette(MainPal, NullPal, - 1) ;

//PostMessage(hWnd, WM_CLOSE, 0, 0);

//GameTitle();

devuelve FALSO;

romper;

}

}

if( GetAsyncKeyState(VK_ESCAPE) ) //regresar

{

while( GetAsyncKeyState(VK_ESCAPE) ) {}

//MainMove();

//Flip()

return FALSE; p>

}

}

}

//Progreso de lectura

BOOL LoadIt(int Num)

{

char *FileName[]={"save\\1.sav", "save\\2.sav"," save\\3.sav", "save\\4.sav", "save\\5.sav"};

ARCHIVO *fp;

if( (fp= fopen(FileName[Num], "rb"))==NULL )

{

//fclose(fp);

return FALSE; p>

}

fread(amp; Escena, 4, 1, fp

fread(amp; SX, 4, 1, fp); p>

fread(amp;SY,4,1,fp);

fread(amp;old_SX,4,1,fp);

fread(amp;old_SY ,4 , 1, fp);

fread(y DX, 4, 1, fp);

fread(y DY, 4, 1, fp); p>

fread(y old_DX, 4, 1, fp);

fread(y old_DY, 4, 1, fp);

fread(y Flag_OutCity); , 4 , 1, fp);

fread(y Flag_GotoPalace, 4, 1, fp);

fread(y héroe, sizeof(Rol), 1, fp); ;

Hero.Surface=lpDDSSpirit; //Asociación de página

for(int i=0; ilt; MAPS; i)

{

fread(Mapa[i].Nombre, 32, 1, fp);

fread(y Mapa[i].Ancho, 4, 1, fp); > fread (amp; Mapa[i].Alto, 4, 1, fp);

fread (amp; Mapa[i].Tierra, 4, 1,

fread (Mapa[i].res, 7, 1, fp);

fread(Mapa[i].Datos, Mapa[i].Ancho*Mapa[i].Alto*2, 1 , fp );

fread(amp; Mapa[i].Npc_Nums, 4, 1,

fread(Mapa[i].NPC, sizeof(Rol), Mapa[i].Npc_Nums, fp);

for(int j=0; jlt; Mapa[i].Npc_Nums; j)

{

// Asociación de página

Map[i].NPC[j].Surface=lpDDSNpc[ Map[i].NPC[j].Pic

}

;

}

fclose(fp);

devuelve VERDADERO

}

//******* * *******************8

//Progreso de lectura

BOOL LoadGame()

{

int Yo

nuIt=0;

char *Menu[]={"Progreso 1", "Progreso 2", "Progreso 3", "Progreso 4", "Progreso 5", "Cancelar"}; p> p>

int x=0, y=280;

Blt(lpDDSBackGround, x, y, lpDDSMainMenu, GetRect(0, 0, 150, 200),

ShowMenu(x 45, y 20, MenuIt, Menu, 6, RGB(255, 255, 255));

PressKey(VK_RETURN, 1

while); ( 1 )

{

if( GetAsyncKeyState(VK_DOWN) ) //Siguiente elemento

{

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, Menú, 6, RGB(255, 255, 255));

}

if( GetAsyncKeyState(VK_UP) ) //Elemento anterior

{

PressKey(VK_UP, 1

if( MenuIt==0 ) MenuIt=5; > else MenuIt--;

Blt(lpDDSBackGround, x, y, lpDDSMainMenu, GetRect(0, 0, 150, 200),

ShowMenu(x 45, y); 20, MenuIt, Menú, 6, RGB(255, 255, 255));

}

if( GetAsyncKeyState(VK_RETURN) ) //Confirmar

{

while( GetAsyncKeyState(VK_RETURN) ) {}

cambiar( MenuIt )

{

caso 0:

caso 1:

caso 2:

caso 3:

caso 4:

//Leer disco

if( LoadIt(MenuIt)==TRUE )

return TRUE;

break

caso 5: //Cancelar

//ChangePalette(MainPal, NullPal, -1);

//PostMessage(hWnd, WM_CLOSE, 0, 0);

//GameTitle(); p>

return FALSE;

descanso

}

}

if( Ge

tAsyncKeyState(VK_ESCAPE) ) //Regresar

{

while( GetAsyncKeyState(VK_ESCAPE) ) {}

//MainMove();

//Flip();

devuelve FALSO

}

}

}