Orario: 19-06-2013, 11:22 Benvenuto ospite! (Log inRegistrati)


Rispondi 
[C + SDL] Tile Map
Autore Messaggio
theGiallo
A.N.E.C.I.F.E.G.

Messaggi: 2,956
Registrato: Mar 2011
Offline Offline
#16 RE: [C + SDL] Tile Map
0
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 ( Asd )
[Immagine: znwop2.png][Immagine: 2sb28nm.png][Immagine: favicon.ico][Immagine: 2drc2gz.png][Immagine: 2cqhg0n.png]
02-02-2012 19:43
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Pix3l
Junior Member

Messaggi: 38
Registrato: Aug 2011
Offline Offline
#17 RE: [C + SDL] Tile Map
0
(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
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
theGiallo
A.N.E.C.I.F.E.G.

Messaggi: 2,956
Registrato: Mar 2011
Offline Offline
#18 RE: [C + SDL] Tile Map
0
te lo ho detto che devi riscriverlo Sorriso 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 ( Asd )
[Immagine: znwop2.png][Immagine: 2sb28nm.png][Immagine: favicon.ico][Immagine: 2drc2gz.png][Immagine: 2cqhg0n.png]
02-02-2012 22:14
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Vai al forum: