NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Java "Karel" , bludiště-souřadnicový systém tam i zpět

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Lulík
Člen
Avatar
Lulík:12.10.2015 19:56

Dobrý den,
prosím Váš můžete mi pomoc s domácím úkolem?

Mám naprogramovat robota Karla, který projde bludiště viz. foto, dle pravidla pravé ruky (po právé straně bude mít zeď). Má dojít ke značce (černý puntík), sebrat jí a donést na svoji startovací pozici.

Není to sice čistě problém Javy, ale spíše potřebuji nějaký tip jakou strategii použít vůbec mě nic nenapadá.

Nejspíš budu muset vytvořit souřadnicový systém x,y například a podle něj se orientovat, ale nevím jak to správně implementovat, tak aby robot fungoval správně a v jakémkoliv jiném bludišti, tedy má být univerzální.

Předem děkuji za každý tip a radu.

Editováno 12.10.2015 19:58
 
Odpovědět
12.10.2015 19:56
Avatar
Tomáš Brůna
Tvůrce
Avatar
Odpovídá na Lulík
Tomáš Brůna:12.10.2015 20:06

sice netuším jak na to ale možná ti pomůže něco z tohodle: http://www.itnetwork.cz/…tmy/bludiste

Nahoru Odpovědět
12.10.2015 20:06
Vi veri universum vivus vici
Avatar
Odpovídá na Lulík
Patrik Valkovič:12.10.2015 20:09

Podíváš se na pole po pravé straně Karla, a pokud tam není stěna, tak jej přesuneš. Pokud tam stěna je, tak jej otočíš do leva a postup opakuješ. To znamená, že když stojí vedle stěny, tak se otočí do leva, tím pádem má po pravé straně volno, kam se přesune. Tak bych to napsal.

Nahoru Odpovědět
12.10.2015 20:09
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Lulík
Člen
Avatar
Lulík:16.10.2015 18:06

Všem děkuji za rady a tipy. Úkol jsem vypracoval a prošel kontrolou v pořádku. Nevím jestli se to někomu bude hodit, ale pro úplnost:

(mé řešení)
Robot kontroluje zda má po pravé straně zeď a zároveň ji nemá před sebou a nestojí na značce, pak udělá krok (při každém kroku se zapíší souřadnice x, y do polí). Jestli, že se tak neděje zjišťuje se, která podmínka se nesplnila a dle toho se robot zachová. Tedy pokud nemá po pravé straně zeď otočí se doprava a udělá krok. Pokud má před sebou zeď otočí se doleva a zda-li nemá před sebou zeď udělá krok vpřed, jestliže je zeď před ním, točí se do té doby dokud ji před sebou nemá a následně udělá krok. Pokud stojí na značce sebere ji a otočí se o 180°. Z aktuální pozice testuje souřadnice z polí, tak že udělá krok vpřed (pokud nemá před sebou zeď, jinak se otočí doprava), pokud souřadnice souhlasí pokračuje tak, až do své startovní pozice (x == 0 && y == 0). Jestliže souřadnice nesouhlasí vrátí se o krok zpět, otočí se doprava a testuje souřadnice znova, do doby než souhlasí.

Pozn:
Samozřejmě proč dělat věci jednoduše, když je člověk může dělat složitě :D .

(bludiště viz. obr. výše) - odečítání souřadnic z polí není nutné (zbytečně komplikované), stačí se otočit o 180° a jít dle pravidla levé ruky.

 
Nahoru Odpovědět
16.10.2015 18:06
Avatar
Hit
Člen
Avatar
Odpovídá na Lulík
Hit:16.10.2015 19:40

Hezký ;-)

Nahoru Odpovědět
16.10.2015 19:40
Life's not about how hard you can hit, it's about how hard you can GET hit and keep moving forward.
Avatar
Matěj Smilný:17.10.2015 0:34

Jde to řešit i jinak než zápisem do polí? Moc jsem ten souřadnicový systém nepochopil. :-(

 
Nahoru Odpovědět
17.10.2015 0:34
Avatar
Lulík
Člen
Avatar
Odpovídá na Matěj Smilný
Lulík:18.10.2015 11:01

Základem je souřadnicový systém, který ti do proměnných x a y zapíše aktuální souřadnice a proměnou, do které bude počítat kroky. Poté do polí při cestě tam, bude zapisovat souřadnice od první do konečné (ke každému kroku), tedy vytvoří si trasu (každý krok, který udělal má souřadnice x a y). Když dojde do cíle (určitá souřadnice, značka nebo cokoliv jiného) testuje souřadnice okolo sebe (do kříže) jeden krok v před (už nepočítá kroky!). To znamená- udělá krok vpřed pokud souřadnice z polí nesouhlasí udělá krok zpět, otočí se doprava (může i doleva) udělá opět krok vpřed, pokud souřadnice nesouhlasí udělá krok zpět a otočí se, tak to dělá dokud souřadnice nesouhlasí, pokud souhlasí odečte od kroků 1. A tak to dělá dokud nedojde zpět na svou startovní pozici tedy na souřadnice x a y.

Souřadnicový systém:

Vytvoříš si proměnné x a y (přestav si to jako osu x a y). Karel je nějakým způsobem orientován buď na +y, +x, -y nebo -x, dle toho musíš vytvořit metodu, která ti změní orientaci (proměnná např.), pokud se Karel otočí. Když Karel udělá krok v před přičte se +1 nebo -1 do jedné ze souřadnic x nebo y, podle orientace.

 
Nahoru Odpovědět
18.10.2015 11:01
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.