Autor Zpráva
danooo
Profil *
ahojte. Pracuji na jedné browser hře, a narazil jsem na problém s generování mapy.
Přihlásí se uživatel, podle jeho souřadnic se na mapě zobrazí jeho vesnice a okolo té vesnice se zobrazí vesnice jiných hráču. Mapu by se dalo posouvat šipkama. Nevím jak na to, jak to generovat, něco co mají v ******** či divokých kmenech.
Alphard
Profil
Tam je to typická KSS, ne? Pro pohyb stačí sčítání a pro výpočet vzdálenosti pythagorova věta.
danooo
Profil *
nemůžeš mě ukázat jednoduchý příklda?
Alphard
Profil
Řekněme, že zobrazovaná vesnice má souřadnice [59; -38] a chceme zobrazit ještě několik vesnic kolem, takže se vezme vše z množiny X = {56; 57; 58, 59; 60; 61; 62} v kartézském součinu Y = {-35; -36; -37; -38; -39; -40; -41}.
Zapsáno programově:

for ($i = $x - 3; $i <= $x + 3; $i++)
{
  for ($j = $y + 3; $j >= $y -3; $j--)  // abychom zobrazovali od horních řádků, je to jednodušší
  {
    $souradnice[$i][$j]; //tady by se mohla třeba vykreslit buňka tabulky
  }
}
Alphard
Profil
Doplním, že informace o vesnici budou asi v databázi, kde bude mít tabulka i sloupce x a y. Dotaz na vesnice zájmu by pak mohl být:
"select * from vesnice where (x between ".($x - 3)." and ".($x + 3).") and (y between ".($y-3)." and ".($x+3).")";
fakeit
Profil *
danooo
Máš už mapu vygenerovanou? Myslím v DB. To co tu spíš řešíš je vykreslování.
drvaca
Profil
danooo
Pošli mi na e-mail link :) Docela by mě zajímalo jak to bude vypadat. . . Třeba by mě ta hra i zaujala a začal bych ji hrát :D
drvaca@volny.cz
danooo
Profil *
drvaca
Až to bude, tak ukážu. Ale sháníme grafika .-)
fakeit
Mám. Já potřebuji to vykreslování
Alphard
hned to zkusím
danooo
Profil *
Alphard
Já mám v databázi takto:
12|21

Mám to udělat tak?:
sloupec x: 12
sloupec y: -15
Alphard
Profil
danooo:
Mám to udělat tak?:
Asi ano, je to normalizovaný tvar. Váš tvar pak můžete kdykoliv vytáhnout pomocí concat.
danooo
Profil *
Alphard
No a teď nevím jak to dát dohromady s tou db
fakeit
Profil *
danooo
Jestli zvládneš udělat generátor mapy, tak bys neměl mít problém s vykreslováním :)
danooo
Profil *
fakeit
co je na tom složité?
fakeit
Profil *
danooo
Předpokládám, že to děláš pro nějakou lepší hru, takže generovat náhodně 4000 políček tak, aby na XX% byly obyvatelné plochy a na YY% neobyvatelné je poněkud složitější než vykreslovat 48 okolních polí :)
danooo
Profil *
to dělá trochu jinak, ale mám to tak
Alphard
Profil
Už nevím, co víc radit. Vesnice z aktuálního výběru se vytáhnou z databáze a vloží do pole (v projektu takovéhoto rozsahu by určitě neměl chybět databázový layer, takže kód na jeden řádek). Při vykreslování mapy se pro každou souřadnici zkontroluje, jestli je pro ni v poli vesnic záznam. Pokud ano, vypíšese název, typ a nevím co ještě, pokud ne, nechá se buňka prázdná.
Při posunu nahoru se upraví y + 1, při posunu vlevo x - 1 atd. a vše se opakuje.
Pro tvůrce webhry by tohle měla rutina, nad kterou se ani nepřemýšlí.
danooo
Profil *
Jo už to mám díky
Joker
Profil
danooo:
Mimochodem, téma mapy a pohybu po ní se tu už řešilo v několika jiných vláknech.
Snad polovina potenciálně-začínajících webových programátorů touží udělat hru jako ta co začíná na T a končí na N :-)
danooo
Profil *
Joker
já ne
danooo
Profil *
Mimochodem, téma mapy a pohybu po ní se tu už řešilo v několika jiných vláknech.
Joker
kde? dáš linky?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: