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.
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
sice netuším jak na to ale možná ti pomůže něco z tohodle: http://www.itnetwork.cz/…tmy/bludiste
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.
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ě .
(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.
Jde to řešit i jinak než zápisem do polí? Moc jsem ten souřadnicový systém nepochopil.
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.
Zobrazeno 7 zpráv z 7.