Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

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