Temes Temat założony przez niniejszego użytkownika |
[Allegro 5] Poruszanie mapą » 2012-06-02 09:57:29 Witam po dłuższym czasie. Długo męczę się z grą w 2D... Studiuje poradniki i jedna rzecz ciągle mi nie wychodzi, nie tyle co nie wychodzi, ale nie rozumiem...
Poradnik: http://www.easykoder.vot.pl/arty/wyswietlanie_mapy
Chodzi mi o wyświetlanie i poruszanie się mapy w ALLEGRO 5...
Mam tak: - wolne okno (w którym wyświetlać będzie się mapa) o rozmiarach 650x450 - kafelki (grafika izometryczna) o rozmiarach 64x32
moim zamierzeniem jest, aby w okienku o rozmiarach 650x450 wyświetlała się mapa, ale mapa musi mieć wielkość większą niż 1500x1500 ( w przybliżeniu )
Teraz nie rozumiem całkowicie jak poruszać ekranem, bo "napisać" mapę umiem - tablica, tylko czy ktoś mógłby mi wyjaśnić (ew. przedstawić w kodzie, ale dokładniej niż w poradniku) jak poruszać mapą?
Odpowiem na każde pytanie z góry dziękuję |
|
m4tx |
» 2012-06-02 10:04:18 Poruszać mapą jest akurat bardzo prosto. Wystarczy ją zacząć rysować w innym miejscu, niż 0, 0. Proponuję tutaj zrobić sobie np. 2 zmienne - camPosX i camPosY. Przy poruszaniu bohaterem zmieniasz odpowiednie te 2 zmienne, a potem odejmujesz od "normalnej" pozycji kafla położenie kamery i voila! Do tego dochodzi jeszcze konieczność rysowania tylko tych kafli, które widać, ale to też jest proste - dzielisz wielkość okna gry przez rozmiar kafli i masz ilość kafli do wyświetlenia. |
|
Temes Temat założony przez niniejszego użytkownika |
» 2012-06-02 10:15:44 Czyli jak mam np. okno 650x450 i kafle 64x32 to 650/64 i 450/32? Jak mam tablice np. Mapa[20][20] to jak do każdego kafelka dać pozycję? |
|
m4tx |
» 2012-06-02 10:19:18 1. Tak. 2. Jak masz Mapa[20][20] to przecież masz już pozycję :P Np. Mapa[1][3] - kafel o X = 1, Y = 3. Masz kafle 64x32, to po prostu rysujesz to w X = 64, Y = 96. Proste :P I do tego jeszcze przesuwanie mapy, ale to już wyjaśniłem wcześniej. |
|
SeaMonster131 |
» 2012-06-02 22:31:40 |
|
Temes Temat założony przez niniejszego użytkownika |
» 2012-06-04 15:38:52 Kurde nie wiem co jest nie tak, ale nadal nie rozumiem... Nie mogę pojąć po co tam jest ten "bufor" i czas.
Nie wiem czy muszę dzielić? Bo jak np. chce tylko 1 obrazek skopiować tyle razy aby był na całej mapie...
Nadal nie rozumiem jak przesuwać mapę :X Przepraszam, ale no nie wiem :/
Ten przykład: http://www.wrzuc.to/GlCOh2z6.wt
|
|
SeaMonster131 |
» 2012-06-04 17:28:05 float przesunX = 0, przesunY = 0;
if( strzalka do gory ) przesunY--;
..itd, dla innych kierunkow
for(..) { for(..) { if( mapa[ y ][ x ] == 1 ) rysuj( IMG_ziemia, x * szerokoscKafelka - przesunX, y * dlugoscKafelka - przesunY ); } }
|
|
Temes Temat założony przez niniejszego użytkownika |
» 2012-06-04 17:32:58 No, ten kod jest mi chyba jasny, zaraz go przestudiuje, ale jednej rzeczy nie rozumiem, dosłownie jednej - co umieścić w for'ach?
Zmienną "i" która będzie zwiększana aż mapa się narysuje czy coś innego? |
|
« 1 » 2 |