fh_study
Erfahrenes Mitglied
Ja Hallo,
ich mal wieder ...
inzwischen ist mein "Mensch Ärgere Dich Nicht" Spiel fast fertig. Nur habe ich jetzt irgendwie einen Denkfehler im Laden des Spielstandes aus einer Datei. Der Spielstand wird als Text (also als CString) in einer beliebigen Datei gespeichert, das klappt auch der Inhalt sieht dann folgendermaßen aus:
Der ganze Teil von CurrentLast00 bis CurrentLast33 ist die Position der Spielfiguren 0 bis 3 der Spieler 0 bis 3 (bei 4 Spielern)
also heißt das ganze übersetzt:
[CurrentLast SpielerId SpielsteinId]=aktuelle Position;alte Position;
Da ich jedoch diese Werte als Integer brauche und das ganze nunmal in einem langen String liegt habe ich folgende Funktion geschrieben: (Auszug)
Der String aus der Datei ist übrigens in lstr geladen und der Teil bis [CurrentLast00] ist bereits von einer anderen Funktion ausgewertet (die leider auch nicht funktioniert, da da waohl der gleiche Fehler vorliegt.
Leider finde ich den Fehler nicht ... Vielleicht einer von euch?
vermute mal ich verpeil da was mit dem atoi
ich mal wieder ...
inzwischen ist mein "Mensch Ärgere Dich Nicht" Spiel fast fertig. Nur habe ich jetzt irgendwie einen Denkfehler im Laden des Spielstandes aus einer Datei. Der Spielstand wird als Text (also als CString) in einer beliebigen Datei gespeichert, das klappt auch der Inhalt sieht dann folgendermaßen aus:
[PlayerId]=0;
[LastDice]=3;
[Computergegner]=1;
[AnzahlSpieler]=1;
[FirstPlayer]=0;
[SaveWuerfeln]=1;
[SavePlayer]=1;
[CurrentLast00]=5;4;
[CurrentLast01]=1;1;
[CurrentLast02]=2;2;
[CurrentLast03]=3;3;
[CurrentLast10]=0;0;
[CurrentLast11]=1;1;
[CurrentLast12]=2;2;
[CurrentLast13]=3;3;
[CurrentLast20]=11;8;
[CurrentLast21]=1;1;
[CurrentLast22]=2;2;
[CurrentLast23]=3;3;
[CurrentLast30]=0;0;
[CurrentLast31]=1;1;
[CurrentLast32]=2;2;
[CurrentLast33]=3;3;
Der ganze Teil von CurrentLast00 bis CurrentLast33 ist die Position der Spielfiguren 0 bis 3 der Spieler 0 bis 3 (bei 4 Spielern)
also heißt das ganze übersetzt:
[CurrentLast SpielerId SpielsteinId]=aktuelle Position;alte Position;
Da ich jedoch diese Werte als Integer brauche und das ganze nunmal in einem langen String liegt habe ich folgende Funktion geschrieben: (Auszug)
Code:
CString tmp, lstr; CMyGameDoc* pDoc = GetDocument();
int pos;
//Laden des restlichen Strings
lstr = pDoc->LoadPos;
//Laden der Positionen Spieler 0 bis 3 Spielsteine 0 bis 3
for(int x=0; x<4; x++)
{
for(int y=0; y<4; y++)
{
//Finden des ersten =
pos = lstr.Find('=');
//Löschen des ausgewerteten Bereiches
lstr.Delete(0,pos);
//Finden des 1. ;
pos = lstr.Find(';');
//Kopie des Wertes zwischen = und ;
tmp = lstr.Left(pos);
//str.Format("%s\n%s",str,tmp);
//Laden des Wertes in CMyPlayer
pDoc->pPlayer[x].CurrentFiguresPosition[y] = atoi(tmp);
//Löschen bis zum 1.;
lstr.Delete(0,pos);
//Finden des 2. ;
pos = lstr.Find(';');
//Kopie des Wertes zwischen 1.; und 2.;
tmp = lstr.Left(pos);
//Laden des Wertes in CMyPlayer
pDoc->pPlayer[x].LastFiguresPosition[y] = atoi(tmp);
//Löschen bis zum 2.;
lstr.Delete(0,pos);
}
}
Leider finde ich den Fehler nicht ... Vielleicht einer von euch?
vermute mal ich verpeil da was mit dem atoi