Forum: Hjälp!! finns det någon som kodat till en save funktion med hjälp av C++

Forum huvudsida -> Programmering -> Hjälp!! finns det någon som kodat till en save funktion med hjälp av C++

Sidor: 1

Till botten

windi 15:18 - 9:e Maj 2007 | Post #1
Medlem
Inlägg: 5


Skicka PM
Hejsan alla duktiga programmerare!
,,r det någon av er som vet hur man får in save som kod till ett spel.

Jag är rätt ny när det gäller programmering, men samtidigt så e jag en sån som vill mkt.
jag vet att det nog e en dum idé att försöka lära sig springa innan man lärt sig att stå men... Tid?
det är inget jag har riktigt.

Det jag vill kunna göra är att fixa en kod så att det skall kunna gå att spara spelet så att man kan start/ börja där man slutar.

Finns det någon som har en bit kod som jag kan få sno eller nåt råd om hur jag kan göra så hör gärna av erSmiley

Själv klart får ni höra av er oavsettSmiley


Tack på förhand!

// WindiSmiley




derfian 16:19 - 9:e Maj 2007 | Post #2
Medlem
Inlägg: 149


Skicka PM
Du har gjort ett spel du vill ha hjälp med att skriva kod som gör att du kan spara, om jag förstått det rätt?




Slash 16:30 - 9:e Maj 2007 | Post #3
Medlem
Inlägg: 141


Skicka PM
Du ger ju inte så mycket information vilket typ av spel du har och så vidare. Men i ett spel är det ju ett speciellt state du vill spara, och sedan kunna återställa det statet vid ett senare tillfälle. Det finns självklart många sätt för att kunna hantera detta smidigt, det beror delvis på hur avancera ditt spel nu är. Men enkelt förklarat är det som gäller att spara ner tillräckligt med data till en fil så att du senare kan läsa in filen och återställa state:t på spelet för användaren.

Men vad är det du har kört fast på exakt?

-------------------------
Ingen sigantur!

Senast redigerad 16:31 - 9:e Maj 2007


Independence 18:55 - 9:e Maj 2007 | Post #4
Administratör
Inlägg: 1800


Skicka PM
Jag fick ett PM från windi där det avslöjades att det var ett RPG i C++ det handlade om (hoppas inte det var hemligtSmiley ).
Det som behövs göras är ju egentligen att ta alla variabler och spara dem till en fil, för att sedan ladda in dem igen vid ett senare tillfälle.
Det enklaste är kanske att ta dem en och en och bara skriva dem till en textfil i en ordnad följd med nyrad mellan varje värde. Ett bättre sätt skulle kanske vara om man hade det i klasser/structs att köra någon serialize-sak på dem och skriva resultatet till en fil.

-------------------------

Vi är riddarna som säger fiskbulle!



Senast redigerad 18:56 - 9:e Maj 2007


Hetzz 19:20 - 9:e Maj 2007 | Post #5
Medlem
Inlägg: 516


Skicka PM
Som indy skriver låter det lättast att skriva ner alla variabler i ett textdokument och sen läsa dessa nästa gång. Detta öppnar dock för modifiering av din sk. sparfil. Kan vara smidigt vid debug iofs men kanske inte alltid trevligt om spelaren kan fuska runt sig i spelet genom att editera en simpel textfil.

-------------------------





ozamosi 19:29 - 9:e Maj 2007 | Post #6
Administratör
Inlägg: 1129


Skicka PM
Man kan obfuskera/kryptera innehållet i filen om man är så, och kontrollera att värdena är giltiga när man laddar.

Dock ska man se till att ha tillräckligt stora variabler när man gör det, så att inte användaren (jag) får slängt i ansiktet att hen fuskat, bara för att programmeraren (indy) varit snålSmiley

-------------------------
Ljusblå



Nissebosselasse 19:31 - 9:e Maj 2007 | Post #7
Medlem
Inlägg: 490


Skicka PM
Det här med att göra sparfiler oläsbara/krypterade: är det verkligen ett så stort problem för den som gör spelet? Om användaren nu bestämmer sig för att ändra om i sparfilen (en klassisk sysselsättning inom datorvärlden), så är det ju på hans eget bevåg. Okej, han kanske får 99 i liv och alla vapen och klarar ditt spel på två minuter, men det skadar väl ingen...? Han får ju bara skylla sig själv i så fall...

-------------------------
http://pushingcows.se
Gula Nallen



Independence 19:33 - 9:e Maj 2007 | Post #8
Administratör
Inlägg: 1800


Skicka PM
    Citat av Nissebosselasse:
