コード例 #1
0
 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=" ")
コード例 #2
0
 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.')
コード例 #3
0
 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)
コード例 #4
0
    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}')
コード例 #5
0
    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
コード例 #6
0
    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)
コード例 #7
0
 def on_take(self):
     slow_print(f'You have picked up {self.description}')
コード例 #8
0
 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."
     )