Advertisement
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
- # dodajemy dowolnych przeciwników w sposób pokazany niżej (warto, żeby wartości były dobrane odpowiednio do przeciwnika)
- # [<nazwa>, <hp>, <obrazenia>]
- lista_przeciwnikow = [
- ['Braum', 2000, 35], # LoL
- ['Impostor', 1000, 55], # Among Us
- ['Creeper', 50, 500], # Minecraft
- ['Herobrine', 1000, 100], # Minecraft
- ['Żołnierz Phoenix', 500, 125], # CS:GO
- ['Colt', 600, 65], # Brawl Stars
- ]
- 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("Twój nowy przeciwnik to " + str(przeciwnik.nazwa) + ". Szykuj się do walki!")
- # print(f'Twój nowy przeciwnik to {przeciwnik.nazwa}. Szykuj się do walki!')
- print('*' * 64)
- return przeciwnik
- def wypisz_przeciwnika(przeciwnik):
- print(przeciwnik.nazwa + " ma jeszcze " + str(przeciwnik.zycie) + " życia.\n")
- pass
- def wypisz_akcje(zycie, obrazenia, mana, obrazenia_blyskawica, leczenie):
- print("Masz " + str(zycie) + " życia i " + str(mana) + " many. Możliwe akcje to:")
- print("0 - zwykły atak (" + str(obrazenia) + " obrażeń; 90% szans na trafienie)")
- print("1 - przyzwij błyskawicę (" + str(obrazenia_blyskawica) + " obrażeń i ogłusza wroga na 1 rundę; koszt 25 many)")
- print("2 - leczenie (leczysz się o " + str(leczenie) + " punktów zdrowia; można wykonać co trzy rundy)")
- pass
- def wybierz_akcje(mana, ile_do_leczenia):
- try:
- akcja = int(input('Wybierz numer akcji: '))
- except Exception:
- print('Podana wartość musi być z zakresu od 0 do 2!')
- return wybierz_akcje(mana, ile_do_leczenia)
- 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
- pass
- def wypisz_wynik(ilosc_rund, ilosc_zabitych):
- print('*' * 64)
- print('Nikt nie jest niepokonany i ostatecznie poległeś!')
- print("Jednak wytrzymałeś aż " + str(ilosc_rund) + " rund i pokonałeś " + str(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 kod
- # nasze podstawowe ustawienia, które można zmieniać, jeśli gra byłaby za łatwa lub za trudna
- zycie = 1000 # nasze hp
- obrazenia = 200 # nasze podstawowe obrażenia (są zwiększane za każdego zabitego przeciwnika)
- mana = 100 # nasza mana potrzebna do błyskawicy
- obrazenia_blyskawica = 400 # obrażenia błyskawicy
- regeneracja_many = 2 # regeneracja many na rundę
- ile_do_leczenia = 0 # ile jeszcze rund pozostało do możliwości ponownego uleczenia się
- wartosc_leczenia = 100 # ile punktów zdrowia leczy uleczenie
- ile_rund = 0 # licznik rund
- ile_zabitych = 0 # licznik zabitych
- 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()
- if akcja == 0:
- # Gracz wybrał opcję nr 0
- if losuj(90): # 90% szans na powodzenie
- # Atak się udał
- zadane_obrazenia = obrazenia + randint(0, ile_zabitych * 10)
- przeciwnik.odejmij_zycie(zadane_obrazenia)
- print("Atak się udał. Zadałeś przeciwnikowi " + str(zadane_obrazenia) + " punktów obrażeń")
- pass # Koniec if losuj(90)
- else:
- # Atak się nie udał
- # Wersja podstawowa
- print("Atak się nie powiódł. Przeciwnik zrobił unik")
- # Wersja dodatkowa
- # komunikaty_o_uniku = [
- # "Atak się nie powiódł. Przeciwnik zrobił unik!",
- # "Przeciwnik popisał się doskonałym blokiem!",
- # "Potknąłeś się o kamień przez co Twój atak okazał się zbyt słaby!",
- # "Coś wpadło Ci do oka i nie trafiłeś w przeciwnika!"
- # ]
- # print(choice(komunikaty_o_uniku))
- pass # Koniec else
- pass # Koniec if akcja == 0
- elif akcja == 1:
- # Gracz wybrał opcję nr 1
- mana -= 25
- przeciwnik.odejmij_zycie(obrazenia_blyskawica)
- print("Atak się udał. Zadałeś przeciwnikowi " + str(obrazenia_blyskawica) + " punktów obrażeń")
- pass # Koniec if akcja == 1
- else:
- # Gracz wybrał opcję nr 2
- zycie += wartosc_leczenia
- ile_do_leczenia = 3
- pass # Koniec else
- 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
- komunikaty_o_uniku = [
- "Atak przeciwnika się nie powiódł. Dokonałeś uniku!",
- "Doskonały blok, przeciwnik nie miał szans!",
- "Przeciwnik się potknął i nie wyprowadził ciosu!",
- "Alergia przeciwnika zmusiła go do kichnięcia przez co nie wyprowadził ciosu!"
- ]
- print(choice(komunikaty_o_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()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement