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 (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.).

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

courses/b3b33kui/semestralni_ulohy/kuimaze/05_map.txt · Last modified: 2024/02/20 15:51 by xposik