Autor Wątek: Plansza do gry d2  (Przeczytany 1030 razy)

Offline WiecznyWem

  • Użytkownik
    • Blog

# Styczeń 08, 2011, 12:03:23
Witam wszystkich.
Ciekawi mnie jedna rzecz. Jaki jest najwydajniejszy sposób przechowywania planszy złożonej z kafelków w pamięci.(Przy okazji zaznaczę że piszę w c++) Można by było stworzyć dwuwymiarową tablicę, i tam każda wartość odpowiadała by danemu kafelku, który później byłby w odpowiedni sposób wyświetlony. Lecz tablica może się okazać nie zbyt pojemna, żeby wczytać bardzo dużą planszę. Zastanawiałem się nad vectorami z vector.h, ale czy da się w nich coś takiego zrobić? Jakiś dwuwymiarowy wektor, albo jakieś łączenie ich z czymś? Sprawę może ułatwić to że szerokość mojej mapy jest stała - 12 kafelków, chociaż wolałbym coś uniwersalnego. Ew. jakby był jakiś inny sprytny sposób, to proszę opowiedz o nim.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Kos

  • Użytkownik
    • kos.gd

# Styczeń 08, 2011, 12:07:46
Cytuj
Można by było stworzyć dwuwymiarową tablicę, i tam każda wartość odpowiadała by danemu kafelku, który później byłby w odpowiedni sposób wyświetlony. Lecz tablica może się okazać nie zbyt pojemna, żeby wczytać bardzo dużą planszę. Zastanawiałem się nad vectorami z vector.h

Jedno i to samo. :P

Cytuj
Lecz tablica może się okazać nie zbyt pojemna, żeby wczytać bardzo dużą planszę.

Co to jest "bardzo duża"? Do your math, łatwo policzyć na kartce ile zajmie w pamięci, jeśli jeden kafelek = 1 bajt. Wcale nie tak dużo.

Jeśli potrzebujesz jakąś ogromną mapę, to czeka Cię doczytywanie fragmentów w locie.

Cytuj
Jakiś dwuwymiarowy wektor, albo jakieś łączenie ich z czymś?

Tak. Jest w bibliotekach: boost::multi_array.

Offline raver

  • Użytkownik
    • Moja strona domowa.

# Styczeń 08, 2011, 16:14:57
Po prostu zrób sobie tablicę o rozmiarze MAX_WIDTH*MAX_HEIGHT. Możesz sobie przecież ustalić jakiś maksymalny rozmiar, nikt Cię nie zbije :).

Im prostsze rozwiązanie, tym lepsze. A powinieneś minimalizować liczbę odwoływania się do elementów mapy, a nie przejmować się za bardzo jak jest ona przechowywana.
« Ostatnia zmiana: Styczeń 08, 2011, 16:32:41 wysłana przez raver »

Offline Avaj

  • Użytkownik

# Styczeń 30, 2011, 19:45:08
tworzysz wektor o rozmiarze SZEROKOSC_MAPY * WYSOKOSC_MAPY, zaś do elementów odwołuj się przez SZEROKOŚĆ_MAPY * rząd(=y) + kolumna(=x)