[英]Text RPG in python
main.py
import engine
engine.objects['key'] = "It's a key"
engine.main()
engine.py
# inventory = []
objects = {
}
def main():
while True:
choice = raw_input(">>: ")
command, obj = choice.split()
if command == 'examine':
if obj in objects:
print objects[obj]
else:
print 'joking right?'
else:
print 'joking right?'
當我輸入“檢查”時沒有第二個單詞,參數,它給了我一個錯誤。
>>: asdf
Traceback (most recent call last):
File "main.py", line 3, in <module>
engine.main()
File "C:\Users\Patrick\Documents\Programming\Game engine test\engine.py", line
11, in main
command, obj = choice.split()
ValueError: need more than 1 value to unpack
Press any key to continue . . .
我理解為什么,但我該如何解決?
所以我們可以從問題中消除raw_input()
,並將其歸結為以下幾行:
choice = 'examine'
result = choice.split() # result == ['examine']
command, obj = result # Boom.
split()
的返回值是一個列表。 如果只有一個單詞(用空格分隔),例如“examine”,則列表只包含一個元素。
然后,當你試圖將該列表解壓縮到command
和obj
,python說,“我不能那樣做。你期待兩個條目,但我只有一個。”
您需要做的是執行一些中間檢查:
args = choice.split()
if len(args) < 2:
print 'Invalid command.'
continue
command, obj = args
# ...
args = choice.split()
command = args[0]
#Branch according to command here
#Most likely you will want to separate them into functions
if command == 'examine':
if len(args) < 2:
print 'Missing argument'
else:
obj = args[1]
if obj in objects:
print objects[obj]
else:
print 'joking right?'
else:
print 'joking right?'
您也可以查看python標准庫中的cmd
模塊 。 您基本上可以使用do_<MYCOMMANDNAME>
函數創建一個對象,它將發出命令提示符並將第一個單詞作為command
查找,並查找相應的do_command
函數以使用其余參數執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.