Tavs šīs stundas izaicinājums: Apvienot visas OOP prasmes — klases, mantošanu un polimorfismu — pilnvērtīgā RPG cīņas spēlē.
Tava RPG cīņas spēle izmantos visas OOP iespējas:
Tels — kopīga visiem (HP, vards, cizt, vai_dzivs).Bruninieks (bruņas), Burvis (mana, burvojumi), Strelnieks (kritiskie sitieni).Goblins, Pukis, Skelets — katrs ar savu stilu.uzbrukums(), bet darbība atšķiras.Failu struktūra:
rpg/
├── main.py # spēles cikls
├── varoni.py # Bruninieks, Burvis, Strelnieks
├── ienaidnieki.py # Goblins, Pukis, Skelets
├── bazes.py # Tels (bāzes klase)
└── ieroci.py # Zobens, Loks, Burvjugrāmata
Izveido pilnu klašu sistēmu.
bazes.py: class Tels ar __init__(self, vards, hp), cizt, vai_dzivs, __str__.varoni.py: Bruninieks (bruņas), Burvis (mana + burvojumi), Strelnieks (kritisks sitiens).ienaidnieki.py: 3 ienaidnieku tipi ar dažādiem HP/speks.main.py importē un izveido katra tipa objektu, izvada to.Implementē rundām balstītu cīņu.
cinas_runda(varonis, ienaidnieks): viens uzbrukums no katras puses.random.random() < 0.2).cina(varonis, ienaidnieks): while cikls līdz viens nokrīt; izvada notikumus.spelet(): izveido varoni, ģenerē 5 nejaušus ienaidniekus, cīnās ar katru.Pievieno lietotāja saskarni un saglabāšanu.
main.py: izvēlne ar 1) Spēlēt; 2) Skatīt rezultātus; 3) Iziet.rezultati.json — vārds, klase, uzvarētie ienaidnieki, datums.Pievieno ieroču klases ar bonusu.
ieroci.py: class Ierocis ar nosaukums, bojajums_bonus.Zobens(Ierocis), Loks(Ierocis) — katrs ar savām īpašībām.self.ierocis — viņa uzbrukums kļūst self.speks + self.ierocis.bojajums_bonus.varoni.py imports ienaidnieki.py, kas imports varoni.py — sadali kopējās lietas bazes.py.vai_dzivs().self.inventars = [] konstruktorā — NEKAD klases līmenī (visi dalītu vienu sarakstu).import random
class Tels:
def __init__(self, vards, hp, speks):
self.vards = vards
self.hp = hp
self.speks = speks
def vai_dzivs(self): return self.hp > 0
def cizt(self, b): self.hp = max(0, self.hp - b)
def __str__(self): return f"{self.vards} ({self.hp} HP)"
class Bruninieks(Tels):
def __init__(self, vards):
super().__init__(vards, hp=150, speks=15)
self.brunas = 5
def cizt(self, b): super().cizt(max(0, b - self.brunas))
class Goblins(Tels):
def __init__(self):
super().__init__("Goblins", hp=40, speks=8)
bruno = Bruninieks("Lanselots")
goblins = Goblins()
while bruno.vai_dzivs() and goblins.vai_dzivs():
goblins.cizt(bruno.speks)
if goblins.vai_dzivs(): bruno.cizt(goblins.speks)
uzvaretajs = bruno if bruno.vai_dzivs() else goblins
print(f"Uzvarētājs: {uzvaretajs}")