[Allegro] Problemy z obliczeniami (mapa kafelkowa 2D)
Ostatnio zmodyfikowano 2009-05-29 20:47
Rares Temat założony przez niniejszego użytkownika |
[Allegro] Problemy z obliczeniami (mapa kafelkowa 2D) » 2009-05-29 18:51:27 Mam problem co do mapy w Allegro. Mapa się dobrze wyświetla z tablicy, ale mam problem w tym miejscu:
if((key[KEY_RIGHT]) && (mapa_x < 40)){ mapa_x = mapa_x + 1; ludek.kierunek = 2; ludek.x+=2;} else
To tylko przykład i chodzi mi o coś innego. Mianowicie chodzi o liczbę 40 (mapa_x < 40). No więc jak mogę wyliczyć tą liczbę? Czy istnieje jakiś wzór? Mapa jest z tablicy o rozmiarach [20][40], a kafle mają 40x40 px. |
|
pekfos |
» 2009-05-29 18:56:35 chodzi ci o obliczenie maksymalnego położenia ludka? użyj makr: #define MAXX 40 #define MAXY 20
short mapa[ MAXY ][ MAXX ] = { };
możesz łatwo zmienić rozmiar mapy nie ograniczając ruchowości ludka:) |
|
Rares Temat założony przez niniejszego użytkownika |
» 2009-05-29 19:08:52 Nie, nie o to mi chodzi. Mam taką sytuację. Robię mapę, wyświetlam ją i wszystko działa, ale podczas działania programu mam taki problem. Gość idzie sobie np. w prawo i musi w pewnym momencie przestać iść, bo mapa się kończy. Mam taką funkcję:
if(key[KEY_RIGHT] && mapa_x < LICZBA) [...]
Interesuje mnie ta LICZBA, jak wiadomo przedstawia ona miejsce położenia lewego górnego rogu wirtualnego ekranu i kontroluje ona mapę. Liczba ta się zmienia w zależności od wielkości mapy. Chodzi mi o to, jak mogę łatwo wyliczyć tą liczbę? |
|
pekfos |
» 2009-05-29 19:12:35 ROZMIAR_MAPY_CALEJ-ROZMIAR_MAPY_WYSWIETLANEJ musisz wiedzieć ile naraz kafli wyświetlasz. (najlepiej też makrem:)) |
|
Rares Temat założony przez niniejszego użytkownika |
» 2009-05-29 19:51:43 Już nieaktualne. Jak ktoś by chciał oto wzór:
ILOŚĆ_LICZB_W_TABLICY * (SZEROKOŚĆ\WYSOKOŚĆ)_KAFLA - (SZEROKOŚĆ\WYSOKOŚĆ)_WIRTUALNEGO_EKRANU/(SZEROKOŚĆ\WYSOKOŚĆ)_KAFLA |
|
Rares Temat założony przez niniejszego użytkownika |
» 2009-05-30 21:00:15 Aha, wzór uaktualniłem, bo tamten nie działał tak jak trzeba. Tzn. wykonując działania zgodnie z kolejnością działania wychodziły dziwne liczby. Oto dobry wzór:
(_ILOŚĆ_LICZB_W_TABLICY_ * [SZEROKOŚĆ LUB WYSOKOŚĆ]_KAFLA_ - [SZEROKOŚĆ LUB WYSOKOŚĆ]_WIRTUALNEGO_EKRANU_) / [SZEROKOŚĆ LUB WYSOKOŚĆ]_KAFLA_
Czyli przykładowo tworzę mapkę z tablicy [20][40] i wyświetlam ją w rozdzielczości 800x600, a kafelki mają 100x100 px. Oto działanie:
Dla maksymalnego mapa_x:
(40 * 100 - 800) / 100 = (4000 - 800) / 100 = 3200 / 100 = 32
Dla maksymalnego mapa_y:
(20 * 100 - 600) / 100 = (2000 - 600) / 100 = 1400 / 100 = 14
Myślę, że się przyda, a wzór jest bardzo przydatny (przynajmniej dla mnie). Jeśli wyjdą liczby z ułamkami to lepiej je zaokrąglić w górę.
Pozdro. |
|
manfred |
» 2009-05-29 20:47:38 Jakim prawem pchasz tu makra? Od takich rzeczy są STAŁE... |
|
« 1 » |