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

[Allegro] Problemy z obliczeniami (mapa kafelkowa 2D)

Ostatnio zmodyfikowano 2009-05-29 20:47
Autor Wiadomość
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.
P-7259
pekfos
» 2009-05-29 18:56:35
chodzi ci o obliczenie maksymalnego położenia ludka?
użyj makr:
C/C++
//gdzieś:
#define MAXX 40
#define MAXY 20
//mapa:
short mapa[ MAXY ][ MAXX ] = {
    //..
};
//itd
możesz łatwo zmienić rozmiar mapy nie ograniczając ruchowości
ludka:)
P-7261
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ę?
P-7265
pekfos
» 2009-05-29 19:12:35
ROZMIAR_MAPY_CALEJ-ROZMIAR_MAPY_WYSWIETLANEJ
musisz wiedzieć ile naraz kafli wyświetlasz.
(najlepiej też makrem:))
P-7267
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
P-7269
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.
P-7292
manfred
» 2009-05-29 20:47:38
Jakim prawem pchasz tu makra? Od takich rzeczy są STAŁE...
P-18931
« 1 »
  Strona 1 z 1