Esempio n. 1
0
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)
Esempio n. 2
0
#! 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)
Esempio n. 3
0
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