Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * funzione che carica la partita dal file che si trova in nome_sav
- *
- * @param numero_giocatori
- * @param mazzo_pesca
- * @param mazzo_scarti
- * @param giocatore_attuale
- * @param nome_sav
- * @return
- */
- Giocatore * caricamento(int *numero_giocatori, Mazzo * mazzo_pesca,
- Mazzo *mazzo_scarti, int *giocatore_attuale, char * nome_sav)
- {
- ///per i mazzi e l'array prima leggo la dimensione e la salvo
- ///solo dopo averla salvata alloco dinamicamente con lo spazio necessario e leggo i singoli elementi
- Giocatore *giocatore;
- FILE *sav = NULL;
- sav= fopen(nome_sav,"rb");
- if(sav==NULL)
- {
- exit(11);
- }
- //leggo il numero di giocatori e alloco
- fread(numero_giocatori, sizeof(int), 1, sav);
- giocatore = calloc((*numero_giocatori),sizeof(Giocatore));
- if(giocatore==NULL)
- {
- exit(12);
- }
- //leggo uno ad uno i dati dei giocatori , alloco le loro carte e poi leggo e salvo anche le carte
- for(int i=0; i<*numero_giocatori; i++)
- {
- fread(&giocatore[i], sizeof(Giocatore), 1, sav);
- //alloco mazzo mano del giocatore i-esimo
- giocatore[i].mazzo_mano.carta=calloc((giocatore[i].mazzo_mano.carte_nel_mazzo),
- sizeof(Carta));
- if(giocatore[i].mazzo_mano.carta==NULL)
- {
- exit(13);
- }
- //alloco mazzo delle carte giocate del giocatore i-esimo
- giocatore[i].mazzo_giocate.carta=calloc((giocatore[i].mazzo_giocate.carte_nel_mazzo),
- sizeof(Carta));
- if(giocatore[i].mazzo_giocate.carta==NULL)
- {
- exit(14);
- }
- fread(giocatore[i].mazzo_mano.carta, sizeof(Carta),
- giocatore[i].mazzo_mano.carte_nel_mazzo, sav);
- fread(giocatore[i].mazzo_giocate.carta, sizeof(Carta),
- giocatore[i].mazzo_giocate.carte_nel_mazzo, sav);
- }
- //leggo il giocatore corrente
- fread(giocatore_attuale, sizeof(int), 1, sav);
- //leggo il mazzo pesca
- fread(mazzo_pesca, sizeof(Mazzo), 1, sav);
- mazzo_pesca->carta=calloc(sizeof(Carta),mazzo_pesca->carte_nel_mazzo);
- if(mazzo_pesca->carta==NULL)
- {
- exit(15);
- }
- for(int i=0; i<mazzo_pesca->carte_nel_mazzo; i++)
- {
- fread(&mazzo_pesca->carta[i], sizeof(Carta), 1, sav);
- }
- //leggo il mazzo scarti
- fread(mazzo_scarti, sizeof(Mazzo), 1, sav);
- mazzo_scarti->carta=calloc( sizeof(Carta),mazzo_scarti->carte_nel_mazzo);
- if(mazzo_scarti->carta==NULL)
- {
- exit(16);
- }
- for(int i=0; i<mazzo_scarti->carte_nel_mazzo; i++)
- {
- fread(&mazzo_scarti->carta[i], sizeof(Carta), 1, sav);
- }
- fclose(sav);
- return giocatore;
- }
Advertisement
Add Comment
Please, Sign In to add comment