Oppure

Loading
23/05/17 13:50
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?
aaa
23/05/17 14:12
Mikelius
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?
aaa
23/05/17 14:20
Djot
Intendo proprio il concetto di salvare e caricare una partita
aaa
23/05/17 14:57
Mikelius
Postato originariamente da Djot:

Intendo proprio il concetto di salvare e caricare una partita

Almeno fai vedere qualche riga di codice.
Usi struct?
aaa
23/05/17 15:04
lumo
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.
aaa
23/05/17 21:23
AldoBaldo
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).
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
24/05/17 8:24
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.