This commit is contained in:
s500512 2024-12-11 16:47:38 +01:00
parent f2ba8c96a2
commit 582b86edd1
2 changed files with 63 additions and 47 deletions

View File

@ -1,4 +1,4 @@
from abc import ABC, abstractmethod from abc import ABC
class Jednostka(ABC): class Jednostka(ABC):

108
main.py
View File

@ -8,6 +8,15 @@ from piechur import Piechur
jednostki = [] jednostki = []
def wiecej_niz_jeden_zywy():
licznik = 0
for i in jednostki:
if i.czy_zyje():
licznik += 1
return licznik > 1
def waliduj_opcje(opcja): def waliduj_opcje(opcja):
return 1 <= opcja <= 2 return 1 <= opcja <= 2
@ -30,64 +39,71 @@ def waliduj_cel(x):
return 0 <= x <= (len(jednostki) - 1) return 0 <= x <= (len(jednostki) - 1)
def wybierz_opcje():
opcja = -1
wybrano_opcje = False
while True:
print('Wybierz opcje: ')
print(f'1. Ruch')
print(f'2. Atak')
opcja = int(input('Wprowadz opcje:'))
wybrano_opcje = waliduj_opcje(opcja)
if wybrano_opcje:
break
return opcja
def wykonaj_ruch():
wykonano_ruch = False
while True:
x = wprowadz_wspolrzedna('x')
y = wprowadz_wspolrzedna('y')
if waliduj_wspolrzedna(x) and waliduj_wspolrzedna(y):
wykonano_ruch = plansza.rusz_jednostke(jednostka, x, y)
else:
print('Ups! Nieprawidlowe wspolrzedne. Podaj jeszcze raz')
if wykonano_ruch:
break
def wykonaj_atak():
wykonano_ruch = False
while True:
wyswietl_jednostki()
indeks_celu = int(input('Kogo atakujesz?'))
if waliduj_cel(indeks_celu):
wykonano_ruch = plansza.wykonaj_atak(jednostka, jednostki[indeks_celu])
else:
print('Ups! Nieprawidłowy cel. Podaj jeszcze raz')
if wykonano_ruch:
break
if __name__ == '__main__': if __name__ == '__main__':
plansza = Plansza() plansza = Plansza()
r1 = Rycerz('Stefan') r1 = Rycerz('Lukasz')
l1 = Lucznik('Agata') l1 = Lucznik('Sebastian')
k1 = Kusznik('Bogumił')
p1 = Piechur('Łukasz')
jednostki = [r1, l1, k1, p1] jednostki = [r1, l1]
plansza.dodaj_jednostke(r1, 0, 0) plansza.dodaj_jednostke(r1, 0, 0)
plansza.dodaj_jednostke(l1, 0, 1) plansza.dodaj_jednostke(l1, 4, 4)
plansza.dodaj_jednostke(k1, 4, 4)
plansza.dodaj_jednostke(p1, 2, 4)
print('Jednostki zostaly rozstawiona. Niech rozpocznie sie walka') print('Jednostki zostaly rozstawiona. Niech rozpocznie sie walka')
while r1.czy_zyje() or l1.czy_zyje() or k1.czy_zyje() or p1.czy_zyje(): while wiecej_niz_jeden_zywy():
for jednostka in jednostki: for jednostka in jednostki:
plansza.wyswietl() plansza.wyswietl()
print(f'Tura {jednostka.nazwa} {jednostka.imie}') print(f'Tura {jednostka.nazwa} {jednostka.imie}')
jednostka.wyswietl_stan()
opcja = 0 opcja = wybierz_opcje()
wybrano_opcje = False
wybrano_cel = False
wykonano_ruch = False
while True:
print(f'1. Ruch')
print(f'2. Atak')
print('Wybierz opcje: ')
opcja = int(input('Wprowadz opcje:'))
wybrano_opcje = waliduj_opcje(opcja)
if wybrano_opcje:
break
if opcja == 1: if opcja == 1:
while True: wykonaj_ruch()
x = wprowadz_wspolrzedna('x')
y = wprowadz_wspolrzedna('y')
if waliduj_wspolrzedna(x) and waliduj_wspolrzedna(y):
wykonano_ruch = plansza.rusz_jednostke(jednostka, x, y)
plansza.wyswietl()
else:
print('Ups! Nieprawidlowe wspolrzedne. Podaj jeszcze raz')
if wykonano_ruch:
break
elif opcja == 2: elif opcja == 2:
x = -1 wykonaj_atak()
while True:
wyswietl_jednostki()
x = int(input('Kogo atakujesz?'))
if waliduj_cel(x):
wykonano_ruch = plansza.wykonaj_atak(jednostka, jednostki[x])
else:
print('Ups! Nieprawidłowy cel. Podaj jeszcze raz')
if wykonano_ruch:
break