def show_inventory(self): slow_print('Inventory: ') for i, x in enumerate(self.inventory): if i == len(self.inventory) - 1: print(x.name) else: print(f'{x.name},', end=" ")
def drop_item(self, item_name): try: item = next(x for x in self.inventory if x.name == item_name) self.inventory = [x for x in self.inventory if x.name != item_name] self.current_room.add_items(item) except StopIteration: slow_print(f'{item_name} is not in your inventory.')
def move(self, direction): err_msg = "\nYou can't move that direction! Choose a different direction.\n" try: next_room = getattr(self.current_room, f'{direction}_to') self.current_room = next_room except AttributeError: slow_print(err_msg)
def grab_item(self, item_name): try: item = next(x for x in self.current_room.items if x.name == item_name) item.on_take() self.inventory.append(item) self.current_room.remove_item(item) except StopIteration: slow_print(f'Current room does not have {item_name}')
def get_input(self): error_message = "Error: Enter a direction (N, S, E, W)" player_input = input("\n\n: ").split() inputs = [x.lower() for x in player_input] if inputs[0] not in commands: slow_print(error_message) elif len(inputs) > 1: if inputs[1] in items: return inputs #check if action input if len(player_input) > 1: if inputs[0] in commands and inputs[1] in items: return inputs else: slow_print(error_message) return inputs
def start_game(self): self.playing = True self.get_new_player() while self.playing: room = self.player.current_room slow_print(f'Current Room: {room.name}', f'{room.description}', newline=True) slow_print(f'Available Items: ', newline=True) for i, x in enumerate(room.items): if i == len(room.items) - 1: slow_print(x.name, newline=False) else: slow_print(f'{x.name}, ', newline=False) #get player's next move new_input = self.get_input() #dispatch next move if new_input[0] == "q": self.playing = False else: self.player.perform_action(*new_input)
def on_take(self): slow_print(f'You have picked up {self.description}')
def display_directions(self): slow_print( f"Welcome {self.player.name}. You can select your next move by entering 'N', 'S', 'E', or 'W'. Enter 'q' to quit game or 'h' for help." )