WasuMrTomass0

KzG Szablon

Sep 3rd, 2021 (edited)
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.99 KB | None | 0 0
  1. # # # # # # # # # # # # # # # #
  2. # Giganci Programowania, 2021 #
  3. # # # # # # # # # # # # # # # #
  4. from random import choice, randint
  5. from os import system
  6.  
  7.  
  8. # # # # # # # # # # # # # # # # Punkt 2 # # # # # # # # # # # # # # #
  9. # # # # # # # # # # # # # Lista  przeciwników # # # # # # # # # # # #
  10.  
  11.  
  12. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
  13.  
  14.  
  15. class Przeciwnik:
  16.     def __init__(self, parametry_przeciwnika):
  17.         self.nazwa = parametry_przeciwnika[0]
  18.         self.zycie = parametry_przeciwnika[1]
  19.         self.obrazenia = parametry_przeciwnika[2]
  20.  
  21.     def odejmij_zycie(self, zadane_obrazenia):
  22.         self.zycie -= zadane_obrazenia
  23.  
  24.     pass  # class Przeciwnik
  25.  
  26.  
  27. def losuj_przeciwnika():
  28.     przeciwnik = Przeciwnik(choice(lista_przeciwnikow))
  29.     print('*' * 64)
  30.     print(f'Twój nowy przeciwnik to {przeciwnik.nazwa}. Szykuj się do walki!')
  31.     print('*' * 64)
  32.     return przeciwnik
  33.  
  34.  
  35. def wypisz_przeciwnika(przeciwnik):
  36.     print(f'{przeciwnik.nazwa} ma jeszcze {przeciwnik.zycie} życia.\n')
  37.     pass
  38.  
  39.  
  40. def wypisz_akcje(zycie, obrazenia, mana, obrazenia_blyskawica, leczenie):
  41.     print(f'Masz {zycie} życia i {mana} many. Możliwe akcje to:')
  42.     print(f'0 - zwykły atak ({obrazenia} obrażeń; 90% szans na trafienie)')
  43.     print(f'1 - przyzwij błyskawicę ({obrazenia_blyskawica} obrażeń i ogłusza wroga na 1 rundę; koszt 25 many)')
  44.     print(f'2 - leczenie (leczysz się o {leczenie} punktów zdrowia; można wykonać co trzy rundy)')
  45.     pass
  46.  
  47.  
  48. def wybierz_akcje(mana, ile_do_leczenia):
  49.     akcja = int(input('Wybierz numer akcji: '))
  50.     if akcja not in [0, 1, 2]:
  51.         print('Podana wartość musi być z zakresu od 0 do 2!')
  52.         return wybierz_akcje(mana, ile_do_leczenia)
  53.     elif akcja == 1 and mana < 25:
  54.         print('Masz za mało many!')
  55.         return wybierz_akcje(mana, ile_do_leczenia)
  56.     elif akcja == 2 and ile_do_leczenia > 0:
  57.         print('Niedawno się leczyłeś!')
  58.         return wybierz_akcje(mana, ile_do_leczenia)
  59.     return akcja
  60.  
  61.  
  62. def wyczysc_konsole() -> None:
  63.     # system('cls')  # Windows
  64.     # system('clear')  # Linux
  65.     print('\n' * 20)
  66.     pass
  67.  
  68.  
  69. def wypisz_wynik(ilosc_rund, ilosc_zabitych):
  70.     print('*' * 64)
  71.     print('Nikt nie jest niepokonany i ostatecznie poległeś!')
  72.     print(f'Jednak wytrzymałeś aż {ilosc_rund} rund i pokonałeś {ilosc_zabitych} przeciwników! Brawo!')
  73.     print('*' * 64)
  74.     pass
  75.  
  76.  
  77. def losuj(powodzenie: int) -> bool:
  78.     if powodzenie <= 0:
  79.         return False
  80.     if powodzenie >= 100:
  81.         return True
  82.     return randint(0, 100) < powodzenie
  83.  
  84.  
  85. # Funkcja main (główna) naszej gry
  86. def main():
  87.     # Miejsce na nasze podstawowe ustawienia, które można zmieniać, jeśli gra byłaby za łatwa lub za trudna
  88.     # Zmienne, ktore nalezy ustawic: zycie, obrazenia, mana, obrazenia_blyskawica, regeneracja_many,
  89.     # ile_do_leczenia, wartosc_leczenia, ile_rund, ile_zabitych
  90.     # UWAGA: dopilnuj poprawności nazw zmiennych
  91.  
  92.     # # # # # # # # # # # # # # # # Punkt 1 # # # # # # # # # # # # # # #
  93.     # # # # # # # # # # Zmienne nadzorujące rozgrywkę # # # # # # # # # #
  94.  
  95.  
  96.     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
  97.  
  98.     przeciwnik = losuj_przeciwnika()
  99.     # dopóki mamy punkty życia to gra działa
  100.     while zycie > 0:
  101.         ile_rund += 1
  102.  
  103.         # wypisanie informacji o przeciwniku, dostępnych akcjach i wybór akcji
  104.         wypisz_przeciwnika(przeciwnik)
  105.         wypisz_akcje(zycie, obrazenia, mana, obrazenia_blyskawica, wartosc_leczenia)
  106.         akcja = wybierz_akcje(mana, ile_do_leczenia)
  107.  
  108.         wyczysc_konsole()
  109.  
  110.         # # # # # # # # # # # # # # # # Punkt 3 # # # # # # # # # # # # # # #
  111.         # # # # # # # # # # # Logika zadawanych obrażeń # # # # # # # # # # #
  112.  
  113.  
  114.         # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
  115.  
  116.         if przeciwnik.zycie > 0:
  117.             # Przeciwnik żyje, może zadać nam obrażenia
  118.             if losuj(75):  # 75% szans na powodzenie ataku
  119.                 zycie -= przeciwnik.obrazenia
  120.                 print("Otrzymałeś " + str(przeciwnik.obrazenia) + " punktów obrażeń")
  121.                 pass  # if losuj(75)
  122.             else:
  123.                 # Przeciwnik w nas nie trafil
  124.                 print("Atak przeciwnika się nie powiódł. Dokonałeś uniku!")
  125.                 pass  # Koniec else
  126.             pass  # Koniec przeciwnik.zycie > 0
  127.         else:
  128.             # Przeciwnik stracił wszystkie punkty życia
  129.             ile_zabitych += 1  # Zwiększamy licznik pokonanych wrogów
  130.             przeciwnik = losuj_przeciwnika()  # Losujemy nowego przeciwnika
  131.             pass  # Koniec else
  132.  
  133.         # Regeneracja many oraz odliczanie do następnego leczenia
  134.         mana += regeneracja_many
  135.         ile_do_leczenia -= 1
  136.         pass  # Koniec pętli while
  137.  
  138.     # Wypisanie podsumowania rozgrywki
  139.     wypisz_wynik(ile_rund, ile_zabitych)
  140.     pass  # Koniec funkcji main
  141.  
  142.  
  143. if __name__ == '__main__':
  144.     main()
  145.  
Add Comment
Please, Sign In to add comment