Třídy a dědičnost  21. prosince 2022

Materiály

Nejste účastníkem kurzu
Pro zápis do kurzu se nejprve přihlašte a následně použijte tlačítko v přehledu kurzu.

Domácí projekty

Několik úkolů na třídy a dědičnost.

0.

Vytvoř třidu Ctverec s jedním atributem strana a metodami obvod(), obsah() a rozdil_obsahu(jiny_ctverec), která vrátí rozdíl obsahů dvou čtverců – zadaného a toho jehož metodu voláme.

1.

Vytvoř třídu 'Kruh' s atributem 'polomer' a stejnými metodami 'obvod()' a 'obsah()' jako měla minule třída 'Ctverec'.

2.

Vytvoř třídu 'Obdelnik' s atributy pro délky stran a opět stejnými metodami 'obvod()' a 'obsah()' jako měla minule třída 'Ctverec'.

3.

Zkus použít dědičnost tak, aby třídy 'Ctverec', 'Kruh' i 'Obdelnik' mohly používat společnou metodu 'rozdil_obsahu(jiny_objekt)' a aby tato metoda fungovala i mezi objekty různých tříd.

Takže bude například možné zjistit rozdíl obsahu čtverce a kruhu

V další části si vyzkoušíme naprogramovat Šachy.

Stáhni si archiv s hrou. Aktivuj si virtuální prostředí. Nainstaluj knihovnu pyglet pomocí příkazu:

$ python -m pip install pyglet

a spusť python ui.py.

Doufám, že uvidíš šachovnici. Figurkami se dá hýbat tažením myší, ale není hotová kontrola pravidel.

Následující úkoly kontrolu pravidel doplňují. Můžeš je dělat (skoro) v jakémkoli pořadí, ale ty dřívější jsou většinou jednodušší.

Pro jednoduchost neřeš šach, mat ani pat.

Toto jsou z velké části úkoly na orientaci v cizím kódu. Nezapomeň, že nemusíš úplně rozumět předpřipraveným funkcím/třídám/metodám, dokud je nechceš měnit (nebo se jimi inspirovat). Čti ale dokumentační řetězce, které popisují, co která věc dělá.

Pravidla šachu jsou k dispozici např. na Wikipedii.

4.

♞ Doplň třídu pro koně s příslušnými metodami over_tah a __init__. Použij ji v Sachovnice.__init__.

Odevzdej novou třídu.

5.

♚ Doplň třídu pro krále s příslušnými metodami over_tah a __init__. Použij ji v Sachovnice.__init__.

Rošádu zatím neřeš.

Odevzdej novou třídu.

6.

♝ Doplň třídu pro střelce s příslušnými metodami over_tah a __init__. Použij ji v Sachovnice.__init__.

Odevzdej novou třídu.

7.

♛ Doplň třídu pro dámu s příslušnými metodami over_tah a __init__. Použij ji v Sachovnice.__init__.

Odevzdej novou třídu.

8.

Změň třídu Sachovnice tak, aby se hráči museli ve hře střídat. Začíná bílý.

(Nápověda: bude potřeba nový atribut hrac_na_tahu.)

Odevzdej změněnou třídu Sachovnice.

9.

♟ Doplň třídu pro pěšce s příslušnými metodami over_tah, tahni a __init__. Použij ji v Sachovnice.__init__.

Pozor na to, že:

  • Pěšec se může pohybovat o jedno pole dopředu, pokud nebere figuru.
  • Pěšec bere diagonálně (o jedno pole)
  • Pěšec v základní pozici se může pohnout o dvě pole dopředu (pokud nebere figuru).
  • Pěšec, který dorazí na konec šachovnice, se povýší na dámu. (Šachy umožňují i povýšení na koně, podle výběru hráče – ale to zatím neřeš).

Odevzdej změněnou třídu.

10.

Umožni rošádu. Tu hráč zadá tak, že krále posune na věž.

Odevzdej novou třídu.