Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 9. diel - Bojovník do arény v Pythone

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Karel Zaoral
Člen
Avatar
Odpovedá 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é.

Avatar
Jakub Ježek
Člen
Avatar
Odpovedá 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...

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.

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ů.

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.

Editované
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

Avatar
Karel Zaoral
Člen
Avatar
Odpovedá 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é.

Avatar
Jakub Ježek
Člen
Avatar
Odpovedá 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??

Avatar
Karel Zaoral
Člen
Avatar
Odpovedá 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

Avatar
Jakub Ježek
Člen
Avatar
Odpovedá na Karel Zaoral
Jakub Ježek:14.12.2023 20:08

Protože jsem to v tom prostě neviděl :-) Díky

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 93.