View on GitHub

_pxt-time-contest

A MakeCode project

TimeContest – Zadání samostatného cvičení

Předmět: Algoritmizace (Static TypeScript, Micro:bit, MakeCode)
Ročník: 1. ročník
Typ: Samostatné cvičení – funkční aplikace
Míra použití AI: Nízká (pouze pro inspiraci a hledání funkcí (např. zaokrouhlení čísla), ne pro generování kódu!)


Téma a herní mechanika

Naprogramuj solitér hru TimeContest, ve které hráč odhaduje délku časového intervalu.

Při startu hry Micro:bit “přehraje” hráči určitý časový úsek: zazní tón, uplyne náhodný čas (5–15 sekund), zazní druhý tón. Hráč tento interval nevidí jako číslo – pouze ho prožije poslechem. Poté musí sám odhadnout, kdy stejný úsek uplynul, a stisknout tlačítko ve správnou chvíli.


Stavy aplikace

Aplikace se nachází vždy v jednom ze tří stavů:

Stav Popis
Passive Výchozí stav. Hráč čeká, může zobrazit skóre.
Started Probíhá přehrání intervalu (přesýpací hodiny).
Running Hráč odhaduje interval (otazník, měří se čas).

Průběh hry

Spuštění (Passive → Started)

Odhadování (Started → Running)

Vyhodnocení (Running → Passive)

Hráč stiskne tlačítko. (Za relevantní se považuje moment stisku, ne uvolnění tlačítka!) Aplikace porovná změřený čas s cílovým intervalem:

Výhra (ikona 😊 + melodie úspěchu):

Prohra (ikona 😢 + melodie selhání):

Stav se vrátí na Passive.


Bodování

Zobrazení skóre


MakeCode – užitečné části API

Náhodné celé číslo

const interval = randint(5, 15)

Přehrání tónu na pozadí (neblokující)

control.runInBackground(() => music.playTone(440, 200)) //440 Hz, 200 ms

Tón se přehraje asynchronně – program pokračuje dál bez čekání.
Pro první a druhý tón použij různé frekvence, aby byly rozlišitelné.

Měření časového úseku

let startTime = control.millis()   // uložení aktuálního času (ms)
// ... nějaký kód ...
let elapsed = control.millis() - startTime  // uplynulý čas v ms

control.millis() vrací čas od spuštění zařízení v milisekundách.

Ikony a displej

basic.showIcon(IconNames.Pitchfork)   // příjem signálu
basic.showIcon(IconNames.Happy)       // smějící se obličej
basic.showIcon(IconNames.Sad)         // smutný obličej
basic.showString("?")                 // otazník
basic.showNumber(score)               // zobrazení čísla

Čekání po dobu intervalu (blokující)

basic.pause(interval * 1000)   // pauza v ms

Tipy a náročnější části

Doporučený postup

  1. Navrhni stavový automat (tři stavy) a ujasni si, co se děje v každém stavu.
  2. Implementuj přehrání intervalu (tóny + pauza).
  3. Implementuj měření hráčova času a vyhodnocení výhry/prohry.
  4. Přidej výpočet bodů.
  5. Propoj vše dohromady přes obslužné rutiny tlačítek.

Na co si dát pozor

Open this page at https://pslib-cz.github.io/_pxt-time-contest/

Edit this project

To edit this repository in MakeCode.

Metadata (used for search, rendering)