Last active 1744096517

Jeśli chcesz zobaczyć kod z poprzednich lekcji, kliknij w kartę "Rewizje" u góry

GGORG revised this gist 1744096516. Go to revision

1 file changed, 5 insertions, 2 deletions

main.py

@@ -8,9 +8,12 @@ import moje_klasy
8 8 def walka(kto, kogo):
9 9 # isinstance(kto, moje_klasy.Bohater)
10 10
11 - # tutaj jest problem!
12 11 if type(kto) == type(kogo):
13 - return
12 + pass
13 + elif issubclass(type(kto), moje_klasy.Zombie) == issubclass(
14 + type(kogo), moje_klasy.Bohater
15 + ):
16 + pass
14 17 elif type(kto) == moje_klasy.Bohater:
15 18 pass
16 19

GGORG revised this gist 1744095909. Go to revision

2 files changed, 28 insertions, 25 deletions

main.py

@@ -4,6 +4,17 @@ import moje_klasy
4 4 # importlib.reload(moje_klasy)
5 5 # ^^^ jeśli używamy jupyter notebook
6 6
7 +
8 + def walka(kto, kogo):
9 + # isinstance(kto, moje_klasy.Bohater)
10 +
11 + # tutaj jest problem!
12 + if type(kto) == type(kogo):
13 + return
14 + elif type(kto) == moje_klasy.Bohater:
15 + pass
16 +
17 +
7 18 mlot = moje_klasy.Bron(nazwa="Młot", ile_kosci=1, sukces_od=4, obrazenia=2)
8 19 miecz = moje_klasy.Bron(nazwa="Miecz dwuręczny", ile_kosci=5, sukces_od=5, obrazenia=1)
9 20
@@ -20,8 +31,6 @@ nelly.podnies(miecz)
20 31
21 32 nelly.pokaz_co_masz()
22 33
23 - nelly.atak()
24 -
25 34
26 35 szwendacz = moje_klasy.Szwendacz()
27 36 szwendacz.przedstaw_sie()

moje_klasy.py

@@ -54,11 +54,11 @@ class Bohater:
54 54 return udane
55 55
56 56
57 - class Szwendacz:
57 + class Zombie:
58 58 def __init__(self):
59 - self.zycie = 1
59 + self.zycie = None
60 60 self.zadawane_obrazenia = 1
61 - self.doswiadczenie_za_zabicie = 1
61 + self.doswiadczenie_za_zabicie = None
62 62
63 63 def przedstaw_sie(self):
64 64 print(f"Jestem {self.__class__.__name__}")
@@ -68,32 +68,26 @@ class Szwendacz:
68 68 f"Jak mnie dorwiesz, zyskasz {self.doswiadczenie_za_zabicie} doswiadczenia."
69 69 )
70 70
71 + def atak(self):
72 + pass
73 +
71 74
72 - class Spaslak:
75 + class Szwendacz(Zombie):
73 76 def __init__(self):
74 - self.zycie = 2
75 - self.zadawane_obrazenia = 1
77 + super().__init__()
78 + self.zycie = 1
76 79 self.doswiadczenie_za_zabicie = 1
77 80
78 - def przedstaw_sie(self):
79 - print(f"Jestem {self.__class__.__name__}")
80 - print(f"Mam {self.zycie} punktow zycia.")
81 - print(f"Jak cie dorwe, zadam {self.zadawane_obrazenia} obrazen.")
82 - print(
83 - f"Jak mnie dorwiesz, zyskasz {self.doswiadczenie_za_zabicie} doswiadczenia."
84 - )
81 +
82 + class Spaslak(Zombie):
83 + def __init__(self):
84 + super().__init__()
85 + self.zycie = 2
86 + self.doswiadczenie_za_zabicie = 1
85 87
86 88
87 - class Abominacja:
89 + class Abominacja(Zombie):
88 90 def __init__(self):
91 + super().__init__()
89 92 self.zycie = 3
90 - self.zadawane_obrazenia = 1
91 93 self.doswiadczenie_za_zabicie = 5
92 -
93 - def przedstaw_sie(self):
94 - print(f"Jestem {self.__class__.__name__}")
95 - print(f"Mam {self.zycie} punktow zycia.")
96 - print(f"Jak cie dorwe, zadam {self.zadawane_obrazenia} obrazen.")
97 - print(
98 - f"Jak mnie dorwiesz, zyskasz {self.doswiadczenie_za_zabicie} doswiadczenia."
99 - )

GGORG revised this gist 1743493853. Go to revision

2 files changed, 89 insertions, 1 deletion

main.py

@@ -14,3 +14,17 @@ print(mlot)
14 14
15 15
16 16 nelly = moje_klasy.Bohater(imie="Nelly")
17 +
18 + nelly.podnies(mlot)
19 + nelly.podnies(miecz)
20 +
21 + nelly.pokaz_co_masz()
22 +
23 + nelly.atak()
24 +
25 +
26 + szwendacz = moje_klasy.Szwendacz()
27 + szwendacz.przedstaw_sie()
28 +
29 + spaslak = moje_klasy.Spaslak()
30 + spaslak.przedstaw_sie()

moje_klasy.py

@@ -1,3 +1,10 @@
1 + import random
2 +
3 +
4 + def rzut_k6(ile_razy):
5 + return [random.randint(1, 6) for nr_rzutu in range(ile_razy)]
6 +
7 +
1 8 class Bron:
2 9 def __init__(self, nazwa, ile_kosci, sukces_od, obrazenia):
3 10 self.nazwa = nazwa
@@ -18,8 +25,75 @@ class Bron:
18 25
19 26
20 27 class Bohater:
21 - def __init__(self, imie, zycie, doswiadczenie, ekwipunek):
28 + # tutaj mamy blad!
29 + def __init__(self, imie, zycie=3, doswiadczenie=0, ekwipunek=[]):
22 30 self.imie = imie
23 31 self.zycie = zycie
24 32 self.doswiadczenie = doswiadczenie
25 33 self.ekwipunek = ekwipunek
34 +
35 + def okrzyk_bojowy(self):
36 + print("Jesień średniowiecza!")
37 +
38 + def podnies(self, przedmiot):
39 + self.ekwipunek.append(przedmiot)
40 + print(f"Oho, mam {przedmiot.nazwa}.")
41 +
42 + def pokaz_co_masz(self):
43 + print(f"Ekwipunek {self.imie}:")
44 + for i, przedmiot in enumerate(self.ekwipunek):
45 + print(f" {i+1}. {przedmiot.nazwa}")
46 +
47 + def atak(self):
48 + if len(self.ekwipunek) == 0:
49 + return 0
50 +
51 + wybrana_bron = self.ekwipunek[0]
52 + rzuty_ataku = rzut_k6(ile_razy=wybrana_bron.ile_kosci)
53 + udane = [rzut > wybrana_bron.sukces_od for rzut in rzuty_ataku]
54 + return udane
55 +
56 +
57 + class Szwendacz:
58 + def __init__(self):
59 + self.zycie = 1
60 + self.zadawane_obrazenia = 1
61 + self.doswiadczenie_za_zabicie = 1
62 +
63 + def przedstaw_sie(self):
64 + print(f"Jestem {self.__class__.__name__}")
65 + print(f"Mam {self.zycie} punktow zycia.")
66 + print(f"Jak cie dorwe, zadam {self.zadawane_obrazenia} obrazen.")
67 + print(
68 + f"Jak mnie dorwiesz, zyskasz {self.doswiadczenie_za_zabicie} doswiadczenia."
69 + )
70 +
71 +
72 + class Spaslak:
73 + def __init__(self):
74 + self.zycie = 2
75 + self.zadawane_obrazenia = 1
76 + self.doswiadczenie_za_zabicie = 1
77 +
78 + def przedstaw_sie(self):
79 + print(f"Jestem {self.__class__.__name__}")
80 + print(f"Mam {self.zycie} punktow zycia.")
81 + print(f"Jak cie dorwe, zadam {self.zadawane_obrazenia} obrazen.")
82 + print(
83 + f"Jak mnie dorwiesz, zyskasz {self.doswiadczenie_za_zabicie} doswiadczenia."
84 + )
85 +
86 +
87 + class Abominacja:
88 + def __init__(self):
89 + self.zycie = 3
90 + self.zadawane_obrazenia = 1
91 + self.doswiadczenie_za_zabicie = 5
92 +
93 + def przedstaw_sie(self):
94 + print(f"Jestem {self.__class__.__name__}")
95 + print(f"Mam {self.zycie} punktow zycia.")
96 + print(f"Jak cie dorwe, zadam {self.zadawane_obrazenia} obrazen.")
97 + print(
98 + f"Jak mnie dorwiesz, zyskasz {self.doswiadczenie_za_zabicie} doswiadczenia."
99 + )

GGORG revised this gist 1742896015. Go to revision

2 files changed, 41 insertions

main.py(file created)

@@ -0,0 +1,16 @@
1 + import moje_klasy
2 +
3 + # import importlib
4 + # importlib.reload(moje_klasy)
5 + # ^^^ jeśli używamy jupyter notebook
6 +
7 + mlot = moje_klasy.Bron(nazwa="Młot", ile_kosci=1, sukces_od=4, obrazenia=2)
8 + miecz = moje_klasy.Bron(nazwa="Miecz dwuręczny", ile_kosci=5, sukces_od=5, obrazenia=1)
9 +
10 + mlot.opis()
11 + moje_klasy.Bron.opis(mlot)
12 +
13 + print(mlot)
14 +
15 +
16 + nelly = moje_klasy.Bohater(imie="Nelly")

moje_klasy.py(file created)

@@ -0,0 +1,25 @@
1 + class Bron:
2 + def __init__(self, nazwa, ile_kosci, sukces_od, obrazenia):
3 + self.nazwa = nazwa
4 + self.ile_kosci = ile_kosci
5 + self.sukces_od = sukces_od
6 + self.obrazenia = obrazenia
7 +
8 + def opis(self):
9 + print(self)
10 +
11 + def __str__(self):
12 + tekst = ""
13 + tekst += f"Jestem obiektem klasy {self.__class__.__name__}\n"
14 + tekst += f"Nazywam się {self.nazwa}\n"
15 + tekst += f"Aby trafić, wyrzuć co najmniej {self.sukces_od} oczek\n"
16 + tekst += f"Zadaję {self.obrazenia} obrażeń\n"
17 + return tekst
18 +
19 +
20 + class Bohater:
21 + def __init__(self, imie, zycie, doswiadczenie, ekwipunek):
22 + self.imie = imie
23 + self.zycie = zycie
24 + self.doswiadczenie = doswiadczenie
25 + self.ekwipunek = ekwipunek
Newer Older