Napíš programJednoduchá20 XPÚloha 8/8

Farebné lúče

Zadanie

Plátno má rozmer 400 × 400. Po každom kliknutí nakresli čiaru (lúč) zo stredu plátna (200, 200) do miesta kliknutia. Farba lúča závisí od štvrtiny, do ktorej si klikol: vľavo hore red, vpravo hore blue, vľavo dole green a vpravo dole orange.

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
    
    kliky = [(100, 100, "red"), (300, 100, "blue"), (100, 300, "green"), (300, 300, "orange")]
    for x, y, farba in kliky:
        okno.click(x, y)
    ciary = okno.items("line")
    okno.check("styri kliky, styri luce", len(ciary) == 4, f"ciar: {len(ciary)}")
    for ciara, (x, y, farba) in zip(ciary, kliky):
        konce = {(round(ciara.coords[0]), round(ciara.coords[1])), (round(ciara.coords[-2]), round(ciara.coords[-1]))}
        okno.check(f"luc do ({x}, {y})", konce == {(200, 200), (x, y)} and okno.rgb(ciara.fill) == okno.rgb(farba),
                   f"konce {sorted(konce)}, farba {ciara.fill}")

    Očakávaný výstup

    styri kliky, styri luce: OK
    luc do (100, 100): OK
    luc do (300, 100): OK
    luc do (100, 300): OK
    luc do (300, 300): OK

Po odoslaní riešenie overí ešte 1 skrytý test: kliky blízko stredu.

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.