Autor Wątek: FOG  (Przeczytany 1086 razy)

Offline Slav

  • Użytkownik

# Listopad 02, 2012, 01:11:51
Nie miałem pomysłu w jakim dziale mógłbym umieścić mój problem, więc piszę tutaj.
Mam problem z mgłą wojny FOG, w grze.

Mam tablicę przechowującą informację o mapce, i tablicę przechowującą informację o mgle w grze.
Tablica z mapką jest rozmiaru 80x80 a z mgłą 160x160 czyli 2 razy większa. Zrobiłem by w pętli zerowało całą tablicę

0000000000
0000000000
0000000000
00000X0000
0000000000
0000000000

Potem na około postaci X przypisywało 1, na podstawie współrzędnych:


0000000000
0000000000
0000111000
00001X1000
0000111000
0000000000

Tym sposobem gdy się poruszam wszystko pięknie działa, i odkrywa pola nowe, zasłania stare itd.
Problem polega na optymalizacji, ponieważ wiadome jest że powinno się sprawdzać tylko pola widoczne a nie ciągle całą mapkę. Tak więc pole widoczne zajmuję 1/4 tablicy czyli 40x40. Tak więc zerując ciągle tym razem tablicę z zakresu 40x40 system mgły działać będzie tylko na 1/4 mapki, a jak się przejdzie trochę dalej to tam już jej nie ma.  Tak więc trzeba zrobić by tablica odpowiedzialna za odświeżanie i przypisywanie zajmowała się obszarem widzialnym ale też uwzględniała przesunięcie gracza. Nie wiem jednak jak to uwzględnić. Jak przesuwać te sprawdzenia tak, by przy każdym przesunięciu na 4 strony obszar się zmieniał.

Offline Mr. Spam

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

Offline Santor

  • Użytkownik

# Listopad 02, 2012, 13:28:00
Jak poruszasz postacia i przesuwasz mapke to musisz sobie zapisywac aktualne polozenie naroznika wyswietlacza/monitora  według tych współrzędnych obliczac obecnosc mgly i ja rysowac.

Offline Slav

  • Użytkownik

# Listopad 02, 2012, 16:37:23
Startowe położenie jest takie że narożnik ma 0,0. Czyli przy przesunięciu w prawo o 1+szybkość=6 gdzie szybkość to 5, muszę w pamięci ustalić że aktualna pozycja narożnika to 0,6 tak ?

Offline Santor

  • Użytkownik

# Listopad 03, 2012, 12:44:06
Tak, z reszta tak samo jak przy rysowaniu mapy przy scroll'owaniu