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

Allegro wyświetlanie mapy

Ostatnio zmodyfikowano 2012-01-31 21:14
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
Allegro wyświetlanie mapy
» 2012-01-21 10:25:49
Witam, was serdecznie, otóż mam problem z wyświetlaniem mapy easykodera. Przerobiłem ją na Allegro 5, ale nie działa poprawnie. Oto ona:
C/C++
int mapa_x = 0, mapa_y = 0;
int licznik_x, int licznik_y;
for( licznik_x = 0; licznik_x < 10; licznik_x++ )
{
    for( licznik_y = 0; licznik_y < 5; licznik_y++ )
    {
       
        al_draw_bitmap_region( terrain,( tab[ licznik_y + mapa_y ][ licznik_x + mapa_x ] % 3 ) * 40,( tab[ licznik_y + mapa_y ][ licznik_x + mapa_x ] / 4 ) * 40, 40, 40, licznik_x * 40, licznik_x * 40, 0 );
       
    }
}

a tu tablica:
C/C++
short int tab[ 10 ][ 5 ] =
{
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

U mnie 0 to kafelki powietrza. I zamiast wyswietlenia tego co jest w tablicy, czyli prostokątu z tych kafelek, otrzymuje to:
http://imageshack.us/photo/my-images/651/przechwytywanieuc.jpg

a tu plik terrain.bmp z kafelkami:
http://imageshack.us/photo/my-images/830/terraingv.png/
P-49010
SeaMonster131
» 2012-01-21 11:11:42
Hm.. A ta tablica nie powinna tak wyglądać:
C/C++
short int tab[ 2 ][ 5 ] =
{
    1, 0, 0, 0, 0,
    2, 0, 0, 0, 0
};
Chodzi o ilość kolumn i wierszy w tej tablicy. Zgaduję bo nie wiem co jest źle :P
P-49011
bingo009
Temat założony przez niniejszego użytkownika
» 2012-01-21 11:52:10
Teraz to jeszcze gorzej się zrobiło. Ale ja wiem na 100%, że to nie tablica jest winna. To napewno coś w funkcji, tylko nie wiem co. W mojej poprzedniej grze tablica była tak samo jak i tu i działała. Ale ona była pisana w Allegro 4.
P-49013
ison
» 2012-01-21 13:19:30
C/C++
al_draw_bitmap_region( terrain,( tab[ licznik_y + mapa_y ][ licznik_x + mapa_x ] % 3 ) * 40,( tab[ licznik_y + mapa_y ][ licznik_x + mapa_x ] / 4 ) * 40, 40, 40, licznik_x * 40, licznik_x * 40, 0 );
licznik_x * 40, licznik_x * 40?
P-49022
RazzorFlame
» 2012-01-21 13:34:29
Jeszcze jedno chciałbym dopowiedzieć:
W pętli for dajesz "licznik_x < 10" poczym wstawiasz go do tablicy [10][5] w miejscu: tab[licznik_y][licznik_x]...
Chyba powinno być licznik_x < 5 ... licznik_y < 10
P-49024
bingo009
Temat założony przez niniejszego użytkownika
» 2012-01-23 19:58:31
Po dwróceniu tego mapa się wyświetla przewrócona o 90* i kafelki się nieporpawnie wyświetlają. Po naprawie funkcji działa ona, lecz kafelki pokazuja się przesunięte w dół. Na samym dole tablicy 10x5 daje kafelki trawy, a one się wyświetlają gdzieś poza mapą. A jak dam na środku tablicy, to wtedy pokazuja się na dole mojej mapki.
P-49225
Gabes
» 2012-01-23 20:14:46
Myślałem że już to rozwiązałeś .
Miałeś wszystko podane.
tablica tak:
C/C++
short int tab[ 5 ][ 10 ] =
{
    { 1, 1, 0, 2, 2, 2, 2, 0, 1, 1 },
    { 1, 0, 0, 2, 0, 0, 2, 0, 0, 1 },
    { 0, 0, 0, 2, 0, 0, 2, 0, 0, 0 },
    { 1, 0, 0, 2, 0, 0, 2, 0, 0, 1 },
    { 1, 1, 0, 2, 2, 2, 2, 0, 1, 1 }
};

Funkcja wysw.
C/C++
int mapa_x = 0, mapa_y = 0;
int licznik_x, licznik_y;
for( licznik_x = 0; licznik_x < 10; licznik_x++ )
{
    for( licznik_y = 0; licznik_y < 5; licznik_y++ )
    {
        al_draw_bitmap_region( terrain,( tab[ licznik_y + mapa_y ][ licznik_x + mapa_x ] % 3 ) * 40,( tab[ licznik_y + mapa_y ][ licznik_x + mapa_x ] / 4 ) * 40, 40, 40, licznik_x * 40, licznik_y * 40, 0 );

lepiej bez pozycji y bo i tak masz wysokość y=0 .


   
C/C++
for( int licznik_y = 0; licznik_y < 5; licznik_y++ )
for( int licznik_x = 0; licznik_x < 10; licznik_x++ )
al_draw_bitmap_region( terrain, tab[ licznik_y ][ licznik_x ] * 40, 0,
     40, 40, licznik_x * 40, licznik_y * 40, 0 );
rzędami od lewej do prawej  pętla x w petli y.
P-49227
bingo009
Temat założony przez niniejszego użytkownika
» 2012-01-31 21:14:34
Sorki, że tak późno, ale ogromnie dziękuje za pomoc. Do zamknięcia.
P-49914
« 1 »
  Strona 1 z 1