vytvorenie a vykreslenie 2d mapy

Programovacie jazyky, rady, poradňa...
qwertasss
Novice
Novice
Príspevky: 5
Registrovaný: 02 jún 2012, 10:50

vytvorenie a vykreslenie 2d mapy

Príspevok od používateľa qwertasss »

Zdravim,

mam taky problem s mapou a potrebujem na to nejaky dobry algoritmus.

Ide o to ze najprv si vytvorim pole o velkosti mapy(konkretne 1520x760) a kedze sa jedna o jednoduchu mapu kazdemu policku davam nahodnu hodnotu 1 alebo 0 a podla toho bude mat farbu.Tento proces trva asi 5 sek to sice neni najlepsie ale da sa to vydrzat. Horsie to je uz z vykreslovanim mapy. Vykreslujem len malu cast mapy(71x76) a to tak ze kazde policko ak ma hod. 1 tak daj taku farbu ak 0 tak taku farbu. Ked sa vsak chcem pohybovat po mape tento sposob je strasne pomaly a totalne neprakticky.

Vedeli by ste mi niekto navrchnút lepsie riesenie? Vdaka.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: vytvorenie a vykreslenie 2d mapy

Príspevok od používateľa audiotrack »

no tak hlavne by si tam mal ukladať true/false a nie 1/0. Takto zaberáš v pamäti (pre 32 bitový integer) 4.4 MB!!! namiesto 141 kB. Hneď ti to bude lepšie pracovať.

No a k tej optimalizácii: skús sa zamyslieť, či tú mapu musíš mať vopred vytvorenú keď má každé políčko aj tak náhodnú hodnotu. Možno by stačilo vytvoriť viditeľnú oblasť, a okolie generovať až pri pohybe mapou. Tebe ale najväčšie problémy robí samotné prekreslovanie mapy. A tu by bolo dobré vedieť v čom to programuješ a aké metody používaš na vykreslovanie
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: vytvorenie a vykreslenie 2d mapy

Príspevok od používateľa metthal »

A pri pohybe, akym sposobom upravujes scenu? Skus napriklad prekreslovat len tie policka, ktorych stav sa po pohybe naozaj zmenil. Taktiez pokial sa tu ideme bit o miesto v pamati, tak mozes normalizovat rozmery mapy na mocninu 2ky a pouzit jednotlive bity v samotnom integer-y ako tvoje hodnoty true/false. (Mapa 2048x2048 by v tomto pripade zaberala v pamati ubohych 65 kB)
qwertasss
Novice
Novice
Príspevky: 5
Registrovaný: 02 jún 2012, 10:50

Re: vytvorenie a vykreslenie 2d mapy

Príspevok od používateľa qwertasss »

metthal napísal:A pri pohybe, akym sposobom upravujes scenu? Skus napriklad prekreslovat len tie policka, ktorych stav sa po pohybe naozaj zmenil. Taktiez pokial sa tu ideme bit o miesto v pamati, tak mozes normalizovat rozmery mapy na mocninu 2ky a pouzit jednotlive bity v samotnom integer-y ako tvoje hodnoty true/false. (Mapa 2048x2048 by v tomto pripade zaberala v pamati ubohych 65 kB)
mohol by si to trocha vysvetlit? vypada to zaujimavo ale mne matika moc nejde :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: vytvorenie a vykreslenie 2d mapy

Príspevok od používateľa audiotrack »

napíš už konečne v čom to programuješ. Ak to nie je nič nízkoúrovňové kde môžeš meniť bity ako sa ti zachce, tak ti to zbytočne bude vysvetlovať
qwertasss
Novice
Novice
Príspevky: 5
Registrovaný: 02 jún 2012, 10:50

Re: vytvorenie a vykreslenie 2d mapy

Príspevok od používateľa qwertasss »

ved mam to rozrobene v dvoch jazykoch: v C to sa v celku da ale ja to potrebujem v prog. jazyku Lua a tu ziadne pointre a nic podobne neni takze asi tak...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: vytvorenie a vykreslenie 2d mapy

Príspevok od používateľa BX »

Príde mi dosť divné, používať také čudne veľké pole, ale keďže netušíme, o čo sa snažíš, budiš.
V tom prípade s ním ale musíš zaobchádzať veľmi odporne, ak to nazývaš pomalé. Vykresľuješ na obrazovku 70x70 "bodov", to je hneď. Takže kde je tu pes zakopaný?
Stačí ti predsa mapovať si vykreslovanú časť na menšie "virtuálne" pole (tj. ukladáš si indexy ľavého horného bodu vykresľovanej časti, napr.) a to tvoje vykresľovanie pustiť len v tomto menšom poli (do tých 70x70).
Tam nemá byť čo pomalé. Odporné určite áno, ale pomalé nie.

A samozrejme, prerob si to 1/0 na jeden byte.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: vytvorenie a vykreslenie 2d mapy

Príspevok od používateľa harrison314 »

qwertasss napísal:ved mam to rozrobene v dvoch jazykoch: v C to sa v celku da ale ja to potrebujem v prog. jazyku Lua a tu ziadne pointre a nic podobne neni takze asi tak...
V C si sprav DLL, ktoru nacitas v jazyku Lua, to sa da
http://www.lua.org/manual/5.1/manual.ht ... ge.loadlib
To vykreslovanie presun do C a mas po probleme, aj ked si myslim, ze keby to bolo normalne nakodene 71x76 by mala Lua zvladat v realtime, nato je dost richla, pes moze byt zakopany aj niekde inde.
Napísať odpoveď