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: 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: 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.jpga tu plik terrain.bmp z kafelkami: http://imageshack.us/photo/my-images/830/terraingv.png/ |
|
SeaMonster131 |
» 2012-01-21 11:11:42 Hm.. A ta tablica nie powinna tak wyglądać: 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 |
|
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. |
|
ison |
» 2012-01-21 13:19:30 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? |
|
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 |
|
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. |
|
Gabes |
» 2012-01-23 20:14:46 Myślałem że już to rozwiązałeś .
Miałeś wszystko podane.
tablica tak:
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.
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 .
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.
|
|
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. |
|
« 1 » |