Det här med att göra sparfiler oläsbara/krypterade: är det verkligen ett så stort problem för den som gör spelet? Om användaren nu bestämmer sig för att ändra om i sparfilen (en klassisk sysselsättning inom datorvärlden), så är det ju på hans eget bevåg. Okej, han kanske får 99 i liv och alla vapen och klarar ditt spel på två minuter, men det skadar väl ingen...? Han får ju bara skylla sig själv i så fall...


Medhåll. Det är inget man bör oroa sig för (såvida man inte har någon highscore online och pengar inblandade osvSmiley ).

-------------------------

Vi är riddarna som säger fiskbulle!





FunkyChicken 20:16 - 9:e Maj 2007 | Post #9
Nyhetsredaktör
Inlägg: 800


Skicka PM
En enkel (men för användaren okänd) checksumalgortim borde göra susen.

Att bara dumpa variabler kan bli trixigt om du har en okänd mängd objekt igång (inventorys, osv). Fundera på att använda någon avart av XML - även om jag inte tror att jag har sett det i praktiken så känns det intuitivt som en bra lösning. (Sen kan du zippa ihop filen och XORa den med nåt hemligt så har du en snygg komprimering/kryptering!)




Nissebosselasse 20:42 - 9:e Maj 2007 | Post #10
Medlem
Inlägg: 490


Skicka PM
En annan variant är att skriva ut både variabelnamn samt deras (dåvarande) värde åtskilda med mellanslag/tabulatorsteg, typ:

player_x 5
player_y 10
money 666
iq     3.141

Vid inläsning kan du antingen 1) kontrollera det inlästa variabelnamnet och därmed sätta inläst värde på rätt variabel, eller 2) använda exempelvis en std::map:

// Den här håller spelets "variabler" och
// dess värden (definieras med största sannolikhet
// på annat håll)
std::map<std::string, std::string> vars;

// -ppna vårt sparade spel
std::ifstream savefile ("savegame.sav");
std::string varname, varvalue;

while (savefile >> varname >> varvalue) {
    vars[varname] = varvalue;
}

För att sedan inne i spelet komma åt en viss "variabel", t.ex. antalet IQ:

// Någon annanstans
std::string iq = vars["iq"];

// Eller ändra spelarens IQ
vars["iq"] = "-55";


Men som Slash skrev: det finns ingen specifik lösning, utan det beror på hur du har lagt upp spelet och dess data.

-------------------------
http://pushingcows.se
Gula Nallen



windi 16:42 - 10:e Maj 2007 | Post #11
Medlem
Inlägg: 5


Skicka PM
    Citat av Independence:
Jag fick ett PM från windi där det avslöjades att det var ett RPG i C++ det handlade om (hoppas inte det var hemligtSmiley ).
Det som behövs göras är ju egentligen att ta alla variabler och spara dem till en fil, för att sedan ladda in dem igen vid ett senare tillfälle.
Det enklaste är kanske att ta dem en och en och bara skriva dem till en textfil i en ordnad följd med nyrad mellan varje värde. Ett bättre sätt skulle kanske vara om man hade det i klasser/structs att köra någon serialize-sak på dem och skriva resultatet till en fil.


nej då det var inte hemligt, det är nog bara jag som inte riktigt kan beskriva vad det är jag behöver m.m





windi 17:21 - 10:e Maj 2007 | Post #12
Medlem
Inlägg: 5


Skicka PM
    Citat av Nissebosselasse:
En annan variant är att skriva ut både variabelnamn samt deras (dåvarande) värde åtskilda med mellanslag/tabulatorsteg, typ:

player_x 5
player_y 10
money 666
iq     3.141

Vid inläsning kan du antingen 1) kontrollera det inlästa variabelnamnet och därmed sätta inläst värde på rätt variabel, eller 2) använda exempelvis en std::map:

// Den här håller spelets "variabler" och
// dess värden (definieras med största sannolikhet
// på annat håll)
std::map<std::string, std::string> vars;

// -ppna vårt sparade spel
std::ifstream savefile ("savegame.sav");
std::string varname, varvalue;

while (savefile >> varname >> varvalue) {
    vars[varname] = varvalue;
}

För att sedan inne i spelet komma åt en viss "variabel", t.ex. antalet IQ:

// Någon annanstans
std::string iq = vars["iq"];

// Eller ändra spelarens IQ
vars["iq"] = "-55";


Men som Slash skrev: det finns ingen specifik lösning, utan det beror på hur du har lagt upp spelet och dess data.


Tack så jätte mycket Nissebosselasse... lite kod exempel var verkligen det jag behövdeSmiley




windi 18:16 - 10:e Maj 2007 | Post #13
Medlem
Inlägg: 5


