from random import randint, choice

class Postac:
    def __init__(self):
        self.nazwa = ''
        self.zycie = 1
        self.max_zycie = 1

    def atakuj(self, przeciwnik,):
        atak = randint(0,3)
        if atak == 0:
            print(f"{przeciwnik.nazwa} unika ataku {self.nazwa}")
        else:
            print(f"{self.nazwa} atakuje {przeciwnik.nazwa}, zadając {atak} obrażeń")
            przeciwnik.zycie -= atak
    
class Przeciwnik(Postac):
    def __init__(self, gracz):
        super().__init__()
        self.nazwa = choice(['froggit', 'whimsun', 'moldsmal', 'vegetoid', 'loox', 'migosp', 'napstablook', 'dummy', 'flowey', 'toriel', 'snowdrake', 'chilldrake', 'ice cap', 'gyftrot', 'jerry', 'doggo', 'dogamy', 'dogaressa', 'lesser dog', 'greater dog', 'mad mew mew', 'glyde', 'papyrus', 'aaron', 'woshua', 'temmie', 'shyren', 'moldbygg', 'mad dummy', 'glad dummy', 'undyne', 'undyne the undying', 'monster kid', 'gaster', 'vulkin', 'pyrope', 'tsunderplane', 'tsarderplane', 'mettaton', 'alphys', 'royal guard 01', 'royal guard 02', 'royal guard 03', 'royal guard 04', 'so sorry', 'muffet', 'final froggit', 'whimsalot', 'astigmatism', 'knightknight', 'madjick', 'mettaton ex', 'mettaton neo', 'nice cream guy', 'grillby', 'spiders', 'snowdin shopkeeper', 'snowdin innkeeper', 'gerson', 'burgerpants', 'bratty', 'catty', 'memory head', 'reaper bird', 'snowdrakes mom', 'lemon bread', 'endogeny', 'sans', 'asgore', 'omega flowey', 'asriel', 'asriel dreemurr', 'god of hyperdeath', 'lost toriel', 'lost papyrus', 'lost undyne', 'lost alphys', 'lost sans', 'lost asgore', 'moldessa', 'migospel', 'parsnik', 'annoying dog', 'decibat', 'micro froggit', 'penilla', 'flier', 'sweet corn', 'rorrim', 'crispy scroll', 'dalv', 'shuffler 1', 'shuffler 2', 'shuffler 3', 'frostermit', 'imsomnitot', 'know cone', 'trihecta', 'martlet', 'mall whale', 'mo', 'slurpy', 'honeydew shopkeeper', 'el bailador', 'starlo' 'ed', 'moray', 'ace', 'mooch', 'dunebud', 'sir slither', 'cactony', 'bowll', 'pedla', 'violetta', 'rosa', 'ceroba', 'chujin', 'kanako', 'dina', 'blackjack', 'sousborg', 'guardener', 'macro froggit', 'jandroid', 'goosic', 'telly-vis', 'zenith martlet', 'kitsune mask ceroba' ])
        self.życie = randint(1, gracz.zycie)

class Gracz(Postac):
    def __init__(self):
        super().__init__()
        self.zycie = 10
        self.max_zycie = 10
        self.nazwa = input("podaj nazwe gracza: ")
    def odpoczynek(self):
        self.zycie +=1
        if self.zycie > self.max_zycie:
            self.zycie == self.max_zycie
        print(f"{self.nazwa} odpoczywa, życie: {self.zycie}/ {self.max_zycie}")
    def walka(self, przeciwnik):
        walka = True
        while walka:
            print(f"zycie gracza: {self.zycie}")
            print(f"zycie {przeciwnik.nazwa}: {przeciwnik.zycie}")
            akcja_walki = input("Akcja (atak, uciekaj): ")
            if akcja_walki == "atak":
                self.atakuj(przeciwnik)
                if przeciwnik.zycie <= 0:
                    print(f'{self.nazwa} zabija {przeciwnik.nazwa}')
                    return True
                przeciwnik.atakuj(self)
            elif akcja_walki == "uciekaj":
                print(f'{self.nazwa} ucieka')
                przeciwnik.atakuj(self)
                walka = False
            else:
                print("nieznana akcja")

            if self.zycie <= 0:
                print(f"{self.nazwa} ginie")
                return False
        return True
gracz = Gracz()
gra = True
while gra:
    akcja = input('akcja (zwiedzaj, odpocznij): ')
    if akcja == 'zwiedzaj':
        if randint(0, 1) == 0:
            print(f'{gracz.nazwa} znalazł jaskinie')
        else:
            przeciwnik = Przeciwnik(gracz)
            print(f"{gracz.nazwa} natrawił na {przeciwnik.nazwa}")
            gra = gracz.walka(przeciwnik)
    elif akcja == "odpocznij":
        gracz.odpoczynek()
    else:
        print("nieznana akcja")

