theGiallo
A.N.E.C.I.F.E.G.
Messaggi: 2,874
Registrato: Mar 2011
Online
|
#16
RE: [C + SDL] Tile Map
blocconote mi vede gli a capi del file map1.txt quindi ci sono \n\r alla fine delle righe, quando leggi non scarti nulla e quando disegni neppure.
Codice:
void loadMap(const char *file){
FILE *mapfile;
int i, j;
char t;
mapfile = fopen(file, "rb");
for(i = 0; i < ROWS; i++){
for(j = 0; j < COLS; j++){
//read solid
//~ fread(&(tiles[i][j].solid), sizeof(bool), 1, mapfile);
//read tile
fread(&t, sizeof(char), 1, mapfile);
//~ printf("%c", t);
if (t=='\n' || t=='\r')
{
fread(&t, sizeof(char), 1, mapfile);
if (t=='\n' || t=='\r')
fread(&t, sizeof(char), 1, mapfile);
j=0;
Tile[++i][j].value = t;
} else
{
Tile[i][j].value = t;
}
}
}
fclose(mapfile);
}
prova con questa (riscrivila, così fa cagare)
Gianluca Alloisio => thegiallo.blogspot.com
classe 1989
studente al 4° anno - Informatica - SMFN - UniGe
Dottore in Informatica ( )
|
|
| 02-02-2012 19:43 |
|
Pix3l
Junior Member
Messaggi: 38
Registrato: Aug 2011
Offline
|
#17
RE: [C + SDL] Tile Map
(02-02-2012 19:43)theGiallo ha scritto: blocconote mi vede gli a capi del file map1.txt quindi ci sono \n\r alla fine delle righe, quando leggi non scarti nulla e quando disegni neppure.
Codice:
void loadMap(const char *file){
FILE *mapfile;
int i, j;
char t;
mapfile = fopen(file, "rb");
for(i = 0; i < ROWS; i++){
for(j = 0; j < COLS; j++){
//read solid
//~ fread(&(tiles[i][j].solid), sizeof(bool), 1, mapfile);
//read tile
fread(&t, sizeof(char), 1, mapfile);
//~ printf("%c", t);
if (t=='\n' || t=='\r')
{
fread(&t, sizeof(char), 1, mapfile);
if (t=='\n' || t=='\r')
fread(&t, sizeof(char), 1, mapfile);
j=0;
Tile[++i][j].value = t;
} else
{
Tile[i][j].value = t;
}
}
}
fclose(mapfile);
}
prova con questa (riscrivila, così fa cagare)
Ci avevo pensato che fosse per colpa dei caratteri speciali, ma non ci avevo dato peso da prima pensando di leggere solo il giusto numero di caratteri, per ora ho risolto semplicemente mettendo la mappa tutta su una riga.
Il tuo snippet purtroppo non funziona bene, ed anche provando ad adattare la cosa diversamente il risultato non cambia.
Codice:
fread(&t, sizeof(char), 1, mapfile);
if (t!='\n' || t!='\r')
Tile[i][j].value = t;
Se non erro dovrebbe evitare di salvarmi i caratteri \n e \r dentro la matrice, eppure...
Provero' altre vie alternative per leggere il file, per ora grazie a tutti :]
http://indiefanmagazine.blogspot.com/ - The ultimate 8bit blog!
http://pix3lworkshop.altervista.org/ - Game Design & Pixel art
|
|
| 02-02-2012 21:43 |
|
theGiallo
A.N.E.C.I.F.E.G.
Messaggi: 2,874
Registrato: Mar 2011
Online
|
#18
RE: [C + SDL] Tile Map
te lo ho detto che devi riscriverlo  se leggi ocme leggi ora leggicomunque gli a capi, prova a mettere un fread o due dopo il for interno.
Gianluca Alloisio => thegiallo.blogspot.com
classe 1989
studente al 4° anno - Informatica - SMFN - UniGe
Dottore in Informatica ( )
|
|
| 02-02-2012 22:14 |
|