← Přehled všech hodin

Podmínky a pravidla hry

Cíl hodiny: Děti umí napsat pravidlo hry, které program vyhodnotí sám, a chápou rozdíl mezi = a ==.
Jak stránku používat: vpravo nahoře je tlačítko Prezentace — schová všechno kromě jednoho bloku a přepíná se šipkami. U ukázek a cvičení je kód vlevo editovatelný: uprav ho a klikni na Spustit (nebo Ctrl+Enter), výsledek se objeví vpravo. Běží to přímo v prohlížeči, bez instalace.

1. Část pro učitele

Blok 1Podmínka netechnicky1. Část pro učitele

Podmínka je pravidlo: když něco platí, tak udělej tohle, jinak něco jiného. Přesně takhle přemýšlíme i my. Když prší, vezmu deštník. Jinak jdu bez něj.

if prsi:
    vezmi_destnik()
else:
    jdi_bez_nej()

Zkus vymyslet tři pravidla ze svého života a zapsat je česky. Až pak je převeď do Pythonu. Vazba na vlastní zkušenost je tady důležitější než syntaxe.

Blok 2Nejdůležitější rozdíl hodiny: `=` versus `==`1. Část pro učitele

Tohle je nejčastější chyba začátečníků, proto je důležité ji odhalit hned.

Zápis Význam Kdy se používá
= ulož hodnotu zivoty = 100
== ptám se, jestli je to stejné if zivoty == 100:

Jedno rovnítko je příkaz: „ulož". Dvě rovnítka jsou otázka: „je to stejné?" Když se ptáš, musíš to napsat dvakrát.

Podívej se, co se stane při záměně:

if zivoty = 100:     # SyntaxError

Python to naštěstí odmítne rovnou. V jiných jazycích by to prošlo a způsobilo záhadnou chybu.

Blok 3Porovnávací operátory1. Část pro učitele
zivoty == 100    # je rovno
zivoty != 100    # není rovno
zivoty > 50      # je větší
zivoty < 50      # je menší
zivoty >= 50     # je větší nebo rovno
zivoty <= 50     # je menší nebo rovno

Výsledek porovnání je hodnota typu bool:

Porovnání není nic magického. Je to výpočet, jehož výsledek je True nebo False. A if je jen příkaz „když je tady True, pokračuj dovnitř".

Blok 4Odsazení není kosmetika1. Část pro učitele

Toto Python odlišuje od většiny jazyků a je důležité to pochopit hned.

Odsazení určuje, co do podmínky patří. V jiných jazycích se používají složené závorky, Python používá mezery. Standardem jsou 4 mezery. VS Code vám je udělá klávesou Tab.

Časté chyby, které z toho plynou:

  • IndentationError: expected an indented block — za if následuje neodsazený řádek
  • Kód se provede vždy, i když neměl — programátor ho zapomněl odsadit
Blok 5`elif` a proč není totéž co druhé `if`1. Část pro učitele

Toto je koncepčně nejtěžší část hodiny. Podívej se na oba případy vedle sebe:

elif znamená „a když to první neplatilo, zkus tohle". Jakmile jedna větev vyjde, ostatní se ani netestují.

Když napíšeš dvě samostatná if, Python vyhodnotí obě a může vypsat obě hlášky.

Kdy použít co: elif pro vzájemně se vylučující stavy (jedna z variant). Samostatná if pro nezávislé kontroly (má klíč, má lektvar, je otrávený).

Blok 6Pořadí podmínek je zásadní1. Část pro učitele

Zkus najít problém v tomhle kódu:

Při 80 životech platí už první podmínka, takže druhá se nikdy netestuje. Podmínky musí jít od nejpřísnější k nejmírnější.

Blok 7Logické spojky and, or, not1. Část pro učitele
if ma_klic and zivoty > 0:          # obě musí platit
if ma_klic or ma_paklic:            # stačí jedna
if not ma_klic:                     # obrácení

Tabulka pravdivosti pro rychlý přehled:

A B A and B A or B
True True True True
True False False True
False True False True
False False False False

and je přísné — chce všechno. or je velkorysé — stačí mu jedna věc.

Praktický herní příklad, který pochopíš okamžitě:

Blok 8Podmínka na jednom řádku1. Část pro učitele

Pro pokročilé, můžeš zkusit až na konci:

stav = "živý" if zivoty > 0 else "mrtvý"

Čte se to zprava doleva jako věta: „stav je 'živý', pokud životy jsou nad nulou, jinak 'mrtvý'". Šetří to místo, ale nepoužívejte to na složité věci.

Blok 9Časté chyby1. Část pro učitele
Chyba Příčina Řešení
SyntaxError: invalid syntax u if x = 5 Jedno rovnítko Použít ==
IndentationError Chybí odsazení za if 4 mezery / Tab
elif se nikdy neprovede Špatné pořadí podmínek Od nejpřísnější
Vypíší se dvě hlášky najednou Použili if místo elif Změnit na elif
SyntaxError na konci řádku Chybí dvojtečka if x > 5:
Porovnání textu nefunguje Rozdíl velkých písmen .lower() na vstup

2. Ukázky pro projekci

Blok 10Ukázka 1 — Stav hrdiny podle životů2. Ukázky pro projekci
demo/demo1_stav.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Blok 11Ukázka 2 — elif versus samostatné if2. Ukázky pro projekci
demo/demo2_elif_vs_if.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Blok 12Ukázka 3 — Logické spojky u dveří2. Ukázky pro projekci
demo/demo3_dvere.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.

3. Cvičení na hodinu

Blok 13Cvičení 1 — Semafor zdraví (15 min)3. Cvičení na hodinu

Tvoje zadání:

Vytvoř ukazatel zdraví, který mění barvu i text podle počtu životů.

  1. Přidej st.slider("Životy", 0, 100, 72)
  2. Napiš if pro případ zivoty <= 0 — hrdina zemřel
  3. Přidej elif pro zivoty <= 25 — kriticky zraněný
  4. Přidej elif pro zivoty <= 60 — zraněný
  5. Přidej else — v pořádku. Ke každé větvi dej jinou barvu a jiné emoji
Úroveň Co má zvládnout
Minimum Body 1–5, čtyři různé stavy
Rozšíření Přidat st.progress() a st.metric se stavem
Výzva Barvu pozadí boxu počítat podmínkou a použít v HTML style
cviceni/cviceni1_semafor.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Pro učitele — na co si dát pozor

Očekávaný výsledek: tažením posuvníku se postupně mění hláška z zelené přes oranžovou po červenou.

Řešení 1 — jedna z možných variant
reseni/reseni1_semafor.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Blok 14Cvičení 2 — Test na vstup do jeskyně (20 min)3. Cvičení na hodinu

Tvoje zadání:

Hrdina smí do jeskyně jen za určitých podmínek. Napiš pravidla.

  1. Přidej st.checkbox("Mám pochodeň") a st.checkbox("Mám lano")
  2. Přidej st.slider("Odvaha", 0, 10, 5)
  3. Napiš podmínku, kdy hrdina může dovnitř: musí mít pochodeň a lano a odvahu nad 3
  4. Když nemůže, napiš přesně, co mu chybí — použij samostatné if pro každou věc
  5. Přidej st.balloons(), když projde
Úroveň Co má zvládnout
Minimum Body 1–3, správně použité and
Rozšíření Bod 4, konkrétní hlášky co chybí
Výzva Přidat alternativu: místo lana stačí checkbox("Umím létat") pomocí or
cviceni/cviceni2_jeskyne.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Pro učitele — na co si dát pozor

Očekávaný výsledek: program řekne buď „můžeš dovnitř", nebo přesně vyjmenuje chybějící věci.

Řešení 2 — jedna z možných variant
reseni/reseni2_jeskyne.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Blok 15Cvičení 3 — Souboj na jedno kolo (20 min)3. Cvičení na hodinu

Tvoje zadání:

Dva soupeři, jedno kolo, kdo vyhraje.

  1. Přidej slidery pro sílu hrdiny a sílu příšery
  2. Přidej slider „hod kostkou" 1 až 6 pro hrdinu
  3. Spočítej utok_hrdiny = sila_hrdiny + hod
  4. Porovnej útok se silou příšery pomocí if/elif/else: výhra, remíza, prohra
  5. Přidej podmínku, že hod 6 znamená kritický zásah a útok se zdvojnásobí
Úroveň Co má zvládnout
Minimum Body 1–4
Rozšíření Bod 5, kritický zásah
Výzva Přidat obranu příšery a spočítat, kolik životů skutečně ubylo (nikdy míň než 0)
cviceni/cviceni3_souboj.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Pro učitele — na co si dát pozor

Očekávaný výsledek: změna kteréhokoliv slideru okamžitě přepočítá výsledek souboje.

Řešení 3 — jedna z možných variant
reseni/reseni3_souboj.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Blok 16Cvičení 4 — Vyhodnocení postavy (20 min)3. Cvičení na hodinu

Tvoje zadání:

Program posoudí, jaký typ postavy hráč vytvořil.

  1. Přidej slidery na sílu, magii a obratnost (každý 1 až 20)
  2. Napiš podmínku: když je síla největší, je to Bojovník
  3. Když je magie největší, je to Kouzelník
  4. Když je obratnost největší, je to Lupič
  5. Když jsou všechny tři stejné, napiš „Vyvážený univerzál"
Úroveň Co má zvládnout
Minimum Body 1–4
Rozšíření Bod 5 s trojitým porovnáním
Výzva Přidat hodnocení „síly postavy" (slabá / průměrná / silná) podle součtu bodů
cviceni/cviceni4_typ_postavy.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Pro učitele — na co si dát pozor

Očekávaný výsledek: program pojmenuje typ postavy podle rozložení statistik.

Řešení 4 — jedna z možných variant
reseni/reseni4_typ_postavy.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Blok 17Cvičení 5 — PyQuest: první rozhodnutí (25 min)3. Cvičení na hodinu

Tvoje zadání:

Přidej do hry první skutečné rozhodnutí hráče.

  1. Přidej st.radio("Kam půjdeš?", ["Les", "Jeskyně", "Věž"])
  2. Podle volby nastav nebezpeci, odmena a popis pomocí if/elif/else
  3. Přidej st.checkbox("Vzít si lektvar"), který sníží nebezpečí o 10
  4. Vyhodnoť, jestli hrdina přežije: zivoty > nebezpeci
  5. Zobraz výsledek barevnou zprávou a přepočítej zlato po dobrodružství
Úroveň Co má zvládnout
Minimum Body 1–2, každá volba dá jiný popis
Rozšíření Body 3–4, přežití se počítá
Výzva Přidat podmínku, že do Věže se dá jít jen s klíčem a nad 50 životů
cviceni/cviceni5_pyquest_rozhodnuti.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Pro učitele — na co si dát pozor

Očekávaný výsledek: hráč si vybere cestu a hra mu řekne, jak dopadl.

Řešení 5 — jedna z možných variant
reseni/reseni5_pyquest_rozhodnuti.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.

4. Domácí úkol

Blok 18Domácí úkol na příští hodinu4. Domácí úkol

Přidej do své hry čtvrté místo, kam se dá jít, a vymysli pro něj vlastní pravidlo. Pravidlo musí používat alespoň dvě podmínky spojené pomocí and nebo or. Do komentáře napiš česky, jaké pravidlo to je.

Zobrazit ukázkové řešení domácího úkolu

Toto je jedna z možných variant, jak mohl úkol dopadnout. Tvoje řešení se může lišit a to je v pořádku.

domaci/domaci_ukol04.py
Tady se objeví výsledekKlikni na Spustit. Kód vlevo můžeš měnit a spouštět opakovaně klávesami Ctrl+Enter.
Kód vlevo jde upravovat. Tab odsazuje o čtyři mezery.
Blok 19Oficiální dokumentace4. Domácí úkol

Oficiální dokumentace se hodí ve chvíli, kdy si chceš ověřit přesný zápis podmínky, význam operátorů nebo chování logických výrazů. U Pythonu bývají nejdůležitější krátké ukázky a tabulky přímo v referenci.

Co jsme použili Oficiální dokumentace Co tam najdeš
if / elif / else The if statement přesný zápis podmínky a větvení programu
porovnávání ==, !=, <, > Comparisons porovnávací operátory a pravidla vyhodnocení
bool bool hodnoty True, False a jejich použití
and, or, not Boolean operations logické spojky a pořadí vyhodnocování
odsazení a bloky kódu Indentation proč jsou mezery součástí syntaxe Pythonu
podmínka v jednom řádku Conditional expressions zápis x if podminka else y
st.slider st.slider vstupní hodnotu, rozsah a práci s čísly
st.checkbox st.checkbox přepínač vracející True nebo False
st.success, st.warning, st.error st.success, st.warning, st.error barevné hlášky pro různé stavy hry

5. Umíme informatiku

Blok 20Navazující cvičení na Umíme informatiku5. Umíme informatiku
Cvičení Odkaz Proč se hodí
Logika a řešení problémů umimeinformatiku.cz Přímo procvičuje and/or/not
Algoritmické myšlení umimeinformatiku.cz Rozhodovací postupy
Rozhodovačka umimeinformatiku.cz Rychlé vyhodnocování podmínek
Robotanik umimeinformatiku.cz Podmíněné chování robota