Miksi seuraava koodi ei suostu tallentamaan tietoja vaan kaikki päättyy resettiin ja exittiin?
bool Dungeon::SaveArea(const char *nimi) { kokoZ=1;kokoX=30;kokoY=30; short t,apu,x,y,z; FILE *C; if((C = fopen(nimi, "wb+"))) { for (z=0;z<1;z++) { for (y=0;t<kokoY;y++) { for (x=0;x<kokoX;x++) { apu=lattia[x][y][z];fwrite(&apu,sizeof(short),1,C); apu=seina[x][y][z];fwrite(&apu,sizeof(short),1,C); apu=ovet[x][y][z];fwrite(&apu,sizeof(short),1,C); apu=huonekalu[x][y][z];fwrite(&apu,sizeof(short),1,C); } } } }else {Reset();exit(0);} fclose(C); return true; }
Mikäköhän tuossa rivillä 10 olevalla pätkällä on idea?
for (y=0;t<kokoY;y++)
Tuossahan siis verrataan t:tä kokoY:n vaikka varmaan pitäisi verrata y:n kanssa.
Myöskään en ymmärrä tuon t:n tarkoitusta, koska sitä ei alusteta eikä käytetä missään.
Kannaattaa vielä laittaa tuonne elseen perror:
perror ("Error opening file");
niin tiedät miksi tiedosto ei avaudu.
Kiitos sain toimimaan,en huomannut tuota hiton teetä.
Ratkaisu ei kuitenkaan ollut aivan ihan siinä.
Sain toimimaan kun käytin seuraavia kutsuja:
area->SaveArea("area.dat"); area->LoadArea("era.dat",true);
Voisiko joku kertoa kuinka määritän polun tuohon jos esimerkiksi haluan area.datin original kansion sisälle joka on peliä pyörittävän kansion alikansio?
Näinhän sen pitäisi käydä:
area->SaveArea("original/area.dat");
Aihe on jo aika vanha, joten et voi enää vastata siihen.