- Pos:
- Health:
- Traveled:
- Status:
Dostaň agenta z bludiště
V následující hře půjde o to vysvobodit agenta z bludiště. Každá hra sestává z neomezeného počtu tahů. Hra končí ve chvíli, kdy agent nalezne východ z bludiště, umře nebo hru vzdá. V každém tahu může agent provést (až na jednu výjimku) libovolný počet akcí (viz níže).Akce | Popis |
agent.go(smer) |
Agent provede krok daným směrem, kde směr je jedno z písmen 'N','S','E','W' označující světovou stranu. Tuto akci může agent provést pouze jednou za tah! Pokud toto pravidlo poruší, vyčerpá se a ubudou mu životy. Pokude je v daném směru zeď, agent do ní nabourá a pořádně si ublíží, takže mu také ubudou životy. |
agent.is_wall(smer) |
Vrátí True pokud je na vedlejším políčku daným směrem zeď.
|
agent.write(text) |
Agent napíše (no spíš vyryje) na podlahu (na místě, kde se nachází) nápis, který mu zadáte. |
agent.read() |
Agent si přečte, co je napsáno na podlaze na místě, kde se nachází a nápis vrátí. Pokud tam nic napsáno není, tak tato funkce vrátí prázdný řetězec. |
agent.read(smer) |
Agent si přečte, co je napsáno na podlaze o jedno políčko vedle agenta směrem smer .
Pokud tam nic napsáno není, tak tato funkce vrátí prázdný řetězec.
|
agent.set_color(color) |
Agent zabarví aktuální políčko barvou color . Jako barvu můžete použít
buď její anglický název ('red','green','blue' ) nebo její rgb kód ('rgb(100,200,10)' ,
čísla postupně udávají intenzitu červené, zelené a modré na stupnici 0-255).
|
agent.get_color() |
Agent vrátí barvu aktuálního políčka. |
agent.at_exit() |
Tato akce vrátí True , pokud se agent nachází u východu z bludiště.
V takovém případě se hodí následující funkce.
|
finish() |
Pokud agent provede tuto akci (uvnitř svého tahu) a agent se nachází u východu z bludiště, vyhráli jste (a máte šanci získat zápočet). Pokud se ale agent u východu nenachází, okamžitě umírá. |
fail() |
Pokud si myslíte, že z bludiště není cesta ven, proveďte tuto akci, která hru ukončí. Pokud budete mít pravdu, máte opět šanci získat zápočet. |
tah
, která se v každém tahu zavolá a provede akce,
které chce agent v daném tahu uskutečnit. Vaším úkolem bude tuto strategii naprogramovat.
K tomu máte k dispozici editor
s dvěmi předpřipravenými funkcemi init
a tah
, do nichž musíte doplnit správný kód. Funkce init
se volá vždy před
začátkem každé hry. V ní se můžete na tento únik připravit (například si vyrobit pomocné proměnné v
paměti agenta). Funkce tah
se pak volá jednou v každém tahu dokud hra neskončí, t.j.
dokud se agent nedostane z bludiště, neumře nebo to nevzdá. Obě funkce mají jediný parametr — agenta.
Kromě výše zmíněných akcí má agent k dispozici ještě paměť. Do paměti můžete přistupovat pomocí proměnné
agent.memory
.
Můžete tedy například napsat agent.memory.kroky = ['N','S']
. Také můžete použít funkci print
,
která vypisuje hlášky do spodní části okna.
Až budete mít obě funkce napsané, můžete se pokusit o únik. K tomu slouží tlačítka v pravé části stránky:
spustí novou hru nebo pokračuje v přerušené hře. | |
dočasně přeruší hru (agent odpočívá). | |
provede jeden tah (zavolá funkci tah ). |
|
Připraví novou hru, t.j. zabije aktuálního agenta, vytvoří agenta nového a dá ho na začátek bludiště a zároveň po starém agentovi bludiště uklidí (vyčistí všechny nápisy). |
Pokud agent udělá určitý počet chyb, umře a hra skončí.
Postup agenta můžete sledovat v pravé horní části na malé 2D mapě, nebo v záložce Kamera, kde se můžete na bludiště dívat očima agenta.
K pokusům s agentem máte k dispozici také Pythonovskou konzoli vpravo, kde je předdefinovaná proměnná agent
,
která se chová stejně jako parametr funkce tah
. Jediná výjimka je ta, že v konzoli se agent neunaví,
tedy s ním můžete chodit jak dlouho chcete (ale bourat do zdí nesmíte). Také není k dispozici funkce fail
ani finish
.