Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro]Wczytywanie mapy z pliku

Ostatnio zmodyfikowano 2009-08-16 19:10
Autor Wiadomość
DeBugger
» 2009-08-14 13:45:03
W funkcji main, przed pętlą while.

Następnym razem - jedno pytanie - jeden temat. Zamykam.
P-9443
kitty177
Temat założony przez niniejszego użytkownika
» 2009-08-14 15:13:43
Otwieram
Wiem że robi sie to troche upierdliwe, ale jak mam ja wstawic? Pisze load_mapa;, albo load_mapa(); i dalej niedziala, jak mam to zrobic prosze pomozcie

Ps: Problem z pierwszego postu jeszcze nie zostal rozwiazany wiec mam prawo pisac calyczas w jednym temacie
P-9444
DeBugger
» 2009-08-14 16:44:14
Sorry, ale pisze z Debiana, gdzie nie ma polskich znakow.
Jezeli prototyp wyglada tak:
void load_mapa( const char * )
To musisz jako argument wpisac lokalizacje pliku. Prosze przeczytac kurs jeszcze raz, jezeli nie wiesz w ogole jak uzywac funkcji.
P-9445
kitty177
Temat założony przez niniejszego użytkownika
» 2009-08-15 10:18:30
Uzylam takiego zapisu:
C/C++
load_mapa( "plik.txt" );

skompilowalo sie bez bledow , juz nie wyswietla samych '0' tylko takze inne tekstury, ale w chaotycznej kolejnosci a nie tak jak mam w plik.txt. Co jest zle?
P-9479
DejaVu
» 2009-08-15 13:16:20
Moim zdaniem źle napisałaś pętle for. Powinnaś wczytywać wiersz po wierszu, a nie kolumna po kolumnie.
P-9485
kitty177
Temat założony przez niniejszego użytkownika
» 2009-08-15 13:55:34
nawet gdy zamienilam miejscami a i b to bylo zle
P-9488
DejaVu
» 2009-08-15 14:22:47
1) Sprawdź czy ilość cyfr w wierszu w pliku wynosi 16.
2) Wypełnij wszystkie wiersze zerami
3) Wypełnij cały jeden wiersz jakąś inną teksturą (np. 1)
4) Zobacz efekt jaki otrzymasz. Powinno Ci to pomóc w ustaleniu co się faktycznie dzieje z danymi
P-9490
kitty177
Temat założony przez niniejszego użytkownika
» 2009-08-15 16:05:31
Teraz jest prawie wszystko dobrze:

http://img9.imageshack.us/i/mapamnj.png/

Jedynie mapa jest za bardzo do gory. Wklejam kod, sama sprobuje znalezc blad, ale jak na razie nic mi sie w oczy nie rzucilo:
C/C++
#include <allegro.h>
#include <fstream>

int mapa_x = 0, mapa_y = 0;
const int pola_x = 16;
const int pola_y = 12;
BITMAP * teren = NULL;
BITMAP * bufor = NULL;

short int map[ 12 ][ 16 ];

bool load_mapa( const char * f_sFileName )
{
    std::fstream plik;
    plik.open( "plik.txt", std::ios::in );
    if( !plik.good() ) return false;
   
    std::string wiersz;
    while( getline( plik, wiersz ) )
    {
        for( int i = 0; i < wiersz.length(); i++ )
        {
           
            for( int a = 0; a < pola_y; a++ )
            {
                for( int b = 0; b < pola_x; b++ )
                {
                    plik >> map[ a ][ b ];
                }
            }
        } //for
    } //while
   
    return true;
}




void wys_mape()
{
    int licznik_x, licznik_y;
    for( licznik_x = 0; licznik_x < 16; licznik_x++ )
    {
        for( licznik_y = 0; licznik_y < 12; licznik_y++ )
        {
            blit( teren, bufor,
            ( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] % 4 ) * 40,
            ( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] / 4 ) * 40,
            licznik_x * 40, licznik_y * 40, 40, 40 );
        }
    }
};
//...
int postac_x = 80, postac_y = 80;
int x = 1, y = 1;

load_mapa( "plik.txt" );

while( !key[ KEY_ESC ] )
{
   
    if(( key[ KEY_RIGHT ] ) &&( map[ y ][ x + 1 ] == 0 ) )
    {
        postac_x += 40;
        x++;
       
        rest( 200 );
    }
   
    if(( key[ KEY_LEFT ] ) &&( map[ y ][ x - 1 ] == 0 ) )
    {
        postac_x -= 40;
        x--;
       
        rest( 200 );
    }
   
    if(( key[ KEY_DOWN ] ) &&( map[ y + 1 ][ x ] == 0 ) )
    {
        postac_y += 40;
        y++;
       
        rest( 200 );
    }
   
    if(( key[ KEY_UP ] ) &&( map[ y - 1 ][ x ] == 0 ) )
    {
        postac_y -= 40;
        y--;
       
        rest( 200 );
    }
   
   
   
    clear_to_color( bufor, makecol( 150, 150, 150 ) );
   
    wys_mape();
   
    blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    //...
P-9493
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona