Advertisement
WasuMrTomass0

Python KZG

Aug 28th, 2021 (edited)
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.33 KB | None | 0 0
  1. # # # # # # # # # # # # # # # #
  2. # Giganci Programowania, 2021 #
  3. # # # # # # # # # # # # # # # #
  4. from random import choice, randint
  5. from os import system
  6.  
  7. # dodajemy dowolnych przeciwników w sposób pokazany niżej (warto, żeby wartości były dobrane odpowiednio do przeciwnika)
  8. # [<nazwa>, <hp>, <obrazenia>]
  9. lista_przeciwnikow = [
  10.     ['Braum', 2000, 35],  # LoL
  11.     ['Impostor', 1000, 55],  # Among Us
  12.     ['Creeper', 50, 500],  # Minecraft
  13.     ['Herobrine', 1000, 100],  # Minecraft
  14.     ['Żołnierz Phoenix', 500, 125],  # CS:GO
  15.     ['Colt', 600, 65],  # Brawl Stars
  16. ]
  17.  
  18.  
  19. class Przeciwnik:
  20.     def __init__(self, parametry_przeciwnika):
  21.         self.nazwa = parametry_przeciwnika[0]
  22.         self.zycie = parametry_przeciwnika[1]
  23.         self.obrazenia = parametry_przeciwnika[2]
  24.  
  25.     def odejmij_zycie(self, zadane_obrazenia):
  26.         self.zycie -= zadane_obrazenia
  27.  
  28.     pass  # class Przeciwnik
  29.  
  30.  
  31. def losuj_przeciwnika():
  32.     przeciwnik = Przeciwnik(choice(lista_przeciwnikow))
  33.     print('*' * 64)
  34.     print("Twój nowy przeciwnik to " + str(przeciwnik.nazwa) + ". Szykuj się do walki!")
  35.     # print(f'Twój nowy przeciwnik to {przeciwnik.nazwa}. Szykuj się do walki!')
  36.     print('*' * 64)
  37.     return przeciwnik
  38.  
  39.  
  40. def wypisz_przeciwnika(przeciwnik):
  41.     print(przeciwnik.nazwa + " ma jeszcze " + str(przeciwnik.zycie) + " życia.\n")
  42.     pass
  43.  
  44.  
  45. def wypisz_akcje(zycie, obrazenia, mana, obrazenia_blyskawica, leczenie):
  46.     print("Masz " + str(zycie) + " życia i " + str(mana) + " many. Możliwe akcje to:")
  47.     print("0 - zwykły atak (" + str(obrazenia) + " obrażeń; 90% szans na trafienie)")
  48.     print("1 - przyzwij błyskawicę (" + str(obrazenia_blyskawica) + " obrażeń i ogłusza wroga na 1 rundę; koszt 25 many)")
  49.     print("2 - leczenie (leczysz się o " + str(leczenie) + " punktów zdrowia; można wykonać co trzy rundy)")
  50.     pass
  51.  
  52.  
  53. def wybierz_akcje(mana, ile_do_leczenia):
  54.     try:
  55.         akcja = int(input('Wybierz numer akcji: '))
  56.     except Exception:
  57.         print('Podana wartość musi być z zakresu od 0 do 2!')
  58.         return wybierz_akcje(mana, ile_do_leczenia)
  59.     if akcja not in [0, 1, 2]:
  60.         print('Podana wartość musi być z zakresu od 0 do 2!')
  61.         return wybierz_akcje(mana, ile_do_leczenia)
  62.     elif akcja == 1 and mana < 25:
  63.         print('Masz za mało many!')
  64.         return wybierz_akcje(mana, ile_do_leczenia)
  65.     elif akcja == 2 and ile_do_leczenia > 0:
  66.         print('Niedawno się leczyłeś!')
  67.         return wybierz_akcje(mana, ile_do_leczenia)
  68.     return akcja
  69.  
  70.  
  71. def wyczysc_konsole() -> None:
  72.     system('cls')  # Windows
  73.     # system('clear')  # Linux
  74.     pass
  75.  
  76.  
  77. def wypisz_wynik(ilosc_rund, ilosc_zabitych):
  78.     print('*' * 64)
  79.     print('Nikt nie jest niepokonany i ostatecznie poległeś!')
  80.     print("Jednak wytrzymałeś aż " + str(ilosc_rund) + " rund i pokonałeś " + str(ilosc_zabitych) + " przeciwników! Brawo!")
  81.     print('*' * 64)
  82.     pass
  83.  
  84.  
  85. def losuj(powodzenie: int) -> bool:
  86.     if powodzenie <= 0:
  87.         return False
  88.     if powodzenie >= 100:
  89.         return True
  90.     return randint(0, 100) < powodzenie
  91.  
  92.  
  93. # Funkcja main (główna) naszej gry
  94. def main():
  95.     # Miejsce na kod
  96.     # nasze podstawowe ustawienia, które można zmieniać, jeśli gra byłaby za łatwa lub za trudna
  97.     zycie = 1000  # nasze hp
  98.     obrazenia = 200  # nasze podstawowe obrażenia (są zwiększane za każdego zabitego przeciwnika)
  99.     mana = 100  # nasza mana potrzebna do błyskawicy
  100.     obrazenia_blyskawica = 400  # obrażenia błyskawicy
  101.     regeneracja_many = 2  # regeneracja many na rundę
  102.     ile_do_leczenia = 0  # ile jeszcze rund pozostało do możliwości ponownego uleczenia się
  103.     wartosc_leczenia = 100  # ile punktów zdrowia leczy uleczenie
  104.     ile_rund = 0  # licznik rund
  105.     ile_zabitych = 0  # licznik zabitych
  106.  
  107.     przeciwnik = losuj_przeciwnika()
  108.     # dopóki mamy punkty życia to gra działa
  109.     while zycie > 0:
  110.         ile_rund += 1
  111.  
  112.         # wypisanie informacji o przeciwniku, dostępnych akcjach i wybór akcji
  113.         wypisz_przeciwnika(przeciwnik)
  114.         wypisz_akcje(zycie, obrazenia, mana, obrazenia_blyskawica, wartosc_leczenia)
  115.         akcja = wybierz_akcje(mana, ile_do_leczenia)
  116.  
  117.         wyczysc_konsole()
  118.  
  119.         if akcja == 0:
  120.             # Gracz wybrał opcję nr 0
  121.             if losuj(90):  # 90% szans na powodzenie
  122.                 # Atak się udał
  123.                 zadane_obrazenia = obrazenia + randint(0, ile_zabitych * 10)
  124.                 przeciwnik.odejmij_zycie(zadane_obrazenia)
  125.                 print("Atak się udał. Zadałeś przeciwnikowi " + str(zadane_obrazenia) + " punktów obrażeń")
  126.                 pass  # Koniec if losuj(90)
  127.             else:
  128.                 # Atak się nie udał
  129.                 # Wersja podstawowa
  130.                 print("Atak się nie powiódł. Przeciwnik zrobił unik")
  131.                 # Wersja dodatkowa
  132.                 # komunikaty_o_uniku = [
  133.                 #     "Atak się nie powiódł. Przeciwnik zrobił unik!",
  134.                 #     "Przeciwnik popisał się doskonałym blokiem!",
  135.                 #     "Potknąłeś się o kamień przez co Twój atak okazał się zbyt słaby!",
  136.                 #     "Coś wpadło Ci do oka i nie trafiłeś w przeciwnika!"
  137.                 # ]
  138.                 # print(choice(komunikaty_o_uniku))
  139.                 pass  # Koniec else
  140.             pass  # Koniec if akcja == 0
  141.         elif akcja == 1:
  142.             # Gracz wybrał opcję nr 1
  143.             mana -= 25
  144.             przeciwnik.odejmij_zycie(obrazenia_blyskawica)
  145.             print("Atak się udał. Zadałeś przeciwnikowi " + str(obrazenia_blyskawica) + " punktów obrażeń")
  146.             pass   # Koniec if akcja == 1
  147.         else:
  148.             # Gracz wybrał opcję nr 2
  149.             zycie += wartosc_leczenia
  150.             ile_do_leczenia = 3
  151.             pass   # Koniec else
  152.  
  153.         if przeciwnik.zycie > 0:
  154.             # Przeciwnik żyje, może zadać nam obrażenia
  155.             if losuj(75):  # 75% szans na powodzenie ataku
  156.                 zycie -= przeciwnik.obrazenia
  157.                 print("Otrzymałeś " + str(przeciwnik.obrazenia) + " punktów obrażeń")
  158.                 pass  # if losuj(75)
  159.             else:
  160.                 # Przeciwnik w nas nie trafil
  161.                 komunikaty_o_uniku = [
  162.                     "Atak przeciwnika się nie powiódł. Dokonałeś uniku!",
  163.                     "Doskonały blok, przeciwnik nie miał szans!",
  164.                     "Przeciwnik się potknął i nie wyprowadził ciosu!",
  165.                     "Alergia przeciwnika zmusiła go do kichnięcia przez co nie wyprowadził ciosu!"
  166.                 ]
  167.                 print(choice(komunikaty_o_uniku))
  168.                 pass  # Koniec else
  169.             pass  # Koniec przeciwnik.zycie > 0
  170.         else:
  171.             # Przeciwnik stracił wszystkie punkty życia
  172.             ile_zabitych += 1  # Zwiększamy licznik pokonanych wrogów
  173.             przeciwnik = losuj_przeciwnika()  # Losujemy nowego przeciwnika
  174.             pass  # Koniec else
  175.  
  176.         # Regeneracja many oraz odliczanie do następnego leczenia
  177.         mana += regeneracja_many
  178.         ile_do_leczenia -= 1
  179.         pass  # Koniec pętli while
  180.  
  181.     # Wypisanie podsumowania rozgrywki
  182.     wypisz_wynik(ile_rund, ile_zabitych)
  183.     pass  # Koniec funkcji main
  184.  
  185.  
  186. if __name__ == '__main__':
  187.     main()
  188.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement