我有这个项目,我必须制作一个基于文本的基本迷宫/冒险游戏。这是我的代码到目前为止,但它很奇怪。我希望它能够随时退出并且当输入不在选项中时显示“请选择可用方向”。我知道我的代码错了,但我不知道该怎么做。有人可以帮我吗?谢谢!
顺便说一句,我使用此链接作为指南http://programarcadegames.com/index.php?chapter=lab_adventure
maze_list = []
maze = ['Available Directions: East', None, 1, None, None]
maze_list.append(maze)
maze = ['Available Directions: East, South', None, 2, 3, 0]
maze_list.append(maze)
maze = ['Available Directions: West', None, None, None, 1]
maze_list.append(maze)
maze = ['Available Directions: North, East', 1, 4, None, None]
maze_list.append(maze)
maze = ['Available Directions West, South', None, None, 5, 3]
maze_list.append(maze)
current_tile = 0
print(maze_list[0])
done = False
while done != True:
print('')
print(maze_list[current_tile][0]) # available directions
move = raw_input('Which direction will you take?' )
if move == 'East' or 'east' or 'EAST':
next_tile = maze_list[current_tile][2]
current_tile = next_tile
print('')
print(maze_list[current_tile][0])
move = raw_input('Which direction will you take? ')
if move == 'South' or 'south' or 'SOUTH':
next_tile = maze_list[current_tile][3]
current_tile = next_tile
print('')
print(maze_list[current_tile][0])
move = raw_input('Which direction will you take? ')
if move == 'East' or 'east' or 'EAST':
next_tile = maze_list[current_tile][2]
current_tile = next_tile
print('')
print(maze_list[current_tile][0])
move = raw_input('Which direction will you take? ')
if move == 'South' or 'south' or 'SOUTH':
next_tile = maze_list[current_tile][3]
current_tile = next_tile
print('Nice')
if move == 'Quit' or 'quit' or 'QUIT':
print('Better luck next time. \nGoodbye.')
elif move == 'West' or 'west' or 'WEST':
next_tile = maze_list[4]
current_tile = next_tile
else:
print('Please choose an available direction')
elif move == 'Quit' or 'quit' or 'QUIT':
print('Better luck next time. \nGoodbye.')
elif move == 'North' or 'north' or 'NORTH':
next_tile = maze_list[1]
current_tile = next_tile
else:
print('Please choose an available direction')
elif move == 'Quit' or 'quit' or 'QUIT':
print('Better luck next time. \nGoodbye.')
elif move == 'East' or 'east' or 'EAST':
next_tile = maze_list[current_tile][2]
current_tile = next_tile
else:
print('Please choose an available direction')
elif move == 'Quit' or 'quit' or 'QUIT':
print('Better luck next time. \nGoodbye.')
else:
print('Please choose an available direction.')
答案 0 :(得分:0)
我开始尝试这是一件有趣的事情。 (以下这可能不是答案,但无论如何......发布它)
但是,让我告诉你一些事情:指南是非常低的"质量(是的,我可能太苛刻,但嘿!只是一个意见)。即使认为这是初学者编程,我也没有看到不引入词典和其他常用工具的理由。
我在10点或11点停了下来,继续我到目前为止所做的事情。 基本上我的目标是根据你给我的网站上的数字移动到厨房。如果您有兴趣了解更多或有任何问题,我很乐意回答。
祝你好运:)import sys
room_list = []
#2,3,4
room_list.append(["Bedroom 2, You can go north and east.",3,1,None,None])
room_list.append(["South Hall, ...",4,2,None,0])
room_list.append(["Dining Room, ...",5,None,None,1])
room_list.append(["Bedroom 1, ...",None,4,0,None])
room_list.append(["North Hall, ...",6,5,1,3])
room_list.append(["Kitchen, ...",None,None,2,4])
room_list.append(["Balcony, ...",None,None,4,None])
#5
current_room = 0
#6
#print(room_list)
#7
#print(room_list[0])
#8
#print(room_list[current_room])
#9
#print(room_list[current_room][0])
#10
done = False
#10++ Here I started writing my own code... :)
directions = {"North":1,"East":2,"South":3,"West":4}
#11
while not done:
print("\n"+room_list[current_room][0])
q = "0"
valid_choice = False
while not valid_choice:
while not directions.get(q.title()):
if q != "0":
print("Try again...")
q = raw_input("Where do you want to go? (North,East,South or West) Or Quit (Q)")
if q.title() == "Q":
print("You pressed Q. Exit")
sys.exit()
next_move = directions.get(q.title())
next_room = room_list[current_room][next_move]
if next_room:
valid_choice = True
current_room = next_room
else:
print("You can't go that way")
q = "0" # reset question
if current_room == 5:
print("\nYou are in: "+room_list[5][0])
done = True
问:嗨,谢谢!如果你不介意我问,那该怎么办? directions = {" North":1," East":2," South":3," West":4}和 directions.get(q.title())吗?
directions = {" North":1," East":2," South":3," West":4}在这种情况下是一本字典。它包含键(北,东,南,西)及其对应的值(1,2,3,4)。因此,当您键入方向[" North"]时,您实际上会得到值1.
然而,有另一种获取值的方法,那就是使用directions.get()函数。当您这样做且密钥不存在时无将被返回。例如。 directions.get(" monkey")= None但是directions.get(" East")= 2.当我们使用while not循环时,这非常有用。在用户输入有效的内容之前,q将为None并重复该问题。
最后q是从问题返回的字符串。 str.title()函数返回第一个字母大写的字符串。例如。 " hellOOO" .title()=" Hellooo"这就是为什么你可以输入" easT"并且仍然得到东方"这是使direction.get(" East")工作所需的价值。
问:如果我想添加,还有一个问题(对不起,我很陌生) 退出功能,我会在哪里插入?我试着把它放在线上 在else语句之前,但我得到错误。
我补充说:
import sys
和
if q.title() == "Q":
print("You pressed Q. Exit")
sys.exit()