000
04.03.2004, 17:01 Uhr
Oliver
S2-Pixelgeneral
|
Hallo,
ich hab eine kleines großes Problem. Ich versuch grad eine Jump'n run - Spiel hinzubekommen, aber leider scheiter ich schon beim Laden der Spielwelt.
Ich speicher die Spielwelt binär. Ich hab mir ein Programm erstellt, was mir die eine "kleine Spielwelt", also nur eine zum Testen, schreibt:
C++: |
#include <iostream> #include <cstdio> using namespace std;
struct gobject { char type; int x,y; };
int main() { FILE*dat=fopen("level1.sze","wb");
int x=350; int y=380; int anz=0; gobject a; int c=1; a.type=0; a.x=0; a.y=565; int i;
for(i=0;i<40;++i) { anz++;
} a.x=0; a.y=0; for(i=0;i<20;++i) { anz++;
}
a.x=0; a.y=565;
cout << "ANZAHL: " << anz;
fwrite(&x,sizeof(int),1,dat); fwrite(&y,sizeof(int),1,dat); fwrite(&anz,sizeof(int),1,dat);
for(i=0;i<40;++i) { a.x=i*35; fwrite(&c,sizeof(char),1,dat); fwrite(&a,sizeof(gobject),1,dat); cout << "X: " << a.x << "\n"; cout << "Y: " << a.y << "\n"; } a.x=0; for(i=0;i<20;++i) { a.y=i*35; fwrite(&c,sizeof(char),1,dat); fwrite(&a,sizeof(gobject),1,dat); cout << "X: " << a.x << "\n"; cout << "Y: " << a.y << "\n"; }
fclose(dat);
return 0;
}
|
So, das läuft eigentlich alles ganz richtig. Wie das Programm jetzt genau funktioniert, würde jetzt zu weit gehen, deswegen erklär ich das erstmal nicht weiter.
Jetzt hab ich im eigentlichen Programm, also im Spiel eine Funktion, die so aussieht:
C++: |
void Managment::StartProgramm() { // Daten laden bool type; int anz; FILE*dat=fopen("level1.sze","r");
fread(&fx,sizeof(int),1,dat); fread(&fy,sizeof(int),1,dat); fread(&anz,sizeof(int),1,dat);
gobject gtemp; RECT rtemp; for(int i=0;i<anz;++i) { fread(&type,sizeof(char),1,dat); if(type) { fread(>emp,sizeof(gobject),1,dat); gliste.push_back(gtemp); } else { fread(&rtemp,sizeof(RECT),1,dat); aliste.push_back(rtemp); } }
fclose(dat);
}
|
Wie gesagt, was die aliste ist und so, das ist jetzt egal, die benutz ich erstmal nicht. Aber mein Problem ist, dass wenn es liest, plötzlich irgendwann immer dasselbe rauskriegt, sprich, dass es schon am Ende angelangt sein müsste, obwohl es eigentlich noch gar nicht am Ende ist.
Kann mir da jemand zufällig helfen? -- Demokratie ist die Diktatur der Mehrheit.
www.siedler25.org/ ( Siedler2 - Remake ) |