#!/usr/bin/python3 # Jaskyna osudu v1.1 # Kamil Dubík, 13.December 2020 # Very easy dungeon crawler, cca 2h to complete programming import random OKGREEN = '\033[92m' OKYELLOW = '\033[93m' OKBLUE = '\033[94m' OKPURPLE = '\033[95m' OKCYAN = '\033[96m' OKGRAY = '\033[98m' OKWHITE = '\033[97m' ENDC = '\033[0m' class Hra(): level = 1 # startovaci level zivoty = 3 sila = 1 obrana = 1 zlato = 0 items = [] items.append('Dýka') schody_dole = False schody_hore = False win_game = False # Vyhrali sme hru??? item_names = ["Sada na mapovanie", "Pakľúče", \ "Diamant", "Čarovná píšťala", "Elixír", "Ľahká zbroj", \ "Ťažká zbroj", "Plátová zbroj", "Dýka", "Meč", "Obojručný meč", \ "Sekera", "Rapier", "Oštep", "Luk a šípy", "Strieborný meč", \ "Čarovný náramok"] def check_item(self, item_name): res = False if item_name in self.items: res=True return res def boj(self): res = True # by default, hrac vyhra suboj max_prisera = self.level + 1 if max_prisera>7: max_prisera=7 prisera = random.randint(1,max_prisera) # print(f"Prisera {prisera}, max> {max_prisera}") if prisera==1: pname="Krysa obrovská" sila = 1 obrana = 0 zivoty = 1 if prisera==2: pname="Jašter" sila = 1 obrana = 1 zivoty = 1 if prisera==3: pname="Zlodej" sila = 2 obrana = 1 zivoty = 1 if prisera==4: pname="Kostlivec" sila = 1 obrana = 3 zivoty = 2 if prisera==5: pname="Zombík" sila = 2 obrana = 3 zivoty = 2 if prisera==6: pname="Vlkodlak" sila = 4 obrana = 3 zivoty = 1 if prisera==7: pname="Hydra" sila = 5 obrana = 3 zivoty = 3 print(f"Je tu {OKCYAN}{pname}{ENDC}") aktivna_zbran = "Ruky" z = input("Aku zbran chces pouzit (napis meno)? ") if self.check_item(z): aktivna_zbran = z else: print(f"Nemas {z}!") print(f"Aktivna zbran: {aktivna_zbran}") konec_boja = False while konec_boja!=True: i = input("Co urobis (a-utok, e-pouzi elixir, u-utek)? ") if i=='u': konec_boja = True if i=='e': if self.check_item("Elixír"): print("Pijes liecivy elixir...") self.zivoty += 2 print(f"Teraz mas {self.zivoty} zivotov.") else: print("Ziaden elixir nemas!") if i=='a': uc = random.randint(1,5) + self.sila oc = random.randint(1,5) + obrana dmg = 1 # kolko zivotov zoberie dana zbran, standardne if self.check_item("Čarovná píšťala"): print("Mas carovnu pistalu! Tvoje utocne cislo sa zvysuje o +1!") uc+=1 if aktivna_zbran=="Dýka": uc +=1 if aktivna_zbran=="Meč": uc +=2 dmg +=1 if aktivna_zbran=="Strieborný meč": uc +=2 dmg +=1 if aktivna_zbran=="Rapier": uc +=1 if aktivna_zbran=="Luk a šípy": uc +=1 if aktivna_zbran=="Oštep": uc +=2 if aktivna_zbran=="Sekera": uc +=1 dmg +=3 if aktivna_zbran=="Obojručný meč": uc +=2 dmg +=2 print(f"Utocis [{aktivna_zbran}] (uc:{uc} vs oc:{oc}, dmg: {dmg})") if uc>oc: print("Zranil si nepriatela!") zivoty -= dmg if zivoty<=0: print(f"{pname} zahynul!") konec_boja = True else: # Utoci nepriatel uc = random.randint(1,5) + sila oc = random.randint(1,5) + self.obrana if self.check_item("Čarovný náramok"): print("Mas carovny naramok! Tvoje obranne cislo sa zvysuje o +1!") oc+=1 print(f"Utoci {pname} (uc:{uc} vs oc:{oc})") if uc>oc: print("Zranil ta!") zbroj_sanca = 0 znicenie_zbroje_sanca = 0 zname = "" if self.check_item("Plátová zbroj"): zbroj_sanca = 70 znicenie_zbroje_sanca = 10 zname = "Plátová zbroj" elif self.check_item("Ťažká zbroj"): zbroj_sanca = 50 znicenie_zbroje_sanca = 15 zname = "Ťažká zbroj" elif self.check_item("Ľahká zbroj"): zbroj_sanca = 35 znicenie_zbroje_sanca = 25 zname = "Ľahká zbroj" if zbroj_sanca>0: print(f"Mas zbroj - {zname}") hod = random.randint(1,100) if hod1: # Je tu schodiskte nahor? test = random.randint(1,100) if self.check_item("Sada na mapovanie"): test-=10 if test<15: print('Su tu schody veduce do vyssieho podlazia!') self.schody_hore = True # Je tu carovny naramok - konec hry? if self.level>4: # Je tu schodiskte nahor? test = random.randint(1,100) if test<10: print('Carovny naramok! Podarilo sa ti splnit ulohu!') print(f' - okrem toho mas {self.zlato} minci zlata!') if self.check_item('Diamant'): print(' - taktiez mas diamant!') self.win_game = True def ukaz_batoh(self): print("\nObsah tvojho batoha:") for itm in self.items: print(itm) def ukaz_stav(self): print(f"Nachadzas sa na {OKPURPLE}{self.level}{ENDC} poschodi.") print(f"Tvoja sila: {OKPURPLE}{self.sila}{ENDC}") print(f"Tvoja obrana: {OKPURPLE}{self.obrana}{ENDC}") print(f"Zivoty: {OKPURPLE}{self.zivoty}{ENDC}") print(f"Zlato: {OKPURPLE}{self.zlato}{ENDC}") def zvys_uroven(self): upgrade = random.randint(1,3) if upgrade==1: self.sila +=1 print("Postupujes o úroveň! Citis sa silnejsie...") if upgrade==2: self.obrana +=1 print("Postupujes o úroveň! Citis sa obratnejsie...") if upgrade==3: self.zivoty +=1 print("Postupujes o úroveň! Citis sa velmi dobre, zdravo...") def start(self): konec = False self.generuj_miestnost() while konec!=True: if not self.win_game: i = input(f"{OKYELLOW}Co urobis{ENDC} > ") if i=="dole": if self.schody_dole: self.level += 1 self.zvys_uroven() print(f"Vstupujes do {self.level} podlazia...") self.generuj_miestnost() if i=="hore": if self.schody_hore: self.level -= 1 print(f"Vstupujes do {self.level} podlazia...") self.generuj_miestnost() if i=="d": self.generuj_miestnost() if i=="b": self.ukaz_batoh() if i=="stav": self.ukaz_stav() if i=="k": konec = True else: print("Koniec hry - podarilo sa ti vyhrat!") konec = True def intro(self): print("Jaskyna v tmavej hore, v1.1") print("Kamil Dubik (c) 2020") print("\nKralovska garda ta vyslala do hôr na daleko na severe,") print("vysetrit istú záhadu. Banditi ukradli zvláštny náramok,") print("patriaci vojvodkyni z Aldisu a ukryli sa s ním kdesi") print("v tej jaskyni.") print("Na mieste ťa však niekto prepadol! Nič si nepamätáš!") print("No a o nejaký čas... sa preberáš sa uprostred jaskyne...") input("\nStlač ENTER") self.start() hra = Hra() hra.intro()