如何解决基于文本的库存系统,字典访问
我在我正在制作的基于文本的冒险游戏中试图找出这个库存系统时遇到了一堵砖墙。
我遇到的问题是开发一种将物品从房间库存移动到玩家库存的方法,我想在此过程中我创建了一些关键错误。我试图通过创建独立于字典的清单来纠正代码,但它似乎比不使用更实用。
这是我目前的代码:
def ShowInstructions():
#print the main menu and commands
print("College Text Adventure Game")
print("Collect all 6 of your missing school items across campus in order to take notes in class and get an A,or fail the class.")
print("Move commands: go South,go North,go East,go West")
print("Add to Inventory: get 'item name'")
def Main():
rooms = { # Creating a dictionary for the rooms,linking them to one another according to the layout
'Dorm Room' : { 'name' : 'Dorm Room','item' : '','east' : 'Common Room'},'Common Room' : { 'name' : 'Common Room','item' : 'backpack','east' : 'Campus Store','west' : 'Dorm Room','north' : 'Library','south' : 'Book Store' },'Library' : { 'name' : 'Library','item' : 'Notepad','south' : 'Common Room','east' : 'Study Room'},'Study Room' : { 'name' : 'Study Room','item' : 'pen','west' : 'Library'},'Campus Store' : { 'name' : 'Campus Store','item' : 'laptop','west' : 'Common Room','north' : 'Coffee Shop'},'Coffee Shop' : { 'name' : 'Coffee Shop','item' : 'coffee','south' : 'Campus Store'},'Book Store' : { 'name' : 'Book Store','item' : 'textbook','north' : 'Common Room','east' : 'Lecture Hall'},'Lecture Hall' : { 'name' : 'Lecture Hall','east' : 'Book Store'}
}
directions = ['north','south','east','west']
current_room = rooms['Dorm Room']
Inventory = []
while True: # Gameplay Loop
if current_room == rooms['Lecture Hall'] and len(Inventory) > 5:
print('You have passed the class by taking good notes and gotten an A. Congratulations!')
elif current_room == rooms['Lecture Hall'] and len(Inventory) < 6:
print('You got to class,but forgot one or more of your required items. You fail to take good grades and fail the class.')
print('You lose!')
break
# display current location
print('You are in the {}.'.format(current_room['name']))
print('Inventory:',Inventory)
print('Room Inventory: {}'.format(current_room['item']))
# get user input
command = input( "What do you do? \n" )
command.split()
# movement
if command[0] in directions:
if command[0] in current_room:
current_room = rooms[current_room[command[0]]]
else:
# bad movement
print('You cannot go that way.')
# quit game
elif command[0] == ['exit','quit']:
current_room = 'exit'
print('Thanks for playing!')
break
#get item
elif command[0] == 'get':
Inventory.append(rooms['item'])
# bad command
else:
print('Invalid input')
ShowInstructions()
Main()
解决方法
我从一个比我更擅长 Python 的朋友那里得到了一些帮助,我们修复了很多我使用不正确的方法,以及一些语法或字典错误。
def ShowInstructions():
# print the main menu and commands
print("College Text Adventure Game")
print(
"Collect all 6 of your missing school items across campus in order to take notes in class and get an A,or fail the class.")
print("Move commands: go South,go North,go East,go West")
print("Add to Inventory: get 'item name'")
def Main():
rooms = { # Creating a dictionary for the rooms,linking them to one another according to the layout
'Dorm Room': {'name': 'Dorm Room','east': 'Common Room'},'Common Room': {'name': 'Common Room','item': 'backpack','east': 'Campus Store','west': 'Dorm Room','north': 'Library','south': 'Book Store'},'Library': {'name': 'Library','item': 'Notepad','south': 'Common Room','east': 'Study Room'},'Study Room': {'name': 'Study Room','item': 'pen','west': 'Library'},'Campus Store': {'name': 'Campus Store','item': 'laptop','west': 'Common Room','north': 'Coffee Shop'},'Coffee Shop': {'name': 'Coffee Shop','item': 'coffee','south': 'Campus Store'},'Book Store': {'name': 'Book Store','item': 'textbook','north': 'Common Room','east': 'Lecture Hall'},'Lecture Hall': {'name': 'Lecture Hall','east': 'Book Store'}
}
directions = ['north','south','east','west']
current_room = 'Dorm Room'
Inventory = []
ShowInstructions()
while True: # Gameplay Loop
if current_room == 'Lecture Hall':
if len(Inventory) == 6:
print('You have passed the class by taking good notes and gotten an A. Congratulations!')
break
else:
print(
'You got to class,but forgot one or more of your required items. You fail to take good grades and fail the class.')
print('You lose!')
break
# display current location
print()
print('You are in the {}.'.format(current_room))
print('Inventory:',Inventory)
room_dict = rooms[current_room]
if "item" in room_dict:
item = room_dict["item"]
if item not in Inventory:
print("You see a",item)
# get user input
command = input("What do you do? ").split()
# movement
if command[0] == 'go':
if command[1] in directions:
room_dict = rooms[current_room]
if command[1] in room_dict:
current_room = room_dict[command[1]]
else:
# bad movement
print('You cannot go that way.')
else:
print("Invalid entry")
# quit game
elif command[0] in ['exit','quit']:
print('Thanks for playing!')
break
# get item
elif command[0] == 'get':
if command[1] == item:
Inventory.append(item)
print(item,"collected")
else:
print('Invalid command')
# bad command
else:
print('Invalid input')
Main()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。