viernes, 30 de octubre de 2015

Crear juego RPG en C++ y Allegro 4 (26) Cargar Partida

Aquí esta una nueva entrega del curso crea tu juego RPG en C++ y Allegro. En esta entrega se realizará la carga de partida.


Para realizar  la carga de partida, se leen los datos que previamente se guardaron con la función guarda_partida(). Para la lectura de los datos se debe hacer en el mismo orden que se puso cuando se guardaron.

En el archivo partidas.h, se crea una nueva función llamada carga_partida().

void carga_partida(){
    char contenido[255];
   
    packfile_password("kodaygames2015");
    PACKFILE *fichero;
    
    fichero = pack_fopen("partida.sav","r");

El principio es practicamente igual, excepto a la hora de abrir el archivo, al utilizar el comando pack_fopen el segundo parámetro "r" indica que se abre de lectura.

// datos del jugador

    pack_fgets( contenido, 255, fichero);
    int jx = atoi( contenido );              

    pack_fgets( contenido, 255, fichero);
    int jy = atoi( contenido );                  
    
    jugador.posiciona(jx,jy);
    
    pack_fgets( contenido, 255, fichero);
    jugador.setvida( atoi( contenido ));
            
    pack_fgets( contenido, 255, fichero);
    jugador.setvidamax( atoi( contenido ));    
          
    pack_fgets( contenido, 255, fichero);
    jugador.setexp( atoi( contenido )); 
                  
    pack_fgets( contenido, 255, fichero);
    jugador.setnivel( atoi( contenido ));              

    pack_fgets( contenido, 255, fichero);
    jugador.setdinero( atoi( contenido ));                
    
    pack_fgets( contenido, 255, fichero);
    jugador.pon_casco( atoi( contenido ));
    
    pack_fgets( contenido, 255, fichero);
    jugador.pon_armadura( atoi( contenido ));
    
    pack_fgets( contenido, 255, fichero);
    jugador.pon_arma( atoi( contenido ));  
    
    pack_fgets( contenido, 255, fichero);
    jugador.pon_anillo( atoi( contenido ));           
       
    for (int i=0; i < 12; i++)
    {
    pack_fgets( contenido, 255, fichero);
    jugador.pon_inventario( i, atoi( contenido ) );
    
    } 

// datos del escenario
    
    pack_fgets( contenido, 255, fichero);
    lugar = atoi( contenido );    

    pack_fgets( contenido, 255, fichero);
    desplazamiento_map_x = atoi( contenido );
    pack_fgets( contenido, 255, fichero);
    desplazamiento_map_y = atoi( contenido );

// npc y enemigos

    pack_fgets( contenido, 255, fichero);
    npersonaje = atoi( contenido ); 

    int timg;
    int tx;
    int ty;
    int tdir;   
    int testado;
    int tlugar;        
    int tvida;      

    for ( int i = 0; i < npersonaje; i++)
    {

        pack_fgets( contenido, 255, fichero);
        timg = atoi( contenido );    
        
        pack_fgets( contenido, 255, fichero);
        tx = atoi( contenido );  
        
        pack_fgets( contenido, 255, fichero);
        ty = atoi( contenido );       
        
        pack_fgets( contenido, 255, fichero);
        tdir = atoi( contenido ); 

        pack_fgets( contenido, 255, fichero);
        testado = atoi( contenido ); 
         
        pack_fgets( contenido, 255, fichero);
        tlugar = atoi( contenido );      
        
        personajes[i].crea( timg, tx, ty, tdir, testado, tlugar );  
                    
    }

    pack_fgets( contenido, 255, fichero);
    nmalos = atoi( contenido );  
        
    for ( int i = 0; i < nmalos; i++)
    {
        pack_fgets( contenido, 255, fichero);
        timg = atoi( contenido );    
        
        pack_fgets( contenido, 255, fichero);
        tx = atoi( contenido );  
        
        pack_fgets( contenido, 255, fichero);
        ty = atoi( contenido );       
        
        pack_fgets( contenido, 255, fichero);
        tdir = atoi( contenido ); 
        
        pack_fgets( contenido, 255, fichero);
        testado = atoi( contenido ); 
         
        pack_fgets( contenido, 255, fichero);
        tlugar = atoi( contenido );   

        pack_fgets( contenido, 255, fichero);
        tvida = atoi( contenido );
        
        malos[i].crea( timg, tx, ty, tdir, testado, tlugar, tvida );               
    } 
          
    pack_fclose(fichero);
};      

Con el comando pack_fgets se va obteniendo lineas y se guardan en la variable contenido. A medida que se va leyendo el archivo se van asignando los valores a sus respectivas variables. Al finalizar de leer el fichero, se debe de llamar a la función carga_escenario().

No hay comentarios:

Publicar un comentario