所以我正在制作一个游戏,我有一个元组字典,其中包含游戏场上物体的坐标,如下所示(例如):
location = {player : (1, 4), monster : (3, 2), escape : (4, 0)}
Run Code Online (Sandbox Code Playgroud)
稍后在我的代码中,我想更改坐标以便更容易理解区域.第一个定义部分是相应的字母,然后是第二个数字,看起来像这样:玩家将在B4中,怪物在C2中,依此类推.右上角的"区域"由元组(4,4)表示,左下角的"区域"由元组(0,0)表示.我唯一能想到的可能是这样的:
location = {player : (1, 4), monster : (3, 2), escape : (4, 0)}
letters = ["A", "B", "C", "D", "E"]
playerArea = "{}{}".format(letters[int(location[player[0]])+1], location[player[1]])
Run Code Online (Sandbox Code Playgroud)
简而言之,它没有用.我认为问题在于从字典中解压缩元组并将其用作从列表字母中获取字母的数字.抱歉这是令人困惑的,我会尽力回答你的所有问题.
我有下一个错误:
Traceback (most recent call last):
File "DungeonGame.py", line 92, in <module>
possible = possibleMoves(locations["player"])
File "DungeonGame.py", line 65, in possibleMoves
if player[0][0] == 0:
TypeError: 'int' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def possibleMoves(player):
options = ["RIGHT", "LEFT", "UP", "DOWN"]
if player[0][0] == 0:
options.remove("LEFT")
elif player[0][0] == 4:
options.remove("RIGHT")
elif player[0][1] == 0:
options.remove("DOWN")
elif player[0][1] == 4:
options.remove("UP")
return options
...
locations = {"monster" : (1, 2), "door" : (3, 2), "player" : (4, 1)}
possible = possibleMoves(locations["player"]) …
Run Code Online (Sandbox Code Playgroud)