Last active 1744096517

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

main.py Raw
1import moje_klasy
2
3# import importlib
4# importlib.reload(moje_klasy)
5# ^^^ jeśli używamy jupyter notebook
6
7
8def walka(kto, kogo):
9 # isinstance(kto, moje_klasy.Bohater)
10
11 if type(kto) == type(kogo):
12 pass
13 elif issubclass(type(kto), moje_klasy.Zombie) == issubclass(
14 type(kogo), moje_klasy.Bohater
15 ):
16 pass
17 elif type(kto) == moje_klasy.Bohater:
18 pass
19
20
21mlot = moje_klasy.Bron(nazwa="Młot", ile_kosci=1, sukces_od=4, obrazenia=2)
22miecz = moje_klasy.Bron(nazwa="Miecz dwuręczny", ile_kosci=5, sukces_od=5, obrazenia=1)
23
24mlot.opis()
25moje_klasy.Bron.opis(mlot)
26
27print(mlot)
28
29
30nelly = moje_klasy.Bohater(imie="Nelly")
31
32nelly.podnies(mlot)
33nelly.podnies(miecz)
34
35nelly.pokaz_co_masz()
36
37
38szwendacz = moje_klasy.Szwendacz()
39szwendacz.przedstaw_sie()
40
41spaslak = moje_klasy.Spaslak()
42spaslak.przedstaw_sie()
43
moje_klasy.py Raw
1import random
2
3
4def rzut_k6(ile_razy):
5 return [random.randint(1, 6) for nr_rzutu in range(ile_razy)]
6
7
8class Bron:
9 def __init__(self, nazwa, ile_kosci, sukces_od, obrazenia):
10 self.nazwa = nazwa
11 self.ile_kosci = ile_kosci
12 self.sukces_od = sukces_od
13 self.obrazenia = obrazenia
14
15 def opis(self):
16 print(self)
17
18 def __str__(self):
19 tekst = ""
20 tekst += f"Jestem obiektem klasy {self.__class__.__name__}\n"
21 tekst += f"Nazywam się {self.nazwa}\n"
22 tekst += f"Aby trafić, wyrzuć co najmniej {self.sukces_od} oczek\n"
23 tekst += f"Zadaję {self.obrazenia} obrażeń\n"
24 return tekst
25
26
27class Bohater:
28 # tutaj mamy blad!
29 def __init__(self, imie, zycie=3, doswiadczenie=0, ekwipunek=[]):
30 self.imie = imie
31 self.zycie = zycie
32 self.doswiadczenie = doswiadczenie
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
57class Zombie:
58 def __init__(self):
59 self.zycie = None
60 self.zadawane_obrazenia = 1
61 self.doswiadczenie_za_zabicie = None
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 def atak(self):
72 pass
73
74
75class Szwendacz(Zombie):
76 def __init__(self):
77 super().__init__()
78 self.zycie = 1
79 self.doswiadczenie_za_zabicie = 1
80
81
82class Spaslak(Zombie):
83 def __init__(self):
84 super().__init__()
85 self.zycie = 2
86 self.doswiadczenie_za_zabicie = 1
87
88
89class Abominacja(Zombie):
90 def __init__(self):
91 super().__init__()
92 self.zycie = 3
93 self.doswiadczenie_za_zabicie = 5
94