Compare commits

...

2 Commits

Author SHA1 Message Date
7869bd002b Add part 3 2024-12-09 20:21:38 +01:00
411732e821 Add wyswietl_stan 2024-12-09 19:59:28 +01:00
7 changed files with 66 additions and 4 deletions

View File

@ -16,3 +16,9 @@ class Jednostka(ABC):
if self.zdrowie > 0:
return True
return False
def wyswietl_stan(self):
print(f'Zdrowie: {self.zdrowie}')
print(f'Sila: {self.sila_ataku}')
print(f'Zasieg: {self.zasieg_ataku}')
print(f'Szybkosc: {self.szybkosc_ruchu}')

View File

@ -7,3 +7,7 @@ class Kusznik(Jednostka):
def __str__(self):
return 'K'
def wyswietl_stan(self):
print('Kusznik')
super().wyswietl_stan()

View File

@ -7,3 +7,7 @@ class Lucznik(Jednostka):
def __str__(self):
return 'L'
def wyswietl_stan(self):
print('Łucznik')
super().wyswietl_stan()

17
main.py
View File

@ -7,10 +7,19 @@ from piechur import Piechur
if __name__ == '__main__':
plansza = Plansza()
plansza.dodaj_jednostke(Rycerz(), 1, 1)
plansza.dodaj_jednostke(Lucznik(), 2, 1)
r1 = Rycerz()
l1 = Lucznik()
k1 = Kusznik()
p1 = Piechur()
plansza.dodaj_jednostke(r1, 1, 1)
plansza.dodaj_jednostke(l1, 2, 1)
plansza = Plansza()
plansza.dodaj_jednostke(Kusznik(), 5, 5)
plansza.dodaj_jednostke(Piechur(), 3, 5)
plansza.dodaj_jednostke(k1, 5, 5)
plansza.dodaj_jednostke(p1, 3, 5)
plansza.wykonaj_atak(r1, l1)
l1.wyswietl_stan()

View File

@ -7,3 +7,7 @@ class Piechur(Jednostka):
def __str__(self):
return 'P'
def wyswietl_stan(self):
print('Piechur')
super().wyswietl_stan()

View File

@ -1,3 +1,6 @@
import math
class Plansza:
_instance = None
@ -41,3 +44,31 @@ class Plansza:
print(self.pole[x][y], end=' ')
print()
print()
def wykonaj_atak(self, atakujacy, cel):
if self.sprawdz_zasieg(atakujacy, cel):
cel.otrzymaj_obrazenia(self.oblicz_obrazenia(atakujacy, cel))
else:
print('Cel jest za daleko')
def sprawdz_zasieg(self, atakujacy, cel):
x1, y1 = self.znajdz(atakujacy)
x2, y2 = self.znajdz(cel)
dystans = math.sqrt(math.pow(math.fabs(x1 - x2), 2) + math.pow(math.fabs(y1- y2), 2))
dystans = round(dystans, 0)
if atakujacy.zasieg_ataku >= dystans:
return True
else:
return False
def oblicz_obrazenia(self, atakujacy, cel):
obrazenia = atakujacy.sila_ataku
return obrazenia
def znajdz(self, jednostka):
for y in range(5):
for x in range(5):
if self.pole[x][y] == jednostka:
return x, y

View File

@ -7,3 +7,7 @@ class Rycerz(Jednostka):
def __str__(self):
return 'R'
def wyswietl_stan(self):
print('Rycerz')
super().wyswietl_stan()