====== 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")