krouzek:bludiste_hledani

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
krouzek:bludiste_hledani [2022/04/27 07:17] adminkrouzek:bludiste_hledani [2023/11/15 20:54] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
-=== Bludiště - rekapitulace ===+===== Bludiště - rekapitulace =====
 ==== Zadání ==== ==== Zadání ====
 Na začátku jsme brainstormovali zadání - hra s hrdinou, co se snaží projít bludištěm (do nějakého cílového políčka). Variace je [[https://youtu.be/BGOenvwj3OY?t=26|Sokoban]] = hrdina posouvá bedny na cílová místa. Exotičtější varianta je třeba [[https://youtu.be/FiEVfa1OK_o?t=102|Boulder Dash]] ve kterém se pracuje i s jednoduchou gravitací. Na začátku jsme brainstormovali zadání - hra s hrdinou, co se snaží projít bludištěm (do nějakého cílového políčka). Variace je [[https://youtu.be/BGOenvwj3OY?t=26|Sokoban]] = hrdina posouvá bedny na cílová místa. Exotičtější varianta je třeba [[https://youtu.be/FiEVfa1OK_o?t=102|Boulder Dash]] ve kterém se pracuje i s jednoduchou gravitací.
Řádek 8: Řádek 8:
  
 ==== Implementace ==== ==== Implementace ====
-{{ :krouzek:bludiste_dalsi.zip |}} 
  
 V kódu máme pro lepší přehlednost souřadnice většinou jako objekt:  ''%%{x:5, y:3}%%''. V našem kódu máme základní neměnnou mapu v dvojitém poli: ''%%mapa[y][x]%%'' tedy například ''%%mapa[3][5]%%'' obsahuje hodnotu ''%%X%%'' což značí zeď. **Pozor - indexy jsou opravdu přehozeny, první y druhé x** - první je totiž index řádku = vnější a druhý index jednotlivé buňky v řádku.  V kódu máme pro lepší přehlednost souřadnice většinou jako objekt:  ''%%{x:5, y:3}%%''. V našem kódu máme základní neměnnou mapu v dvojitém poli: ''%%mapa[y][x]%%'' tedy například ''%%mapa[3][5]%%'' obsahuje hodnotu ''%%X%%'' což značí zeď. **Pozor - indexy jsou opravdu přehozeny, první y druhé x** - první je totiž index řádku = vnější a druhý index jednotlivé buňky v řádku. 
Řádek 14: Řádek 13:
 Ve hře máme i pohyblivé objekty: hráče a příšery. Pro jednodušší pohybování tyto objekty nejsou uvnitř pole ''%%mapa%%'' (ta může být tedy neměnná po celou hru), ale jsou vyjádřeni souřadnicí například ''let player = %%{x: 3, y:2}%%''. O kombinaci mapy a těchto dynamických objektů se stará funkce ''%%vykresli%%'' - v našem případě je trochu složitější, protože je schopná si ad hoc vytvořit html elementy (buňky) které potřebuje. Ve hře máme i pohyblivé objekty: hráče a příšery. Pro jednodušší pohybování tyto objekty nejsou uvnitř pole ''%%mapa%%'' (ta může být tedy neměnná po celou hru), ale jsou vyjádřeni souřadnicí například ''let player = %%{x: 3, y:2}%%''. O kombinaci mapy a těchto dynamických objektů se stará funkce ''%%vykresli%%'' - v našem případě je trochu složitější, protože je schopná si ad hoc vytvořit html elementy (buňky) které potřebuje.
  
-=== Postup ===+==== Postup ====
 Co jsme za ten měsíc s bludištěm zkoušeli?  Co jsme za ten měsíc s bludištěm zkoušeli? 
  * pohyb hráče pomocí kláves  * pohyb hráče pomocí kláves
Řádek 25: Řádek 24:
  * neděláme game over když se příšera a hráč dostanou na stejné políčko  * neděláme game over když se příšera a hráč dostanou na stejné políčko
  
-=== Hledání ===+==== Hledání ====
 Královskou disciplínou v bludišti je hledání nejkratší cesty - například pro hráče, aby se dostal k cíli. Může jít ale také o hledání cesty příšery k hráči aby ho snědla. Podobný algoritmus se také používá k generování a kontrole automaticky generovaných bludišť. Královskou disciplínou v bludišti je hledání nejkratší cesty - například pro hráče, aby se dostal k cíli. Může jít ale také o hledání cesty příšery k hráči aby ho snědla. Podobný algoritmus se také používá k generování a kontrole automaticky generovaných bludišť.
 Hledání nemusí být příliš výpočetně náročné, dá se tedy opakovat při každém tahu - a například reagovat na dynamické jevy (překážky, příšery). Ve hrách se spojitým světem se tomu říká //pathfinding// Hledání nemusí být příliš výpočetně náročné, dá se tedy opakovat při každém tahu - a například reagovat na dynamické jevy (překážky, příšery). Ve hrách se spojitým světem se tomu říká //pathfinding//
 +
 +{{ :krouzek:bludiste-hledani.zip |}} - verze s funkčním hledáním, okomentováno
  
  
  • krouzek/bludiste_hledani.1651043850.txt.gz
  • Poslední úprava: 2023/11/15 20:54
  • (upraveno mimo DokuWiki)