Zkritizujte mou Karlo-tvorbu prosím :) Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
jirislav
Level 1
Level 1
Příspěvky: 83
Registrován: květen 11
Pohlaví: Muž
Stav:
Offline

Zkritizujte mou Karlo-tvorbu prosím :)

Příspěvekod jirislav » 15 kvě 2011 16:14

Tvořil jsem ( :idea: ) schopnosti robota Karla, konkrétně aby uměl postavět domeček z kteréhokoliv místa a aby potom z kteréhokoliv místa dokázal domeček přestavět v panelák. A vždy na konci stavění se vrátil do vchodu domečku/paneláku čelem ke mě.

Stavební plocha v kódu:

Kód: Vybrat vše

Karel1.0%0AM%0A3%200%0A3%0A4%209%0A..........%0A..........%0A..........%0A..........%0A..........%0A..........%0A..........%0A..........%0A..........%0A..........%0AKONEC


Tady je kód, kterým naučíte karla stavět :smile: :smile: :

Kód: Vybrat vše

Karel1.2%0AP%0A32%0AL%0910%2C1%0AS%093%20-5%2C6%2C13%2C1%2C1%2C1%0AJ%093%20-7%2C6%2C13%2C1%2C1%2C1%0APOSTAV%094%208%2C11%2C1%2C9%2C1%0AV%093%20-4%2C6%2C13%2C1%2C1%2C1%0AZ%093%20-6%2C6%2C13%2C1%2C1%2C1%0ALPATRO%0914%2C16%2C17%2C1%0APPATRO%0914%2C16%2C18%2C1%0APOSTAV-MI-DOME%u010CEK%0926%2C24%2C19%2C22%2C20%2C23%2C19%2C22%2C20%2C23%2C19%2C22%2C20%2C23%2C25%2C26%2C1%0AOKNA%094%203%2C16%2C9%2C1%2C1%0AZE%u010E%094%206%2C16%2C1%2C1%0ASPODEK%0917%2C4%203%2C9%2C1%2C18%2C4%203%2C16%2C1%2C9%2C4%202%2C16%2C1%2C1%0AST%u0158ECHA%0914%2C16%2C17%2C9%2C16%2C14%2C9%2C16%2C17%2C9%2C16%2C15%2C9%2C16%2C17%2C9%2C16%2C1%0ADOM%u016E%0915%2C3%20-1%2C9%2C1%2C18%2C3%20-3%2C2%201%2C17%2C3%20-3%2C9%2C1%2C0%2C9%2C1%2C1%2C15%2C1%0A4PATRO-Z%C1PAD%0914%2C31%2C18%2C31%2C15%2C9%2C9%2C17%2C9%2C1%0AZBO%u0158-ZLEVA%094%206%2C4%208%2C2%202%2C12%2C1%2C1%2C9%2C1%2C4%208%2C2%202%2C12%2C1%2C1%2C18%2C1%0AP%u0158ESTAV%u011AJ-DOME%u010CEK-V-PANEL%C1K%0930%2C28%2C22%2C19%2C28%2C23%2C19%2C28%2C22%2C16%2C27%2C28%2C22%2C19%2C28%2C22%2C19%2C28%2C23%2C16%2C26%2C1%0A2PATRO-Z%C1PAD%0915%2C31%2C18%2C31%2C17%2C9%2C14%2C9%2C9%2C17%2C1%0AKE-ZDI%093%20-1%2C9%2C1%2C1%0APOSTAV-MI-PANEL%C1K%0921%2C29%2C1%0AKONEC


((: A ZDE JE ODKAZ NA KARLA :))



No a teď něco aby jste mě dokázali zhodnotit:


Po pravdě mi to trvalo asi 3-5 hodin, nestopoval jsem to.
Snažil jsem se to zjednodušit co nejvíce jak to šlo, abych třeba nemusel přemýšlet, kdy ho otočit doprava a kdy doleva a kdy mu dát čelem vzad, zavedl jsem pod písmeno "S" otočení k severu, pod "J" k jihu, "V" k východu a "Z" hádejte kam :lookround: . Potom jsem mu jen předal svůj patent, jak bych to stavěl já :bigups: . Kdybyste našli něco, co by se dalo vytknout a mohlo by to být lepší nebo přehlednější, tak mi prosím odpovězte na téma. Dík.

P.S. takové ty otázky typu co ti to dává a proč to děláš raději směřujte do pošty :evil: , chtěl bych hodnocení (upřímné).
OS:Ubuntu 11.04
MP3:Helax 93,7


<TeXaN> jakej ma maximalni dosah BT? v idealnich podminkach
<TeXaN> resp projde mi skrz zed a jeste 15m na zahradu?
<Unimatrix325> pokud BT znamena bitevni tank, pak ano

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7399
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Zkritizujte mou Karlo-tvorbu prosím :)

Příspěvekod faraon » 15 kvě 2011 22:18

Na začátečníka ten výsledek nevypadá nejhůř, jen bych radil nespoléhat na polohu domova ale spíš na nějakou pevnou pozici ve městě, třeba levý dolní roh. Pak Karla do výchozí pozice dostaneš velice jednoduše:

Kód: Vybrat vše

NA-START
  DOKUD NENÍ ZÁPAD
    VLEVO-VBOK
  KONEC
  OPAKUJ 2-KRÁT
    KE-ZDI
    VLEVO-VBOK
  KONEC
KONEC


Šlo by to i opačně, doběhnout nejdřív k jižní zdi a pak teprve k západní, ale na konci by se Karel musel otočit čelem-vzad a uprostřed vpravo-vbok, takže by se zbytečně vrtěl a navíc by nešlo použít tak jednoduchý cyklus.
Rozebíráš všechny činnosti moc dopodrobna, pro hlavní program stačí rozdělit úlohu jen na hlavní bloky:

Kód: Vybrat vše

DOMEČEK
  NA-START
  PŘÍZEMÍ
  PATRO
  STŘECHA
  NA-START
  DO-DVEŘÍ
KONEC


Stejně tak je dobré najít místa která se opakují, a vytvořit pro ně vlastní příkaz, kterými je jako celek vyvoláš. Když pak budeš potřebovat něco změnit, najdeš to na jediném místě a změní ti to výsledek na mnoha místech programu zároveň ;-)
Přízemí se skládá ze dvou pokojů mezi kterými jsou dveře, takže si ho rozdělíme na další bloky:

Kód: Vybrat vše

PŘÍZEMÍ
  POKOJ
  DVEŘE
  POKOJ
  ŠPLHEJ
KONEC


Poslední příkaz ŠPLHEJ přemístí Karla o patro výš, do výchozí pozice pro další patro.
Pokoj se opět skládá z několika bloků:

Kód: Vybrat vše

POKOJ
  ZEĎ
  OKNO
  ZEĎ
KONEC


Stavění okna je jednodušší, tak s ním začneme. Nejdřív Karel udělá krok, a pak položí 8 značek, to jsi trefil perfektně :P. Krokem začíná každý stavěcí příkaz, takže se tím vytvoří i ta mezera u levého okraje, aby dům nestál přímo u zdi:

Kód: Vybrat vše

OKNO
  KROK
  BUDUJ
KONEC

Zeď je trochu složitější, tam musí být dvě kostky nad sebou, takže Karel při stavění oběhne jakousi smyčku. Ta se dá provést jako opakování dvou zrcadlových C:

Kód: Vybrat vše

ZEĎ
  KROK
  OPAKUJ 2-KRÁT
    VLEVO-VBOK
    BUDUJ
    KROK
    VLEVO-VBOK
  KONEC
KONEC


Úplně nejjednodušší jsou dveře, protože v nich leží jen práh (ten se nám ještě může hodit):

Kód: Vybrat vše

DVEŘE
  KROK
  POLOŽ
KONEC


Přízemí máme postavené, Karel stojí o patro výš, a čeká co ho naučíme dál. Na patře jsou opět dva pokoje a mezi nimi okno, asi na schodiště 8) Všechno co potřebujeme už máme hotové z přízemí, tak to jen použijeme v dalším příkazu:

Kód: Vybrat vše

PATRO
  POKOJ
  OKNO
  POKOJ
  ŠPLHEJ
KONEC


A to bylo celé patro, můžeme se pustit do střechy. Ta se skládá z rovné půdy a dvou šikmých boků, napadají mě dvě možnosti. Buď bude půda přes celou šířku domu, a boky ze dvou kostek spojených hřebenem, nebo se půda o jedno pole zkrátí a tříkostkové boky budou navazovat přímo na sebe. Druhá možnost vypadá že bude kratší:

Kód: Vybrat vše

STŘECHA
  KROK
  PŮDA
  VLEVO-VBOK
  OPAKUJ 2-KRÁT
    BOK
  KONEC
KONEC


Základ je tedy rovná deska ze šesti polí. Ta je posunutá doprava, aby se pak boky mohly snadněji opakovat a nemuseli jsme s Karlem šoupat sem a tam a různě ho natáčet:

Kód: Vybrat vše

PŮDA
  OPAKUJ 6-KRÁT
    KROK
    BUDUJ
  KONEC
KONEC


Samotný bok střechy se skládá ze tří kostek položených diagonálně, je dobré myslet na to aby Karel po poslední kostce byl nastavený do správného směru pro stavění dalšího boku. Kam bude mířit na konci už není důležité.

Kód: Vybrat vše

BOK
  OPAKUJ 3-KRÁT
    KROK
    VLEVO-VBOK
    KROK
    BUDUJ
    VPRAVO-VBOK
  KONEC
  VLEVO-VBOK
KONEC


A tím máme celý dům postavený, takže zbývá jen dostat Karla do dveří. Ty se vyznačují tím že na nich leží jen jedna značka, ale zaručeně budou v přízemí. To je jediná jistá věc, protože se nedá spoléhat že je nějaký šílený architekt v budoucnu nepřesune třeba do rohu. Takže Karla necháme doběhnout na startovní pozici a odtamtud začme prohledávat jedno pole po druhém, dokud nenajde takové, na kterém je jen jedna značka - a vida jak je takový práh užitečný:

Kód: Vybrat vše

DO-DVEŘÍ
  KROK
  KDYŽ JE ZNAČKA
    ZVEDNI
    KDYŽ JE ZNAČKA
      POLOŽ
      DO-DVEŘÍ
    KONEC, JINAK
      POLOŽ
      VPRAVO-VBOK
    KONEC
  KONEC, JINAK
    DO-DVEŘÍ
  KONEC
KONEC


Tady konečně nastal čas pro použití rekurze. A samozřejmě je dobré ošetřit i stav že v některém poli není žádná značka, opět pro případ nějaké velké změny v projektu, třeba kdyby dům měl garáž a podobně :roll: Bylo by dobré také hlídat jestli Karel neběží proti zdi, ale budeme prozatím doufat že nikoho nenapadne postavit dům bez dveří!

A teď nastala chvíle na druhou část úkolu, postavit panelák. Tu jsi vyřešil úplně jinak než jsem chtěl, přestavba domku nebyla v plánu, mělo se stavět na zelené louce. Ale uznávám že ti vyšel moc pěkný mrakodrap :smile: Tak pro srovnání jak jsem na to šel já:

Kód: Vybrat vše

PANELÁK
  NA-START
  PŘÍZEMÍ
  OPAKUJ 3-KRÁT
    PATRO
  KONEC
  PŮDA
  OKNO
  NA-START
  DO-DVEŘÍ
KONEC


Provedení je jasné, nejdřív přízemí, pak se na něj bouchnou tři patra a nakonec rovná střecha. Pro tu bysme si mohli vytvořit nový příkaz, a nebo použít to co máme, tedy půdu, a za ní doplnit jednu kostku. To už také máme naprogramované, sice pro účely vytvoření okna, ale účel to splní bez vedlejších efektů :idea:
A jako bonus si ještě můžeme udělat program na stavbu činžáku jaký jsi postavil ty, který se od toho původního domečku bude lišit jen větším počtem pater:

Kód: Vybrat vše

ČINŽÁK
  NA-START
  PŘÍZEMÍ
  PATRO
  PATRO
  STŘECHA
  NA-START
  DO-DVEŘÍ
KONEC


Ze existujících stavebních bloků se dají vytvářet různé ptákoviny, třeba kosočtverec složený z boků střechy:

Kód: Vybrat vše

KOSOČTVEREC
  OPAKUJ 4-KRÁT
    BOK
  KONEC
KONEC


Je dobré si před jeho spuštěním nejdřív Karla umístit do takového místa, aby nemohl narazit do stěny :evil:
A tady je celý kód včetně několika triviálních příkazů, které jsem ani nevypisoval:

Kód: Vybrat vše

Karel1.0%0AP%0A29%0ADOME%u010CEK%0912%2C14%2C15%2C16%2C12%2C17%2C1%0APANEL%C1K%0912%2C14%2C4%203%2C15%2C1%2C25%2C20%2C12%2C17%2C1%0ANA-START%093%20-6%2C7%2C1%2C4%202%2C13%2C7%2C1%2C1%0AKE-ZDI%093%20-1%2C6%2C1%2C1%0AP%u0158%CDZEM%CD%0918%2C19%2C18%2C21%2C1%0APATRO%0918%2C20%2C18%2C21%2C1%0AST%u0158ECHA%096%2C25%2C7%2C4%202%2C26%2C1%2C1%0ADO-DVE%u0158%CD%096%2C2%202%2C9%2C2%202%2C8%2C17%2C0%2C8%2C27%2C1%2C0%2C17%2C1%2C1%0APOKOJ%0922%2C20%2C22%2C1%0ADVE%u0158E%096%2C8%2C1%0AOKNO%096%2C23%2C1%0A%u0160PLHEJ%093%20-5%2C7%2C1%2C6%2C6%2C7%2C13%2C24%2C1%0AZE%u010E%096%2C4%202%2C7%2C23%2C6%2C7%2C1%2C1%0ABUDUJ%094%208%2C8%2C1%2C1%0A%u010CELEM-VZAD%097%2C7%2C1%0AP%u016EDA%094%206%2C6%2C23%2C1%2C1%0ABOK%094%203%2C6%2C7%2C6%2C23%2C27%2C1%2C7%2C1%0AVPRAVO-VBOK%094%203%2C7%2C1%2C1%0A%u010CIN%u017D%C1K%0912%2C14%2C15%2C15%2C16%2C12%2C17%2C1%0AKOSO%u010CTVEREC%094%204%2C26%2C1%2C1%0AKONEC
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
jirislav
Level 1
Level 1
Příspěvky: 83
Registrován: květen 11
Pohlaví: Muž
Stav:
Offline

Re: Zkritizujte mou Karlo-tvorbu prosím :)  Vyřešeno

Příspěvekod jirislav » 15 kvě 2011 22:52

Smekám klobouk :bigups: :P

Třeba taková zeď

Kód: Vybrat vše

ZEĎ
  KROK
  OPAKUJ 2-KRÁT
    VLEVO-VBOK
    BUDUJ
    KROK
    VLEVO-VBOK
  KONEC
KONEC
jak jsi ji vymyslel ty, by mě nenapadla, já bych to stavěl horizontálně :blush:

Ani práh tam dát by mě nenapadlo :D .. to je fakt úplná dokonalost, nevím co bych na to řekl .. :lookround:

BTW dík za lekci Karlového vzdělávání .. z robota co umí kráčet a otáčet se vlevo a pamatovat si kde byl, je stavitel :D

nebo taková střecha

Kód: Vybrat vše

STŘECHA
  KROK
  PŮDA
  VLEVO-VBOK
  OPAKUJ 2-KRÁT
    BOK
  KONEC
KONEC

je taky úplně geniální :inlove: .. já bych při tomhle zápisu té střechy měl strach z toho boku :D .. jak ho udělat atd.. proto si to všechno musím conejvíce ulehčit ikdyž budu psát neskutečný román :D .. ale je fakt že je lepší to stavět podle jakéhosi řádu, co se hodně při stavbě opakuje :)

faraon píše:Je dobré si před jeho spuštěním nejdřív Karla umístit do takového místa, aby nemohl narazit do stěny :evil:


:D :D teen smajlík tam sedne :P ..a pěkný kosočtverec máme :)


..ještě jednou dík za zhodnocení, muselo ti to vzít horu času
OS:Ubuntu 11.04
MP3:Helax 93,7


<TeXaN> jakej ma maximalni dosah BT? v idealnich podminkach
<TeXaN> resp projde mi skrz zed a jeste 15m na zahradu?
<Unimatrix325> pokud BT znamena bitevni tank, pak ano


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Prosím o kontrolu sestavy
    od user158 » 11 led 2025 15:07 » v Rady s výběrem hw a sestavením PC
    2
    1401
    od Alferi Zobrazit poslední příspěvek
    11 led 2025 17:38
  • Prosím o radu jak předělat PC
    od ruzi.jiri » 22 srp 2024 07:54 » v Rady s výběrem hw a sestavením PC
    8
    2633
    od Zivan Zobrazit poslední příspěvek
    23 srp 2024 12:10
  • Prosím o radu se sestavením pc
    od Patrik54321 » 16 črc 2025 20:47 » v Rady s výběrem hw a sestavením PC
    5
    1904
    od Patrik54321 Zobrazit poslední příspěvek
    17 črc 2025 16:42
  • Prosím o posouzení sestavy
    od CROS » 09 bře 2025 13:36 » v Rady s výběrem hw a sestavením PC
    6
    8204
    od Alferi Zobrazit poslední příspěvek
    10 bře 2025 18:05
  • PC nenaběhl - prosím o rady
    od michal84 » 05 dub 2025 23:00 » v Problémy s hardwarem
    5
    2744
    od michal84 Zobrazit poslední příspěvek
    07 dub 2025 10:11

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů