Třída Map
reprezentuje bludiště (no, jeho mapu). Mapa je povinným vstupním argumentem všech prostředí poskytovaných modulem kuimaze2
(SearchProblem, MDPProblem, 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.).
Mapu lze reprezentovat/specifikovat více způsoby. V kuimaze2
se používají dva:
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. |
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)}
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")