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

[Allegro 5] Poruszanie mapą

Ostatnio zmodyfikowano 2012-06-04 18:34
Autor Wiadomość
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ę
P-57673
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.
P-57674
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ę?
P-57675
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.
P-57676
SeaMonster131
» 2012-06-02 22:31:40
Było już wiele tego typu tematów.. Ostatni to chyba ten: [ALLEGRO 4]Przesuwanie bitmapy
P-57716
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



P-57788
SeaMonster131
» 2012-06-04 17:28:05
C/C++
// zmienne odpowiadajace za poruszanie mapy:
float przesunX = 0, przesunY = 0;

// przesuwanie mapy:
if( strzalka do gory )
     przesunY--;

..itd, dla innych kierunkow


// wyswietlanie mapy:

for(..)
{
    for(..)
    {
        if( mapa[ y ][ x ] == 1 ) // np ziemia
             rysuj( IMG_ziemia, x * szerokoscKafelka - przesunX, y * dlugoscKafelka - przesunY );
       
    }
}
P-57808
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?
P-57809
« 1 » 2
  Strona 1 z 2 Następna strona