nicoviale_

Untitled

Jul 19th, 2023
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.79 KB | None | 0 0
  1. /**
  2.  * funzione che carica la partita dal file che si trova in nome_sav
  3.  *
  4.  * @param numero_giocatori
  5.  * @param mazzo_pesca
  6.  * @param mazzo_scarti
  7.  * @param giocatore_attuale
  8.  * @param nome_sav
  9.  * @return
  10.  */
  11. Giocatore * caricamento(int *numero_giocatori, Mazzo * mazzo_pesca,
  12.                         Mazzo *mazzo_scarti, int *giocatore_attuale, char * nome_sav)
  13. {
  14.     ///per i mazzi e l'array prima leggo la dimensione e la salvo
  15.     ///solo dopo averla salvata alloco dinamicamente con lo spazio necessario e leggo i singoli elementi
  16.  
  17.     Giocatore *giocatore;
  18.     FILE *sav = NULL;
  19.  
  20.     sav= fopen(nome_sav,"rb");
  21.     if(sav==NULL)
  22.     {
  23.         exit(11);
  24.     }
  25.  
  26.     //leggo il numero di giocatori e alloco
  27.     fread(numero_giocatori, sizeof(int), 1, sav);
  28.     giocatore = calloc((*numero_giocatori),sizeof(Giocatore));
  29.     if(giocatore==NULL)
  30.     {
  31.         exit(12);
  32.     }
  33.     //leggo uno ad uno i dati dei giocatori , alloco le loro carte e poi leggo e salvo anche le carte
  34.     for(int i=0; i<*numero_giocatori; i++)
  35.     {
  36.         fread(&giocatore[i], sizeof(Giocatore), 1, sav);
  37.  
  38.         //alloco mazzo mano del giocatore i-esimo
  39.         giocatore[i].mazzo_mano.carta=calloc((giocatore[i].mazzo_mano.carte_nel_mazzo),
  40.                                              sizeof(Carta));
  41.  
  42.         if(giocatore[i].mazzo_mano.carta==NULL)
  43.         {
  44.             exit(13);
  45.         }
  46.  
  47.         //alloco mazzo delle carte giocate del giocatore i-esimo
  48.         giocatore[i].mazzo_giocate.carta=calloc((giocatore[i].mazzo_giocate.carte_nel_mazzo),
  49.                                                 sizeof(Carta));
  50.         if(giocatore[i].mazzo_giocate.carta==NULL)
  51.         {
  52.             exit(14);
  53.         }
  54.  
  55.         fread(giocatore[i].mazzo_mano.carta, sizeof(Carta),
  56.               giocatore[i].mazzo_mano.carte_nel_mazzo, sav);
  57.         fread(giocatore[i].mazzo_giocate.carta, sizeof(Carta),
  58.               giocatore[i].mazzo_giocate.carte_nel_mazzo, sav);
  59.     }
  60.  
  61.     //leggo il giocatore corrente
  62.     fread(giocatore_attuale, sizeof(int), 1, sav);
  63.  
  64.     //leggo il mazzo pesca
  65.     fread(mazzo_pesca, sizeof(Mazzo), 1, sav);
  66.     mazzo_pesca->carta=calloc(sizeof(Carta),mazzo_pesca->carte_nel_mazzo);
  67.     if(mazzo_pesca->carta==NULL)
  68.     {
  69.         exit(15);
  70.     }
  71.     for(int i=0; i<mazzo_pesca->carte_nel_mazzo; i++)
  72.     {
  73.         fread(&mazzo_pesca->carta[i], sizeof(Carta), 1, sav);
  74.     }
  75.  
  76.     //leggo il mazzo scarti
  77.     fread(mazzo_scarti, sizeof(Mazzo), 1, sav);
  78.     mazzo_scarti->carta=calloc( sizeof(Carta),mazzo_scarti->carte_nel_mazzo);
  79.     if(mazzo_scarti->carta==NULL)
  80.     {
  81.         exit(16);
  82.     }
  83.     for(int i=0; i<mazzo_scarti->carte_nel_mazzo; i++)
  84.     {
  85.         fread(&mazzo_scarti->carta[i], sizeof(Carta), 1, sav);
  86.     }
  87.  
  88.  
  89.     fclose(sav);
  90.  
  91.     return giocatore;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment