Git Product home page Git Product logo

j1-lekce04's Introduction

Kočka a myš

Pravidla

  • Kočka i myš se mohou pohybovat jen vodorovně a svisle.
  • Myš se snaží sníst jitrnici a sýr.
  • Kočka se snaží chytit myš.
  • Kočka ani myš nemohou projít skrze strom.
  • Myš se ovládá pomocí šipek, kočka pomocí kláves A, S, D, W.

Cíl

Pokud myš sní jitrnici i sýr, vyhrála myš. Pokud dřív kočka chytí myš, vyhrála kočka.

Cvičení

Naprogramujte chování kočky tak, aby chytila myš.

U myši budete potřebovat znát její aktuální polohu – tu získáte pomocí metod getX() a getY().

U kočky budete potřebovat znát její aktuální polohu (stejně jako u myši), dále metody turnLeft(), turnRight(), moveForward(). Metoda moveForward() má dvě varianty – můžeš zadat, jak daleko má kočka jít, nebo (bez parametru) s eposune jen o kousek. Zda se kočka může posunout dopředu zjistíte voláním metody isPossibleToMoveForward(). Pro zjištění směru, kterým se kočka dívá, použijete metodu getOrientation(), například následujícím způsobem:

if (cat.getOrientation() == PlayerOrientation.UP) {
    //kočka se dívá nahoru
}

Nepodvádějte a ve vašem kódu nemanipulujte s myší, tu nechte ovládat jenom uživatelem 😀

Nápověda

Vytvoř metodu, která zjistí souřadnice myši a pomocí metod turnLeft(), turnRight() a moveForward(int) naviguje kočku na tyto souřadnice. Uvědom si, že dráha kočky bude stejná, ať kočka půjde nejprve celou dobu jedním směrem (třeba horizontálně) a pak druhým směrem (třeba vertikálně), nebo pokud půjde „po schodech“. Otočení kočce ale chvilinku trvá – proto je lepší, když půjde rovně tak dlouho, jak potřebuje, a teprve pak se otočí.

Předchozí kroky v cyklu opakuj tak dlouho, dokud je myš živá (zjistíš voláním metody isAlive()).

Předchozí kód se dá vylepšit tak, že kočka nepoběží v jednom cyklu tam, kde viděla myš na začátku, ale tam, kde je myš zrovna teď.

💡 Obvykle se nevyplatí dělat algoritmus moc složitý. Klidně kód udělej tak, že kočka vyrazí nejprve horizontálně směrem, kde je myš, a když se dostane do stejného sloupce, bude pokračovat vertikálně.

Vylepšení

V dosavadním kódu se nebere v úvahu přítomnost stromů. Pokud kočka narazí na strom, zasekne se a pokračovat bude teprve tehdy, až mezi ní a myší nebude strom. Myš se tedy může za strmy schovávat. Můžeš tedy kód upravit tak, že když kočka narazí na strom, bude se mu snažit vyhnout. Opět není potřeba vymýšlet žádný složitý algoritmus – úplně bude stačit, když se kočka otočí a kousek popojde.

j1-lekce04's People

Contributors

filipjirsak avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.