我对python有点陌生,在我的课堂上做了一个基于文本的游戏,这个游戏可以从一个房间移动到另一个房间,有北-南-东和西。除第一个房间外,所有房间都有玩家必须拾取的物品。移动命令为“移动”方向,获取项目的命令为“获取”项目。我已经设置好,每个房间都有一个字典和一个嵌套字典,与相邻房间和每个房间中的项目相关。这是我目前的工作代码。
def show_instructions():
print('Collect 8 items to win the game and defeat the beast')
print('Move Commands: move North, move South, move West, move East, or Exit to leave the game')
print('Pickup items: get item, ex. get sword\n')
#Dictionary for rooms and Items
def main():
rooms = {
'Shed' : {'West': 'Well Room', 'item' : 'well room West of you'},
'Well Room' : {'South' : 'Sewers', 'East' : 'Shed', 'item' : 'Healing-Potion'},
'Sewers' : {'East' : 'Crawl Space','North' :'Well Room', 'item' : 'Armor'},
'Crawl Space' : {'East' : 'Cavern', 'West' : 'Sewers','item' : 'Sword'},
'Cavern' : {'South' : 'Dungeon Hall', 'West' : 'Crawl Space', 'item' : 'Shield'},
'Dungeon Hall' : {'East' : 'Hidden Room', 'West' : 'War Room', 'North' : 'Cavern', 'item' : 'Sword-Enchantment'},
'Hidden Room' : {'South' : 'Treasure Room', 'East' : 'Dungeon Hall', 'item' : 'Flame-Resistance-Potion'},
'War Room' : {'West' : 'Laboratory', 'East' : 'Dungeon Hall', 'item' : 'Armor-Enchantment'},
'Laboratory' : {'South' : 'Treasure Room', 'East' : 'War Room', 'Item' : 'Enchantment-Table'},
'Treasure Room' : {'item' : 'Dragon'}
}
#Helps with Decision branching
directions = ['North','South','East','West']
#Sets the player in the first room
currentroom = 'Shed'
inventory = []
print(show_instructions())
while currentroom != 'Exit':
def showStatus():
print('You are in the', currentroom)
print('Inventory:', inventory)
print('You see a', rooms[currentroom]['item'])
showStatus()
#Win Condition checkpoint
if currentroom == 'Treasure Room':
if len(inventory) < 8:
print('You get eaten by the Dragon')
break
else:
print('You slay the dragon and return to your boss victorious')
#input from player
c = input('What would you like to do?:\n')
#exit condition
if c == 'Exit':
currentroom = 'Exit'
#split to have tokens dignify if move or get item
tokens = c.split()
if tokens[0] == 'move' or 'Move':
if tokens[1] in directions:
try:
currentroom = rooms[currentroom][tokens[1]]
except KeyError:
print('You see a Wall')
else:
print('Not a Valid Direction')
elif tokens[0] == 'get' or 'Get':
if tokens[1] == rooms[currentroom]['item']:
inventory.append(rooms[currentroom]['item'])
else:
print('Not a valid Item')
else:
print('Not a Valid Entry')
print(main())
我遇到的问题是,我是否输入get或mobile,它会启动if令牌[0]==移动或移动行。所以输入只获取打印“不有效的方向”。有人能帮我看看我是怎么搞砸陈述的吗?一天结束时,我希望我的移动从一个房间到另一个房间,打印房间里的物品,能够将物品添加到库存中,然后移动到下一个房间。一旦收集了8件物品,我想赢得游戏,一旦到达宝藏室。
你的帖子格式错误,所以你真的应该试着清理一下。
一般来说,您的问题是语法问题。这一行:
if tokens[0] == 'move' or 'Move':
总是将求值为True,因为或
在
=
之后求值,并且非空字符串的逻辑值为True
修复它的方法如下:
if tokens[0] == 'move' or tokens[0] == 'Move':
或
if tokens[0] in ('move', 'Move'):
还有其他的解决方案,但上述任何一种都可以。
一旦这个问题得到解决,我希望你们会发现更多。尽你最大的努力解决这些问题,必要时再提出新的问题。但一定要先解决问题,并确保发布格式正确、完整的代码。
所以读了一些书之后我看到了 不是使用可选选项的首选方式(http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html).但如果我有这样一个if语句: 这是最好的方法还是有更推荐的方法?
如何编写一个mockito测试用例,如果...其他语句也包括异常测试,我对此很困惑。UserService是一个接口 用户工厂。JAVA 用户服务(接口) 这是我的测试,但它不正确。。。
我让用户在一个< code>int[]中输入5个int的列表。然后,我用一个简单的< code>for语句遍历int[]中的这些int。我声明了一个名为“evens”的< code>int变量如果int[]中的数字at ,< code > evens ; 现在我有了 语句: 问题是,无论偶数的值是多少,都会调用它。它可以是5或3,但仍会被调用。我最近一直在使用C#,但这是简单的Java。 整机代码
我似乎不知道为什么我的代码会以我看到的方式运行。我错过了什么? 我希望看到偶数或奇数取决于用户输入的数字?
在我的大学课程中,我们必须创建一个基于文本的游戏,在这个游戏中,你可以进出房间收集物品。我仍在尝试掌握python和一般编码的诀窍,因此我一直在努力完成这个项目。在大多数情况下,我的代码可以正常工作,但我可以多次添加一个项目。如何将其添加到库存中,然后从文件室中删除,以防止用户多次添加?
我需要一个基于文本的python游戏的帮助,我已经完成了大部分工作,我可以在所有3个房间之间移动,顶部有“大厅”,然后往南走“卧室”往东走“地窖”我可以往回走,所以往西走“卧室”向北走,最后回到大厅。 问题是,如果我在大厅里输入东,它会跳到地窖,而不是说无效移动,那里有一面墙。我想做的是 显示玩家当前所在房间的输出。决策分支告诉游戏如何处理不同的命令。命令可以是在房间之间移动(如向北、向南、向东或