Skicka PM
Sorry Slash, det är inte så att jag inte vill ge er mer information.
Problemet är att jag själv inte riktigt har någon anning om vad det är jag vill ha riktigt.
Men så här är det ( på ett ungefär iaf)

Det som ska sparas är pekare, vektorer och iteams.
Det är meningen att alla element ska sparas ner i en vektor som i sin tur ska ladda dem och skapa nya...

Nu vart det nog lite luddigt... men hoppas ni fattar.
Jag är inte så pass bra på att förklaraSmiley


Men tack ska ni ha allihop ^^




Nissebosselasse 18:38 - 10:e Maj 2007 | Post #14
Medlem
Inlägg: 490


Skicka PM
    Citat av windi:
Sorry Slash, det är inte så att jag inte vill ge er mer information.
Problemet är att jag själv inte riktigt har någon anning om vad det är jag vill ha riktigt.
Men så här är det ( på ett ungefär iaf)

Det som ska sparas är pekare, vektorer och iteams.
Det är meningen att alla element ska sparas ner i en vektor som i sin tur ska ladda dem och skapa nya...

Nu vart det nog lite luddigt... men hoppas ni fattar.
Jag är inte så pass bra på att förklaraSmiley


Men tack ska ni ha allihop ^^


Om pekare ska sparas ner och återskapas, så är det serialisering du är ute efter. Om du inte själv vill skriva en typ av factory som sköter detta, så har jag för mig att Boost-biblioteket har grejer för just detta:
http://www.boost.org/libs/serialization/doc/index.html
(Kolla under "tutorial"). Har dock inte provat det själv.


EDIT: är du säker på att du behöver den här sortens funktionalitet, förresten? Vad är det för objekt som pekaren pekar på? Behöver du verkligen spara ner all informtion som den bär på?
Det är kanske bättre att sikta in sig på den lättaste lösningen vid den här tidpunkten i projektet, och om du verkligen behöver en mer avancerad sparfunktion så går du in och gör det sen. Det är ju dumt att lägga ner en massa timmar på bara sparfunktionen - timmar du kunde lagt på övriga spelet... (Jag tänker närmast på hur lätt folk kan fastna i att göra en jätteavancerad loggfunktion till sina spel, vilket slutar med att spelet aldrig görs klart när väl loggen är klar eftersom dom har tröttnat...)

-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 21:01 - 10:e Maj 2007


windi 15:48 - 12:a Maj 2007 | Post #15
Medlem
Inlägg: 5


Skicka PM
    Citat av Nissebosselasse:
    Citat av windi:
Sorry Slash, det är inte så att jag inte vill ge er mer information.
Problemet är att jag själv inte riktigt har någon anning om vad det är jag vill ha riktigt.
Men så här är det ( på ett ungefär iaf)

Det som ska sparas är pekare, vektorer och iteams.
Det är meningen att alla element ska sparas ner i en vektor som i sin tur ska ladda dem och skapa nya...

Nu vart det nog lite luddigt... men hoppas ni fattar.
Jag är inte så pass bra på att förklaraSmiley


Men tack ska ni ha allihop ^^


Om pekare ska sparas ner och återskapas, så är det serialisering du är ute efter. Om du inte själv vill skriva en typ av factory som sköter detta, så har jag för mig att Boost-biblioteket har grejer för just detta:
http://www.boost.org/libs/serialization/doc/index.html
(Kolla under "tutorial"). Har dock inte provat det själv.


EDIT: är du säker på att du behöver den här sortens funktionalitet, förresten? Vad är det för objekt som pekaren pekar på? Behöver du verkligen spara ner all informtion som den bär på?
Det är kanske bättre att sikta in sig på den lättaste lösningen vid den här tidpunkten i projektet, och om du verkligen behöver en mer avancerad sparfunktion så går du in och gör det sen. Det är ju dumt att lägga ner en massa timmar på bara sparfunktionen - timmar du kunde lagt på övriga spelet... (Jag tänker närmast på hur lätt folk kan fastna i att göra en jätteavancerad loggfunktion till sina spel, vilket slutar med att spelet aldrig görs klart när väl loggen är klar eftersom dom har tröttnat...)


Hehe tack för tipset Nissebosselasse, ärligt så behöver jag nog inte en super funktion... vill bara att man ska kunna spara och ladda filen man sparat.

Tack så jätte mycket för tipsenSmiley




Sidor: 1

Forum huvudsida -> Programmering -> Hjälp!! finns det någon som kodat till en save funktion med hjälp av C++
Atom feed

Du får inte posta i den här tråden | Till toppen