Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Salvataggi e caricamenti?
Forum - C/C++ - Salvataggi e caricamenti?

Avatar
Djot (Normal User)
Rookie


Messaggi: 23
Iscritto: 14/02/2017

Segnala al moderatore
Postato alle 15:50
Martedì, 23/05/2017
Salve a tutti , per motivi didattici sto svolgendo un progetto in C++ che consiste nella creazione di un semplice gioco (Molto semplice , senza librerie grafiche e che funzioni tramite terminale) tuttavia sto riscontrando vari problemi per permettere al giocatore di salvare e caricare una partita , non ho davvero idea di come permettere tale azione , potete darmi qualche consiglio?


-Djot
PM Quote
Avatar
Mikelius (Member)
Pro


Messaggi: 95
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 16:12
Martedì, 23/05/2017
Testo quotato

Postato originariamente da Djot:

Salve a tutti , per motivi didattici sto svolgendo un progetto in C++ che consiste nella creazione di un semplice gioco (Molto semplice , senza librerie grafiche e che funzioni tramite terminale) tuttavia sto riscontrando vari problemi per permettere al giocatore di salvare e caricare una partita , non ho davvero idea di come permettere tale azione , potete darmi qualche consiglio?



Tipo? in che mod salvi la partita?


"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Avatar
Djot (Normal User)
Rookie


Messaggi: 23
Iscritto: 14/02/2017

Segnala al moderatore
Postato alle 16:20
Martedì, 23/05/2017
Intendo proprio il concetto di salvare e caricare una partita


-Djot
PM Quote
Avatar
Mikelius (Member)
Pro


Messaggi: 95
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 16:57
Martedì, 23/05/2017
Testo quotato

Postato originariamente da Djot:

Intendo proprio il concetto di salvare e caricare una partita


Almeno fai vedere qualche riga di codice.
Usi struct?


"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 412
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 17:04
Martedì, 23/05/2017
Impara ad usare i file (fopen, fwrite, fclose, fread).
Salvare significa che puoi ricaricare il gioco, quindi devi salvare tutte le variabili che rappresentano lo stato del gioco all'istante del salvataggio.

Quindi quello che dovresti fare è
1) incapsulare tutte le variabili necessarie a rappresentare il gioco in una struct (ma non di più, non serve a niente).
2) Scrivere questa struttura sul file in maniera binaria (opzione 'b' su fopen)
3) se ci sono puntatori nella struttura si riferiscono a memoria che in caricamento successivo potrebbe non essere più valida, quindi se hai puntatori nella struttura il discorso si complica perché devi decidere anche come salvare i dati memorizzati. Dipende da che gioco  è.

La parte di caricamento la fai sempre in modo binario con fread. Sia per il salvataggio che il caricamento devi usare i puntatori perché devi trattare lo stato come un void* per passarlo a fopen.

PM Quote
Avatar
AldoBaldo (Member)
Expert


Messaggi: 344
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 23:23
Martedì, 23/05/2017
Anni fa misi insieme un programmino per tenere la contabilità di casa, creandolo con CodeWarrior in System 7 di Apple. Quel programma salvava i dati in formato binario, compresi diversi valori (che rappresentavano le spese e le entrate) in virgola mobile, double. Tutto ha funzionato a dovere per anni, con salvataggi e caricamenti che andavano alla grande, finché un bel giorno ho provato a "portare" quel programma in ambiente Windows... DISASTRO!!! Tutti i valori in virgola mobile risultavano illeggibili, perché salvati secondo lo standard tipico che impiegava System 7 sui computer con processore Motorola 68040, diverso da quello che impiega Windows sui processori che gli sono propri. Per recuperare i dati contenuti nei file salvati su Apple occorrerebbe predisporre un apposito programma di conversione, ma non è così semplice come sembra (non per me, almeno).

Morale della storia: da allora salvo sempre in formato testuale, un po' più macchinoso ma almeno non mi riserva sorprese (fino ad ora, ché sicuramente se ne inventeranno qualcun'altra per mischiare ulteriormente le carte).


Ma cosa vuoi che ne sappia? Io ci gioco, col codice, mica ci lavoro!
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:24
Mercoledì, 24/05/2017
Per questioni di velocità di scrittura/lettura è meglio utilizzare il formato binario.

Per piccole quantità di dati può anche andare bene il formato testo ma questo "espone" il file a modifiche semplici che possono falsare il gioco.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote