Last active 1744096517

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

Revision 194d382a03654c148c8f28474ed2c275d3b4d4a3

main.py Raw
1import moje_klasy
2
3# import importlib
4# importlib.reload(moje_klasy)
5# ^^^ jeśli używamy jupyter notebook
6
7mlot = moje_klasy.Bron(nazwa="Młot", ile_kosci=1, sukces_od=4, obrazenia=2)
8miecz = moje_klasy.Bron(nazwa="Miecz dwuręczny", ile_kosci=5, sukces_od=5, obrazenia=1)
9
10mlot.opis()
11moje_klasy.Bron.opis(mlot)
12
13print(mlot)
14
15
16nelly = moje_klasy.Bohater(imie="Nelly")
17
18nelly.podnies(mlot)
19nelly.podnies(miecz)
20
21nelly.pokaz_co_masz()
22
23nelly.atak()
24
25
26szwendacz = moje_klasy.Szwendacz()
27szwendacz.przedstaw_sie()
28
29spaslak = moje_klasy.Spaslak()
30spaslak.przedstaw_sie()
31
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 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
72class 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
87class 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 )
100