def choose_main_actions(self) -> None: main_actions_names = ( "Kontynuuj historię", "Idź do zamku", "Ekwipunek", "Zagraj w Blackjack'a", ) main_actions = (self.continue_story, self.choose_castle, self.player.equipment.choose_main_action, Blackjack.main) question = "\nWybierz interakcje\n" while True: try: introduce_from_list(main_actions_names) chosen_action = choose_item(main_actions, question) if chosen_action is not None: try: chosen_action() except TypeError: chosen_action(self.player) else: print("\nPodana wartość jest nieprawidłowa!\n") except GameHasFinished as reason: print(reason) return None
def use_item_during_combat(self, player: 'Player') -> None: while True: potion_items = self.filter(ItemType.POTION) introduce_from_list(potion_items) question = "\nWybierz miskturę do użycia, lub naciśnij enter aby wyjść\n" chosen_item = choose_item(potion_items, question) if chosen_item is None: break self.remove_item(chosen_item) chosen_item.drink(player)
def _improve_weapon(self, player) -> None: while True: players_backpack_items = player.equipment.backpack.items introduce_from_list(players_backpack_items, space=True) print("\nKoszt ulepszenia broni " + str(self.IMPROVE_PRICE) + "\n") question = "\nPodaj numer przedmiotu, który chcesz naostrzyć, lub naciśnij enter aby wyjść\n" chosen_item = choose_item(players_backpack_items, question) if chosen_item is not None: if self._can_improve(player, chosen_item): player.equipment.gold.subtract(self.IMPROVE_PRICE) chosen_item.improve() else: print("\nNie można naostrzyć broni\n") else: break
def choose_interaction(self, player) -> None: actions = ( self._buy_items, self._sell_items, ) interactions_names = ( "Kup przedmiot", "Sprzedaj przedmiot", ) question = "\nWybierz interakcje, lub naciśnij enter, aby wyjść\n" while True: introduce_from_list(interactions_names) chosen_action = choose_item(actions, question) if chosen_action is not None: chosen_action(player) else: break
def create_character(self) -> None: chosen_name = input("\nWybierz imię swojej postaci\n") while True: try: print() classes_names = [ cls.CLASS_NAME.value.capitalize() for cls in self.AVAIBLE_CLASSES ] introduce_from_list(classes_names) chosen_character = input("\nWybierz klasę swojej postaci\n") self.player = self.AVAIBLE_CLASSES[int(chosen_character) - 1](chosen_name) self.add_locations(self.player) return except KeyError: print("\nPodana wartość jest nieprawidłowa\n")
def _sell_items(self, player: 'Player') -> None: while True: self._introduce_items(margin=self.MARGIN) players_backpack_items = player.equipment.backpack.items introduce_from_list(players_backpack_items, space=True) print(player.equipment.gold) question = "\nWybierz przedmiot który chcesz sprzedać, lub naciśnij enter aby wyjść\n" chosen_item = choose_item(players_backpack_items, question) if chosen_item is not None: if self._can_sell(chosen_item): players_backpack_items.remove(chosen_item) gold_from_item = floor(self.MARGIN * self._get_price(chosen_item)) player.equipment.gold.add(gold_from_item) else: print("\nNie handluje tym szajsem\n") else: break
def choose_interaction(self, player): actions = ( self._buy_items, self._sell_items, ) interactions_names = ( "Kup przedmiot", "Sprzedaj przedmiot", ) while True: introduce_from_list(interactions_names) chosen_action = choose_item(actions, "\nWybierz interakcje\n") if chosen_action is not None: chosen_action(player) else: break
def choose_castle(self) -> None: question = "\nWybierz lokacje\n" main_actions_names = ( "Idź do starego zamku", "Idź do nowego zamku", ) main_actions = (self.locations[0].visit_merchant, self.locations[1].visit_merchant) while True: try: introduce_from_list(main_actions_names) chosen_action = choose_item(main_actions, question) if chosen_action is not None: chosen_action() else: break except IndexError: print("\nPodana wartość jest nieprawidłowa!\n")
def visit_merchant(self) -> None: merchants: list = [ self.ARMOURER, self.BLACKSMITH, self.ENCHANTER, self.ALCHEMIST ] merchant_actions_names: list = [ "Idź do płatnerz", "Idź do kowala", "Idź do zaklinacza", "Idź do alchemika" ] if self.can_enter(): while True: introduce_from_list(merchant_actions_names) question = "\nWybierz, do kogo chcesz się wybrać, lub naciśnij enter, aby wyjść\n" chosen_merchant = choose_item(merchants, question) if chosen_merchant is not None: chosen_merchant.choose_interaction(self.player) else: return else: print(colored("\nMasz za niski poziom!\n", "red"))
def choose_interaction(self, player) -> None: actions = ( self._buy_items, self._sell_items, self._improve_weapon ) interactions_names: tuple = ( "Kup przedmiot", "Sprzedaj przedmiot", "Ulepsz przedmiot" ) interaction_question = "\nWybierz interakcje, jeśli chcesz wyjść naciśnij enter\n" while True: introduce_from_list(interactions_names) chosen_action = choose_item(actions, interaction_question) if chosen_action is not None: chosen_action(player) else: break