Kezdőoldal » Számítástechnika » Weblapkészítés » 800x800-as koordináta rendszer...

800x800-as koordináta rendszer kisméretű kirajzolása?

Figyelt kérdés

Sziasztok!

Azt szeretném megvalósítani, hogy gyorsan kis méretben kirajzolja a koordinátarendszer tartalmát az oldal.

(ez egy térkép)

Alapból a térképből egyszerre egy 7x7-es részt lehet látni, és ezt a részt lehet mozgatni. Ennek a betöltéssel nincs baj. De szeretnék egy minimapot a térképről.

[link]

Mint ilyet. Ebben a játékban egy 800x800-as világ van, aminek ha kicsiben, de kirajzolnám az összes pontját, akkor az nagyon sok idő lenne. Hogy oldja meg ez a játék, hogy ezt a kicsinyített képet a világról ilyen gyorsan megalkossa? Valami olyan algoritmust használ, hogy csoportosítva nézi meg a helyeket, és ahol több ugyanolyan pont is van, akkor a kicsi térképen azt jelzi 1 ponttal, míg ahol kevés, azt nem? Furán fogalmaztam meg tudom, de a lényeget remélem értitek.


2015. jún. 30. 22:18
1 2 3
 11/22 Drone007 ***** válasza:

Még mindig nem érted, mit akarnak mondani az előzők.

A teljes térkép adathalmazt olvasd be memóriába (egy tömbbe pl) és abból olvasd ki amit meg akarsz jeleníteni. Az idő nagy részét a brutálisan sok adatbázis lekérdezés viszi el. Ha csak egyszer kérdezed le az adatokat, az sokat gyorsít a dolgon. Így persze a memóriát fogja zabálni, de hát valamit valamiért.

2015. júl. 1. 11:13
Hasznos számodra ez a válasz?
 12/22 A kérdező kommentje:
Utolsó kommentemben ezt írtam.
2015. júl. 1. 11:14
 13/22 anonim ***** válasza:
Igen, minden legyen eltárolva. Tárolhatsz adatbázisban szín id-t is, így tudhatod, hogy az adott lekért objektumot milyen színnel kéne megjeleníteni. Ha nem akarod, hogy az origo benne legyen a ponthalmazban, akkor sql-t eszerint szűröd.
2015. júl. 1. 11:25
Hasznos számodra ez a válasz?
 14/22 A kérdező kommentje:
Az a baj, hogy egy 200x200-as térkép kirajzolása így is majdnem 10 mp-be telik.
2015. júl. 1. 11:31
 15/22 SimkoL ***** válasza:

Végignézted a kódodat amit a Prog.hu-ra linkeltél ?

echo "<div style='width:1057px;height:1057px;margin:0 auto;padding:0;border:3px solid #000000;'>";

for($mapy = 75;$mapy >=-75;$mapy--)

{

for($mapx = -75;$mapx <= 75;$mapx++)

{

$sql = mysqli_query($db,"SELECT COUNT(*) FROM Locations WHERE X=".$mapx." AND Y=".$mapy."") or die(mysqli_error($db));

$data = mysqli_fetch_array($sql);

if($data[0] == 1)

{

$sql = mysqli_query($db,"SELECT Type FROM Locations WHERE X=".$mapx." AND Y=".$mapy."") or die(mysqli_error($db));

$array = mysqli_fetch_array($sql);

if($array[0] == "Town") $color = "yellow";

else if($array[0] == "Mountain") $color = "grey";

echo "<div class='map' style='background: ".$color.";'><a href='location.php?x=".$mapx."&y=".$mapy."'></a></div>";

}

else echo "<div class='map' background='img/map/default.png'><a href='location.php?x=".$mapx."&y=".$mapy."' ></a></div>";

}

}

echo "</div>";


Szerinted hány lekérdezés van benne ?

2015. júl. 1. 11:35
Hasznos számodra ez a válasz?
 16/22 A kérdező kommentje:
2, és így elég sok, de sajnos az egyszerre betöltés is elég sok időt vesz igénybe viszonylag, szóval egy kicsit kicsinyíteni is kéne, csak nem tudom, hogy hogyan töltsem be egyszerre és még összezsúfoljam is őket?
2015. júl. 1. 11:42
 17/22 anonim ***** válasza:

Én is kb. ide akartam kilyukadni: 1 db lekérdezés kell, azzal lehúzol minden szükséges adatot. Hogy miért? Mert az SQL lekérdezések a változóműveletekhez képest tetű lassúak. Itt lehet merevlemezművelet is, míg ha benyomod az egészet egy tömbbe, akkor már tisztán RAM-ból dolgozol. És ha ügyesen csinálod, és mondjuk 8 biten tárolod a színt, kétszer 16-on meg a koordinátákat, akkor megúszod az egész 800x800-as képet 3 megabájtból, tömörítetlenül.

200x200-nál meg elég 8 bit a koordinátákhoz, ergo 24 biten elférsz, ami kb. 118 kB, tehát még sokkal kevesebb.

Most nem fogok utánanézni, hogy miként generálod a térképet, de javaslom a kép formátumot. A PHP elég gyorsan tud dolgozni így.

G.

2015. júl. 1. 11:51
Hasznos számodra ez a válasz?
 18/22 A kérdező kommentje:

Rendben, utánanézek a képek generálására.

Hogy szabhatom meg a fordítónak, hogy a változó hány bitet foglaljon?

2015. júl. 1. 12:14
 19/22 SimkoL ***** válasza:
Szerintem lekérdezésnél teljesen felesleges lekérdezni, hogy az adott négyzeten van-e objektum és akkor még egy lekérdezést indítani a típusára. Csak a típusokat kell, ha nincs olyan akkor default. Mondjuk jó lenne az adatbázist is látni, mit hol tárolsz talán a mi dolgunkat is megkönnyítenéd és hamarabb lenne jobb ötlet.
2015. júl. 1. 12:33
Hasznos számodra ez a válasz?
 20/22 A kérdező kommentje:

A teljes adatbázis lekérdezésével elértem, hogy 0,2 mp alatt lefusson, bár a kirajzolás még így is 1-2 mp.

Most a képi kirajzolás felé kacsingatok, mert zavaró lehet a böngészőnek, hogy 25000 sor van az oldalon :D

2015. júl. 1. 13:39
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!