我正在处理一个项目,我收到以下错误:builtins.AttributeError: 'str' object has no attribute 'intro_text'
这可能是一些愚蠢的事情,因为我对python仍然很陌生,但我不能为我的生活弄清楚。
主要功能如下:
def play():
world.load_tiles()
player = Player()
while player.is_alive() and not player.victory:
room = world.tile_at(player.x, player.y)
print(room.intro_text())
room.modify_player(player)
if player.is_alive() and not player.victory:
choose_action(room, player)
elif not player.is_alive():
print("Your journey has come to an early end!")
玩家类创建一个新的玩家对象,其中包含x和y位置,hp,gold和胜利布尔值。问题出现在print(room.intro_text())
的行上。在它之前的行中我们调用了world.tileat(),它看起来像这样:
def tile_at(x, y):
if x < 0 or y < 0:
return None
try:
return world_map[y][x]
except IndexError:
return None
这个问题的到来是因为我很难编写自己的引擎,并决定从另一个项目中借用一些代码,并用我自己的代码补充它。 x轴和y轴的位置非常复杂,我目前还没有达到足够的技能水平。
仅供参考,world
文件中的另一种方法是load_tiles()
,如下所示:
def load_tiles():
"""Parses a file that describes the world space into the _world object"""
with open('world/map.txt', 'r') as f:
rows = f.readlines()
x_max = len(rows[0].split('\t')) # Assumes all rows contain the same number of tabs
for y in range(len(rows)):
row = []
cols = rows[y].split('\t')
for x in range(x_max):
tile_name = cols[x].replace('\n', '')
if tile_name == 'startTile':
global start_tile_location
start_tile_location = (x, y)
#print(start_tile_location)
row.append(tile_name if tile_name else None)
world_map.append(row)
world_map
以空白列表开头,start_tile_location
的开头为None
。
整个项目都是here,如果您想真正帮助我并在您的计算机上运行它。这意味着要在linux上运行,但它应该适用于Windows。它需要的唯一模块是随机的,因为它创建了自己的类供使用。
谢谢,我真的被困在这里,感谢我能得到的所有帮助。