File INI con DS_LIST (risolto)

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

File INI con DS_LIST (risolto)

Messaggio da sfigatto »

in genere non ho problemi con i file ini per salvare punteggi o variabili però non riesco a salvare delle ds_list che contengono delle immagini.
Nella prima lista le immagini vengono spostate nella seconda lista e poi cancellate (dalla prima lista), la seconda lista semplicemente riceve le immagini dalla prima lista

Ho un primo oggetto nella pagina di presentazione del gioco in cui creo i file INI.

Codice: Seleziona tutto

if file_exists("save.ini") //se già esiste il file ini....
              {
               ini_open("save.ini");  //apre il file
               global.immagine =ini_read_real ("save","record",0); ///Inizializziamo la variabile/lista "global.immagine"
               ini_close(); //chiude il file
              }
              
if file_exists("save1.ini")
              {
               ini_open("save1.ini");
               global.risolta =ini_read_real ("save1","record1",0); ///Inizializziamo la variabile/lista "global.risolta"
               ini_close();
              }    
Quando parte il gioco crea la ds_list

Codice: Seleziona tutto



if !file_exists("save.ini") // se non esiste il file ini
               {
                scr_list_immagine(); //crea la ds list 
               }
               
if !file_exists("save1.ini")
               {
                global.risolta= ds_list_create();//crea lista vuota, dove vengono spostate le foto risolte
               }

scr_list_immagine

Codice: Seleziona tutto


randomize();

global.immagine= ds_list_create();
ds_list_add(global.immagine,im1);
ds_list_add(global.immagine,im2);
ds_list_add(global.immagine,im3);
ds_list_add(global.immagine,im4);
ds_list_add(global.immagine,im5);
ds_list_shuffle(global.immagine);

nell'oggetto in cui le immagini vengono spostate da una lista all'altra

Codice: Seleziona tutto


trasferimento_sprite= ds_list_find_value(global.immagine,ds_list_size(global.immagine)-1) //prende la foto appena risolta
ds_list_add(global.risolta,trasferimento_sprite); //trasferisce la foto nella nuova lista
ds_list_delete(global.immagine,ds_list_size(global.immagine)-1);//cancella la foto dalla lista
         
     ini_open("save.ini"); //apre il file ini
     ini_write_real("save","record",global.immagine); //lo riscrive
     ini_close(); //lo chiude
     
     ini_open("save1.ini"); //apre il file ini
     ini_write_real("save1","record1",global.risolta); //lo riscrive
     ini_close(); //lo chiude
Credo che la prima list venga memorizzata(nel senso che le foto spariscono), ma la seconda lista sicuramente non viene memorizzata
Ultima modifica di sfigatto il 22/04/2017, 11:18, modificato 1 volta in totale.

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: File INI con DS_LIST

Messaggio da doom13 »

Ma per lista di immagini che intendi? Un'immagine cos'è in quel caso? Un id?
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: File INI con DS_LIST

Messaggio da sfigatto »

La lista delle immagini sostanzialmente è una lista di sprite che possono venire assegnati ad un oggetto.

Avatar utente
sfigatto
Membro
Messaggi: 227
Iscritto il: 18/04/2014, 23:20
Uso: GM:Studio 1.4 Pro
Contatta:

Re: File INI con DS_LIST [RISOLTO]

Messaggio da sfigatto »

Ho finalmente risolto il problema, ora tutto funziona.
Posto il codice corretto in caso altre persone abbiano bisogno di un sistema simile.

Ho un primo oggetto nella pagina di presentazione del gioco in cui richiamo i file INI, che ovviamente la prima volta che si apre il gioco ancora non esiste.

Codice: Seleziona tutto


if (file_exists("Save.ini"))
{
    ini_open("Save.ini");
    global.immagine = ds_list_create();
    ds_list_read(global.immagine,ini_read_string("save","record",0));
    ini_close();
}


if (file_exists("Save1.ini"))
{
    ini_open("Save1.ini");
    global.risolta = ds_list_create();
    ds_list_read(global.risolta,ini_read_string("save1", "record1",0));
    ini_close();
}

Quando il gioco parte crea le ds_list

Codice: Seleziona tutto

if !file_exists("save.ini") // se non esiste il file ini
               {
                scr_list_immagine(); //crea la ds list 
               }
               
if !file_exists("save1.ini")
               {
                global.risolta= ds_list_create();//crea lista vuota, dove vengono spostate le foto risolte
               }





scr_list_immagine

Codice: Seleziona tutto


randomize();

global.immagine= ds_list_create();
ds_list_add(global.immagine,im1);
ds_list_add(global.immagine,im2);
ds_list_add(global.immagine,im3);
ds_list_add(global.immagine,im4);
ds_list_add(global.immagine,im5);
ds_list_shuffle(global.immagine);

nell'oggetto in cui le immagini vengono spostate da una lista all'altra

Codice: Seleziona tutto


Nell'oggetto in cui le immagini vengono trasportate da una list all'altra



     trasferimento_sprite= ds_list_find_value(global.immagine,ds_list_size(global.immagine)-1) //prende la foto appena risolta
      alarm[4]=20 //crea la scritta che segnala che hai risolto la foto
     tempo=0 //azzera il countdown del timer
     stoptempo=1//blocca il countdown
    
     
     
  ini_open("save.ini");
  ds_list_delete(global.immagine,ds_list_size(global.immagine)-1);//cancella la foto dalla lista
  ini_write_string("save","record",ds_list_write(global.immagine));
  ini_close();
  

  ini_open("save1.ini");
  ds_list_add(global.risolta,trasferimento_sprite);
  ini_write_string("save1", "record1",ds_list_write(global.risolta));
  ini_close();



Rispondi

Chi c’è in linea

Visitano il forum: Bing [Bot] e 124 ospiti