Advertisement
WasuMrTomass0

Kzg Python - Rozwiazanie

Sep 3rd, 2021 (edited)
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.48 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.     print('\n' * 20)
  75.     pass
  76.  
  77.  
  78. def wypisz_wynik(ilosc_rund, ilosc_zabitych):
  79.     print('*' * 64)
  80.     print('Nikt nie jest niepokonany i ostatecznie poległeś!')
  81.     print("Jednak wytrzymałeś aż " + str(ilosc_rund) + " rund i pokonałeś " + str(ilosc_zabitych) + " przeciwników! Brawo!")
  82.     print('*' * 64)
  83.     pass
  84.  
  85.  
  86. def losuj(powodzenie: int) -> bool:
  87.     if powodzenie <= 0:
  88.         return False
  89.     if powodzenie >= 100:
  90.         return True
  91.     return randint(0, 100) < powodzenie
  92.  
  93.  
  94. # Funkcja main (główna) naszej gry
  95. def main():
  96.     # Miejsce na kod
  97.     # nasze podstawowe ustawienia, które można zmieniać, jeśli gra byłaby za łatwa lub za trudna
  98.     zycie = 1000  # nasze hp
  99.     obrazenia = 200  # nasze podstawowe obrażenia (są zwiększane za każdego zabitego przeciwnika)
  100.     mana = 100  # nasza mana potrzebna do błyskawicy
  101.     obrazenia_blyskawica = 400  # obrażenia błyskawicy
  102.     regeneracja_many = 2  # regeneracja many na rundę
  103.     ile_do_leczenia = 0  # ile jeszcze rund pozostało do możliwości ponownego uleczenia się
  104.     wartosc_leczenia = 100  # ile punktów zdrowia leczy uleczenie
  105.     ile_rund = 0  # licznik rund
  106.     ile_zabitych = 0  # licznik zabitych
  107.  
  108.     przeciwnik = losuj_przeciwnika()
  109.     # dopóki mamy punkty życia to gra działa
  110.     while zycie > 0:
  111.         ile_rund += 1
  112.  
  113.         # wypisanie informacji o przeciwniku, dostępnych akcjach i wybór akcji
  114.         wypisz_przeciwnika(przeciwnik)
  115.         wypisz_akcje(zycie, obrazenia, mana, obrazenia_blyskawica, wartosc_leczenia)
  116.         akcja = wybierz_akcje(mana, ile_do_leczenia)
  117.  
  118.         wyczysc_konsole()
  119.  
  120.         if akcja == 0:
  121.             # Gracz wybrał opcję nr 0
  122.             if losuj(90):  # 90% szans na powodzenie
  123.                 # Atak się udał
  124.                 zadane_obrazenia = obrazenia + randint(0, ile_zabitych * 10)
  125.                 przeciwnik.odejmij_zycie(zadane_obrazenia)
  126.                 print("Atak się udał. Zadałeś przeciwnikowi " + str(zadane_obrazenia) + " punktów obrażeń")
  127.                 pass  # Koniec if losuj(90)
  128.             else:
  129.                 # Atak się nie udał
  130.                 # Wersja podstawowa
  131.                 print("Atak się nie powiódł. Przeciwnik zrobił unik")
  132.                 # Wersja dodatkowa
  133.                 # komunikaty_o_uniku = [
  134.                 #     "Atak się nie powiódł. Przeciwnik zrobił unik!",
  135.                 #     "Przeciwnik popisał się doskonałym blokiem!",
  136.                 #     "Potknąłeś się o kamień przez co Twój atak okazał się zbyt słaby!",
  137.                 #     "Coś wpadło Ci do oka i nie trafiłeś w przeciwnika!"
  138.                 # ]
  139.                 # print(choice(komunikaty_o_uniku))
  140.                 pass  # Koniec else
  141.             pass  # Koniec if akcja == 0
  142.         elif akcja == 1:
  143.             # Gracz wybrał opcję nr 1
  144.             mana -= 25
  145.             przeciwnik.odejmij_zycie(obrazenia_blyskawica)
  146.             print("Atak się udał. Zadałeś przeciwnikowi " + str(obrazenia_blyskawica) + " punktów obrażeń")
  147.             pass   # Koniec if akcja == 1
  148.         else:
  149.             # Gracz wybrał opcję nr 2
  150.             zycie += wartosc_leczenia
  151.             ile_do_leczenia = 3
  152.             pass   # Koniec else
  153.  
  154.         if przeciwnik.zycie > 0:
  155.             # Przeciwnik żyje, może zadać nam obrażenia
  156.             if losuj(75):  # 75% szans na powodzenie ataku
  157.                 zycie -= przeciwnik.obrazenia
  158.                 print("Otrzymałeś " + str(przeciwnik.obrazenia) + " punktów obrażeń")
  159.                 pass  # if losuj(75)
  160.             else:
  161.                 # Przeciwnik w nas nie trafil
  162.                 print("Atak przeciwnika się nie powiódł. Dokonałeś uniku!")
  163.                 # Wersja dodatkowa
  164.                 # komunikaty_o_uniku = [
  165.                 #     "Atak przeciwnika się nie powiódł. Dokonałeś uniku!",
  166.                 #     "Doskonały blok, przeciwnik nie miał szans!",
  167.                 #     "Przeciwnik się potknął i nie wyprowadził ciosu!",
  168.                 #     "Alergia przeciwnika zmusiła go do kichnięcia przez co nie wyprowadził ciosu!"
  169.                 # ]
  170.                 # print(choice(komunikaty_o_uniku))
  171.                 pass  # Koniec else
  172.             pass  # Koniec przeciwnik.zycie > 0
  173.         else:
  174.             # Przeciwnik stracił wszystkie punkty życia
  175.             ile_zabitych += 1  # Zwiększamy licznik pokonanych wrogów
  176.             przeciwnik = losuj_przeciwnika()  # Losujemy nowego przeciwnika
  177.             pass  # Koniec else
  178.  
  179.         # Regeneracja many oraz odliczanie do następnego leczenia
  180.         mana += regeneracja_many
  181.         ile_do_leczenia -= 1
  182.         pass  # Koniec pętli while
  183.  
  184.     # Wypisanie podsumowania rozgrywki
  185.     wypisz_wynik(ile_rund, ile_zabitych)
  186.     pass  # Koniec funkcji main
  187.  
  188.  
  189. if __name__ == '__main__':
  190.     main()
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement