NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 9 - Bojovník do arény v Pythonu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Jakub Ježek
Člen
Avatar
Jakub Ježek:12.12.2023 12:19

Hele, takovej hloupej dotaz jo... "Třídu Kostka v souboru kostka.py máme hotovou a dál se jí nebudeme zabývat, jen ji budeme používat. "
Kontroluje ty lekce někdo? Protože kód "kostky", který je tady ke stažení, je značně odlišný od toho našeho posledního z lekce 4 resp 5. Pokud teda "ukažme si příklady na kostce" v lekci 7 nemělo znamenta "změňte si kód kostky" a i tak by to bylo jiné.

Editováno 12.12.2023 12:19
 
Odpovědět
12.12.2023 12:19
Avatar
Karel Zaoral
Člen
Avatar
Odpovídá na Jakub Ježek
Karel Zaoral:12.12.2023 13:04

Ahoj, jediné, čím se kostky liší v lekci 4 a 8 je f string na konci. Průběžně to upravujeme. Kódu je prostě moc. Funkčně a logikou jsou třídy shodné.

 
Odpovědět
12.12.2023 13:04
Avatar
Jakub Ježek
Člen
Avatar
Odpovídá na Karel Zaoral
Jakub Ježek:12.12.2023 13:59

No on je to kromě toho fstringu i všechen ten kód, kde je vytvoření kostek a hod kostkami, ale čert to vem. Předpokládám, že to máme z toho smazat, a ten fstring si tam dopsat...

 
Odpovědět
12.12.2023 13:59
Avatar
Karel Zaoral
Člen
Avatar
Karel Zaoral:12.12.2023 15:02

Lekce 4

class Kostka:
    """
    Třída reprezentuje hrací kostku.
    """

    def __init__(self,pocet_sten=6):
        self._pocet_sten = pocet_sten

    def vrat_pocet_sten(self):
        """
        Vrátí počet stěn kostky.
        """
        return self._pocet_sten

    def hod(self):
        """
        Vykoná hod kostkou a vrátí číslo od 1 do
        počtu stěn.
        """
        import random as _random
        return _random.randint(1, self._pocet_sten)

    def __str__(self):
        """
        Vrací textovou reprezentaci kostky.
        """
        return str("Kostka s {0} stěnami".format(self._pocet_sten))

vs.
Lekce 8

class Kostka:
    """
    Třída reprezentuje hrací kostku.
    """

    def __init__(self,pocet_sten=6):
        self._pocet_sten = pocet_sten

    def vrat_pocet_sten(self):
        """
        Vrátí počet stěn kostky.
        """
        return self._pocet_sten

    def hod(self):
        """
        Vykoná hod kostkou a vrátí číslo od 1 do
        počtu stěn.
        """
        import random as _random
        return _random.randint(1, self._pocet_sten)

    def __str__(self):
        """
        Vrací textovou reprezentaci kostky.
        """
        return f"Kostka({self._pocet_sten})"

Liší se pouze v f stringu.

 
Odpovědět
12.12.2023 15:02
Avatar
Jakub Ježek
Člen
Avatar
Jakub Ježek:12.12.2023 18:02

Musím říct, že vynucování komentářů při ohodnocení mě fakt irituje. Jednak proto, že často píši do diskuze přímo, tak nevim proč to pak psát znovu a jednak proto že je zde (na rozdíl od diskuze) omezen počet znaků.

 
Odpovědět
12.12.2023 18:02
Avatar
Jakub Ježek
Člen
Avatar
Jakub Ježek:12.12.2023 18:04

Po delší době můžu říci, že mě lekce zase bavila. Ne že bych to dokázal sám napsat, ne že bych to všechno pochopil, ale konečně to (pro mě) bylo zajímavé. Zřejmě je to tím že jsem mládí strávil hraním DrD či DaD. Nicméně i přesto jsem nepochopil podle čeho se hp odečítají. Měl jsem za to, že půjde o prostý rozdíl mezi útokem a obranou (s kostkou samozřejmě) což očividně není. Dávám k zamyšlení, jestli by nebylo vhodné na začátu lekce bez kódu vysvětlit soubojový systém a následné počítání pak skutečně udělat co nejjednodušeji tedy zranění = (útok + kostka) - (obrana + kostka). Jinak ale za mě lekce fajn.

Editováno 12.12.2023 18:04
 
Odpovědět
12.12.2023 18:04
Avatar
Duy Hoang Do
Člen
Avatar
Duy Hoang Do:12.12.2023 21:42

Jak píše většina lidí v diskuzi, je opravdu potřeba video. Je to nesrozumitelný a pro začátečníky zbytečně komplikovaný na pochopení základů OOP. Chápu, kdyby na to byl celý semestr s přednáškami a cvičeními každý týden. Ale tady pro ten náš kurz je to prostě moc pro úplného začátečníka

 
Odpovědět
12.12.2023 21:42
Avatar
Karel Zaoral
Člen
Avatar
Odpovídá na Jakub Ježek
Karel Zaoral:14.12.2023 9:08

Ahoj,
útok je: uder = self._utok + self._kostka.hod()
tedy výchozí hodnota "atributu útočného čísla" + hod kostkou.
obrana je: self._obrana + self._kostka.hod()
tedy výchozí hodnota "atributu obranného čísla" + hod kostkou.
zranění je: uder - (self._obrana + self._kostka.hod()),
tedy uder - obrana.
Když je zraneni > 0:
self._zivot = self._zivot - zraneni
tedy život se zmenší o zranění.
Tam je podle mě vše jasné.

 
Odpovědět
14.12.2023 9:08
Avatar
Jakub Ježek
Člen
Avatar
Odpovídá na Karel Zaoral
Jakub Ježek:14.12.2023 12:32

Ahoj,
díky. Ano, to co píšeš, je klasický soubojový systém. Já ale nerozumím podle čeho se odečítají hp.
Vemu příklad přímo z lekce:
Život: [############­########]
Shadow útočí s úderem za 24 hp.
Zalgoren utrpěl poškození 7 hp.
Život: [################## ]

Utrpěl poškození 7 hp, ale odečetl se jen jeden #
Mě je jasný, že (díky té trojčlence) se tam nebude odečítet jeden # za jeden hp. Ale uniká mi tam ten poměr. 1# = 10 hp? 1# = 20 hp??

 
Odpovědět
14.12.2023 12:32
Avatar
Karel Zaoral
Člen
Avatar
Odpovídá na Jakub Ježek
Karel Zaoral:14.12.2023 18:07

Ahoj, a proč si to nespočítáš?
Když máš celkem 20 dílků a maximální počet životů je 100, každý dílek reprezentuje 5 životů. Přetypováním na celé číslo (int) se zaokrouhlí "desetinné" dílky.
Někdy v tom fakt není třeba hledat nic složitého :-D

 
Odpovědět
14.12.2023 18:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 69.