====== Mapa ====== Třída ''Map'' reprezentuje bludiště (no, jeho mapu). Mapa je povinným vstupním argumentem všech prostředí poskytovaných modulem ''kuimaze2'' ([[.:10_searchproblem|SearchProblem]], [[.:20_mdpproblem|MDPProblem]], [[.:30_rlproblem|RLProblem]]). S výjimkou vytváření těchto prostředí byste nikdy neměli mít potřebu pracovat s instancí třídy ''Map'' přímo. Třída poskytuje jednotlivým prostřědím informace o rozměrech mapy, o významu jednotlivých políček na mapě (zda jsou to zdi nebo volná políčka, zda je to startovní stav nebo některý z cílových stavů, zda je možný přechod z jedné pozice na jinou, atd.). ===== Reprezentace mapy ===== Mapu lze reprezentovat/specifikovat více způsoby. V ''kuimaze2'' se používají dva: * víceřádkový řetězec, kde každý znak odpovídá jedné pozici v mapě, a * bitmapový obrázek, kde každý pixel odpovídá jedné pozici na mapě. Význam znaků a barev je následující: ^ Znak ^ Barva ^ Význam ^ | ''.'' | Bílá | Normální prázdná/volná přístupná pozice. | | ''#'' | Černá | Zeď (nepřípustná pozice). | | ''S'' | Modrá | Startovní pozice. Každá mapa může mít jen jednu startovní pozici. | | ''G'' | Zelená | Cílová pozice (žádoucí, pozitivní). Každá mapa může mít několik cílových pozic. | | ''D'' | Červená | Nebezpečná pozice (nežádoucí, negativní). Každá mapa může mít více nebezpečných pozic. | ===== Vytvoření mapy ... ===== ==== ... z řetězce ==== Mapu lze vytvořit z víceřádkového řetězce pomocí metody ''Map.from_string()'': >>> from kuimaze2 import Map >>> MAP = """ S#.G .D.D .... """ >>> m = Map.from_string(MAP) >>> m.width 4 >>> m.height 3 >>> m.start State(r=0, c=0) >>> m.goals {State(r=0, c=3)} >>> m.dangers {State(r=1, c=1), State(r=1, c=3)} ==== ... z bitmapového obrázku ==== Mapu lze vytvořit z obrázku pomocí funkce ''map_from_image'': from kuimaze2.map_image import map_from_image map = map_from_image("../maps/normal/normal2.png")