Trs trávy
Zadanie
Vytvor program s plátnom 700 × 500. Kliknutím ľavým tlačidlom myši nakreslí na mieste kliknutia trs trávy: aspoň 5 zelených čiar (stebiel), ktoré začínajú v bode kliknutia a končia najviac 30 bodov vľavo alebo vpravo a najviac 50 bodov nad ním. Pravým tlačidlom sa celý obrázok vymaže.
Stebla môžu mať náhodný smer aj dĺžku.
Program beží v simulácii tkinteru priamo v prehliadači - po spustení uvidíš okno a môžeš doň klikať. Testy klikajú a kontrolujú, čo sa na plátne nakreslilo.
Príklady
Volanie
from tkinter import _mente as okno def v_poriadku(ciara, x, y): zaciatok = (round(ciara.coords[0]), round(ciara.coords[1])) koniec = (round(ciara.coords[-2]), round(ciara.coords[-1])) if koniec == (x, y): zaciatok, koniec = koniec, zaciatok return zaciatok == (x, y) and abs(koniec[0] - x) <= 30 and 0 <= y - koniec[1] <= 50 okno.check("platno 700x500", okno.size() == (700, 500), f"rozmer je {okno.size()}") okno.click(350, 250) steble = okno.items("line") okno.check("klik nakreslil trs", len(steble) >= 5, f"pocet ciar: {len(steble)}") okno.check("steble su v povolenom rozsahu", steble and all(v_poriadku(c, 350, 250) for c in steble)) okno.check("trava je zelena", steble and all(okno.greenish(c.fill) for c in steble))Očakávaný výstup
platno 700x500: OK klik nakreslil trs: OK steble su v povolenom rozsahu: OK trava je zelena: OK
Volanie
from tkinter import _mente as okno okno.click(100, 400) okno.click(600, 100) okno.check("dva trsy", len(okno.items("line")) >= 10) okno.click(300, 300, button=3) okno.check("prave tlacidlo zmaze obrazok", len(okno.items()) == 0, f"na platne ostalo {len(okno.items())}")Očakávaný výstup
dva trsy: OK prave tlacidlo zmaze obrazok: OK
Po odoslaní riešenie overí ešte 1 skrytý test: klik na inom mieste.
Python sa spustí pri prvom spustení kódu.
Ctrl+Enter spustí program. Tab odsadí riadok. Esc a potom Tab opustí editor.
Vstup (stdin)
Každý riadok = jedno volanie input().
Výstup
Nápovedy
Najprv to skús sám. Každá nápoveda prezradí o niečo viac - a trochu zníži odmenu.
Bez prihlásenia sú nápovedy zadarmo - ale ani XP sa neudeľujú.
Riešenie
Riešenie sa odomkne po poslednej nápovede.