嘿,大家好,我正在为一个班级构建一个基于文本的游戏,在那里我在房间之间移动,并试图收集所有的物品,而不必进入房间,在这种情况下,记录执行人员,我只是有问题直接访问该项目,以便我可以把它加在我的库存清单上...
这是我的字典:
rooms = {
'Lobby':{'East': 'Bar'},
'Roof':{'South': 'Bar', 'East': 'Stage', 'Item': 'Steel guitar'},
'Bar':{'West': 'Lobby', 'North': 'Roof', 'East': 'Bathroom', 'South': 'Basement', 'Item': 'Keyboard'},
'Basement':{'North': 'Bar', 'East': 'Studio', 'Item': 'Drums'},
'Stage':{'West': 'Roof', 'Item': 'Microphone'},
'Soundcheck':{'South': 'Bathroom', 'Item': 'Bass Guitar'},
'Bathroom':{'North': 'Soundcheck', 'West': 'Bar', 'Item': 'Electric Guitar'},
'Studio': {'West': 'Basement', 'Item': 'Record Executive'}
}
这是我的移动代码:
while gameOver != True:
playerStats(currentRoom, inventory, rooms)
# currentRoom
playerMove = input('Enter your move:\n')
try:
currentRoom = rooms[currentRoom][playerMove]
except Exception:
print('Invalid move')
continue
我从大堂向东移动,我现在的房间像它应该的那样变成了酒吧,但是我不知道如何去里面的“项目”属性,这样我就可以把“键盘”添加到我的库存清单中...任何帮助都将不胜感激!!谢谢你们
就像这个命令
##################################################################################################
您可以尝试将文件室中的项目附加到变量(库存)中,最好是一个列表(或一个集合,如果满足您的要求)
inventory = []
for i in rooms:
for j in i:
if j == 'Item':
inventory.append(rooms[i][j])
现在它应该看起来像这样:
inventory = []
gameOver = False
rooms = {
'Lobby':{'East': 'Bar'},
'Roof':{'South': 'Bar', 'East': 'Stage', 'Item': 'Steel guitar'},
'Bar':{'West': 'Lobby', 'North': 'Roof', 'East': 'Bathroom', 'South': 'Basement', 'Item': 'Keyboard'},
'Basement':{'North': 'Bar', 'East': 'Studio', 'Item': 'Drums'},
'Stage':{'West': 'Roof', 'Item': 'Microphone'},
'Soundcheck':{'South': 'Bathroom', 'Item': 'Bass Guitar'},
'Bathroom':{'North': 'Soundcheck', 'West': 'Bar', 'Item': 'Electric Guitar'},
'Studio': {'West': 'Basement', 'Item': 'Record Executive'}
}
while not gameOver:
playerStats(currentRoom, inventory, rooms)
# currentRoom
playerMove = input('\n Enter your move: ')
if playerMove == 'pick' or playerMove == 'acquire' or playerMove == 'get':
# add to inventory if exists
for i in rooms:
for j in i:
if j == 'Item':
inventory.append(rooms[i][j])
else:
print('nothing to pick')
else:
try:
currentRoom = rooms[currentRoom][playerMove]
except Exception:
print('Invalid move')
continue
编辑:
此外,您现在应该从文件室中删除该项目,因为它现在已被获取--
(正如@Addlestrop在其回答中指出的那样)
for i in rooms:
for j in i:
if j == 'Item':
inventory.append(rooms[i][j])
del rooms[i][j]
# copy item to inventory and delete from the room
else:
print('nothing to pick')
索引你想要的字典
currentRoom['Item']
inventory.append(currentRoom['Item'])
通过将其放在移动代码之后,可以从新房间而不是现有房间获取项目。
有些房间可能没有物品,所以您可以这样做:
try:
inventory.append(currentRoom['Item'])
except KeyError:
pass
这可以防止在您搬进没有物品的房间时出错。
此外,您可能希望在取走物品时将其从房间中移除。所以你能做到。
try:
inventory.append(currentRoom['Item'])
del currentRoom['Item']
except KeyError:
pass
del
从字典中删除密钥
顺便说一下,在你的动作代码中,你也应该改变
except Exception:
到
except KeyError:
因此,如果存在不同的异常(例如,您按ctrl-C),则它不会捕获它。
我对编程游戏相当陌生;我已经3/4完成了,我有一个关于我制作的一个基于文本的小游戏的问题。。。所以在这个游戏中,我的
我想解析一个。属性文件的键和值放入python字典。这个我正在解析的属性文件使用以下语法(键和值是示例): 因此,每个值对应一个键,该键由一个或多个级别除以周期组成。目标是创建一个Python字典,其中每个键都是一个包含其值和子键的字典。字典应该是递归可写的,因此每个级别都应该遵循相同的结构。 上一个示例应生成以下类型的词典: 我用python中的以下算法循环它: 生成的字典(outputDket
我试图在webGL中构建我的游戏,但我得到了这个错误 找不到文件“C:\users----\OneDrive\Documents\Endless\Runner\Temp\StagingArea\Data\Native\Build.bc” 我对unity和stackoverflow很陌生,所以不要对我太苛刻。
我试图制作一个简单的基于文本的游戏,在这个游戏中,你在一个由“#”组成的网格周围移动“@”,并试图找到出口。我已经改变了代码,使我更容易使网格更大或更小,而无需添加或删除大量代码,它一直给我这样的输出: 我不知道这是怎么回事!只有一个“@”应该出现:(我只是python的新手,所以如果您有任何改进的建议,请不要犹豫,然后发布它们!提前感谢,
我需要一个基于文本的python游戏的帮助,我已经完成了大部分工作,我可以在所有3个房间之间移动,顶部有“大厅”,然后往南走“卧室”往东走“地窖”我可以往回走,所以往西走“卧室”向北走,最后回到大厅。 问题是,如果我在大厅里输入东,它会跳到地窖,而不是说无效移动,那里有一面墙。我想做的是 显示玩家当前所在房间的输出。决策分支告诉游戏如何处理不同的命令。命令可以是在房间之间移动(如向北、向南、向东或
您好,我是新来的编码和创建一个基于文本的游戏在python中。我正在写代码从一个房间搬到另一个房间。我需要一些人帮我清理目前为止所做的事情。我运行了一个即时反馈程序,得到了以下提示,但不确定如何纠正: 大厅字符串是主字典中的一个关键字。修改代码,使其不是主字典中的关键字。 它说它不能分类我的代码(不确定那是什么意思) 将多个打印命令合并到一个函数中 使用非复杂条件使条件更简单 更好地练习在True