import inventory def add_to_inventory(inventory, added_items) : # ここにコードを書きます。 for s in added_items : inventory.setdefault(s,0) print(inventory) inventory[s] = inventory[s] + 1 return inventory inv = {'金賃' : 42, 'ロープ': 1} dragon_loot = ['金賃', '手裏剣', '金賃', '金賃', 'ルビー'] inv = add_to_inventory(inv, dragon_loot) inventory.display_inventory(inv)
#! python3 # -*- coding: utf-8 -*- # 演習プロジェクト 5.6.2 from inventory import display_inventory def add_to_inventory(inventory, added_items): for item in added_items: inventory.setdefault(item, 0) inventory[item] += 1 return inventory inv = {'金貨': 42, 'ロープ': 1} dragon_loot = ['金貨', '手裏剣', '金貨', '金貨', 'ルビー'] inv = add_to_inventory(inv, dragon_loot) display_inventory(inv)
def on_turn(player): key = libtcod.console_wait_for_keypress(True) # exit the game if key.vk == libtcod.KEY_ESCAPE: if config.QUICK_START: raise game.SetState('quit') elif ask_confirmation(player, 'Are you sure you want to quit?'): if ask_confirmation(player, 'Save the game? Your old save will be lost.'): raise game.SetState(game.save_game) else: raise game.SetState('quit') else: return False # Move, attack, or interact with a feature elif key.vk in DIRECTION_KEYS: dx, dy = DIRECTION_KEYS[key.vk] i, j = player.x + dx, player.y + dy feature = player.map.feature_at(i, j) actor = player.map.actor_at(i, j) if player.map.can_place_actor(i, j): player.move_to(i, j) return True elif actor and actor.faction in ['enemy', 'neutral']: return player.melee_attack(actor) else: return feature.interact(player) # Do nothing for a turn elif key.c == ord('.') or key.vk == libtcod.KEY_KP5: player.energy = min(player.energy + 1, player.max_energy) return True # Pick up an item elif key.c == ord('g'): item = player.map.item_at(player.x, player.y) if item is None: messages.Basic('There is nothing to pick up here.', '?') return False elif len(player.inventory) >= player.inventory_size: messages.Basic("You can't pick up the {:s}; your inventory is full.".format(item.name), '?', item) return False else: player.inventory.add(item) player.map.items.remove(item) item.x, item.y, item.map = None, None, None # if/when npcs can pick up items, generalize this message messages.Basic('You pick up the {:s}.'.format(item.name), player, item) return True # Open the inventory elif key.c == ord('i'): return display_inventory(player) # Close a door elif key.c == ord('c'): can_close = [] for (dx, dy) in ADJACENT: feature = player.map.feature_at(player.x + dx, player.y + dy) if feature.is_door and feature.open: can_close.append((dx, dy)) if len(can_close) == 0: messages.Basic('There is nothing to close here.', '?') return False else: choice = ask_which_direction(player, 'Close in what direction?', can_close) if choice is not None: return player.map.feature_at(player.x + choice[0], player.y + choice[1]).interact(player) elif key.c == ord('>'): feature = player.map.feature_at(player.x, player.y) if feature.is_stairs: raise game.SetState(game.change_level) else: messages.Basic("There are no stairs here.", '?') return False # Look at the map elif key.c == ord('l'): look(player) return False # Show the help menu elif key.c == ord('?'): display_help() return False # Show the message log elif key.c == ord('m'): display_message_log(player) return False # Save a screenshot elif key.c == ord('P'): pic = libtcod.image_from_console(0) libtcod.image_save(pic, 'screenshots/{}.bmp'.format(time_as_string(file_safe = True))) messages.Basic('Screenshot saved.', '?') return False elif key.c == ord('D') and config.DEBUG_KEYS: debug(player) return False