Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # # # # # # # # # # # # # # # #
- # Giganci Programowania, 2021 #
- # # # # # # # # # # # # # # # #
- from random import choice, randint
- from os import system
- # # # # # # # # # # # # # # # # Punkt 2 # # # # # # # # # # # # # # #
- # # # # # # # # # # # # # Lista przeciwników # # # # # # # # # # # #
- # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
- class Przeciwnik:
- def __init__(self, parametry_przeciwnika):
- self.nazwa = parametry_przeciwnika[0]
- self.zycie = parametry_przeciwnika[1]
- self.obrazenia = parametry_przeciwnika[2]
- def odejmij_zycie(self, zadane_obrazenia):
- self.zycie -= zadane_obrazenia
- pass # class Przeciwnik
- def losuj_przeciwnika():
- przeciwnik = Przeciwnik(choice(lista_przeciwnikow))
- print('*' * 64)
- print(f'Twój nowy przeciwnik to {przeciwnik.nazwa}. Szykuj się do walki!')
- print('*' * 64)
- return przeciwnik
- def wypisz_przeciwnika(przeciwnik):
- print(f'{przeciwnik.nazwa} ma jeszcze {przeciwnik.zycie} życia.\n')
- pass
- def wypisz_akcje(zycie, obrazenia, mana, obrazenia_blyskawica, leczenie):
- print(f'Masz {zycie} życia i {mana} many. Możliwe akcje to:')
- print(f'0 - zwykły atak ({obrazenia} obrażeń; 90% szans na trafienie)')
- print(f'1 - przyzwij błyskawicę ({obrazenia_blyskawica} obrażeń i ogłusza wroga na 1 rundę; koszt 25 many)')
- print(f'2 - leczenie (leczysz się o {leczenie} punktów zdrowia; można wykonać co trzy rundy)')
- pass
- def wybierz_akcje(mana, ile_do_leczenia):
- akcja = int(input('Wybierz numer akcji: '))
- if akcja not in [0, 1, 2]:
- print('Podana wartość musi być z zakresu od 0 do 2!')
- return wybierz_akcje(mana, ile_do_leczenia)
- elif akcja == 1 and mana < 25:
- print('Masz za mało many!')
- return wybierz_akcje(mana, ile_do_leczenia)
- elif akcja == 2 and ile_do_leczenia > 0:
- print('Niedawno się leczyłeś!')
- return wybierz_akcje(mana, ile_do_leczenia)
- return akcja
- def wyczysc_konsole() -> None:
- # system('cls') # Windows
- # system('clear') # Linux
- print('\n' * 20)
- pass
- def wypisz_wynik(ilosc_rund, ilosc_zabitych):
- print('*' * 64)
- print('Nikt nie jest niepokonany i ostatecznie poległeś!')
- print(f'Jednak wytrzymałeś aż {ilosc_rund} rund i pokonałeś {ilosc_zabitych} przeciwników! Brawo!')
- print('*' * 64)
- pass
- def losuj(powodzenie: int) -> bool:
- if powodzenie <= 0:
- return False
- if powodzenie >= 100:
- return True
- return randint(0, 100) < powodzenie
- # Funkcja main (główna) naszej gry
- def main():
- # Miejsce na nasze podstawowe ustawienia, które można zmieniać, jeśli gra byłaby za łatwa lub za trudna
- # Zmienne, ktore nalezy ustawic: zycie, obrazenia, mana, obrazenia_blyskawica, regeneracja_many,
- # ile_do_leczenia, wartosc_leczenia, ile_rund, ile_zabitych
- # UWAGA: dopilnuj poprawności nazw zmiennych
- # # # # # # # # # # # # # # # # Punkt 1 # # # # # # # # # # # # # # #
- # # # # # # # # # # Zmienne nadzorujące rozgrywkę # # # # # # # # # #
- # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
- przeciwnik = losuj_przeciwnika()
- # dopóki mamy punkty życia to gra działa
- while zycie > 0:
- ile_rund += 1
- # wypisanie informacji o przeciwniku, dostępnych akcjach i wybór akcji
- wypisz_przeciwnika(przeciwnik)
- wypisz_akcje(zycie, obrazenia, mana, obrazenia_blyskawica, wartosc_leczenia)
- akcja = wybierz_akcje(mana, ile_do_leczenia)
- wyczysc_konsole()
- # # # # # # # # # # # # # # # # Punkt 3 # # # # # # # # # # # # # # #
- # # # # # # # # # # # Logika zadawanych obrażeń # # # # # # # # # # #
- # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
- if przeciwnik.zycie > 0:
- # Przeciwnik żyje, może zadać nam obrażenia
- if losuj(75): # 75% szans na powodzenie ataku
- zycie -= przeciwnik.obrazenia
- print("Otrzymałeś " + str(przeciwnik.obrazenia) + " punktów obrażeń")
- pass # if losuj(75)
- else:
- # Przeciwnik w nas nie trafil
- print("Atak przeciwnika się nie powiódł. Dokonałeś uniku!")
- pass # Koniec else
- pass # Koniec przeciwnik.zycie > 0
- else:
- # Przeciwnik stracił wszystkie punkty życia
- ile_zabitych += 1 # Zwiększamy licznik pokonanych wrogów
- przeciwnik = losuj_przeciwnika() # Losujemy nowego przeciwnika
- pass # Koniec else
- # Regeneracja many oraz odliczanie do następnego leczenia
- mana += regeneracja_many
- ile_do_leczenia -= 1
- pass # Koniec pętli while
- # Wypisanie podsumowania rozgrywki
- wypisz_wynik(ile_rund, ile_zabitych)
- pass # Koniec funkcji main
- if __name__ == '__main__':
- main()
Add Comment
Please, Sign In to add comment