老实说,我不确定我是否以正确的方式攻击这个问题,但我使用networkx
制作了一张图表,以便在我正在制作的游戏中使用地图。游戏有效,但截至目前它还没有定位系统。我在一个类中创建了图形对象,我希望类单元继承图形' G'这样我就可以将它分配给map变量了。我终于得到它不发送错误,但是当我打印地图变量时,它不会打印图形。
我如何知道G是否被分配给地图变量,这是最好的方法吗?我愿意接受建议。
class Graph(BaseGameEntity):
def __index__(self):
G = nx.Graph()
G.add_edges_from([(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8),(6,9),(9,10),(10,11),
(11,12),(10,13),(13,14),(14,15),(15,16),(16,17),(15,18),(18,19),(19,20),
(18,21),(21,22),(22,23),(23,24)])
G.node[1]['building'] = 'Home'
G.node[12]['building'] = 'Store'
G.node[24]['building'] = 'Mine'
G.node[8]['building'] = 'Bank'
G.node[17]['building'] = 'Saloon'
G.node[20]['building'] = 'Jail'
G.node[2]['Mugger'] = 'Mean Mugger'
G.node[7]['Path'] = 'Rocky Path'
G.node[11]['Rock'] = 'Big Rock'
G.node[16]['Mugger'] = 'Nice Mugger'
G.node[23]['Path'] = 'Flooded Path'
G.node[3]['Surprise'] = 'Money'
G.node[4]['Rock'] = 'Small Rock'
G.node[5]['Path'] = 'Rocky Path'
G.node[6]['Path'] = 'Rocky Path'
G.node[9]['Surprise'] = 'Money'
G.node[10]['Surprise'] = 'Health'
G.node[13]['Path'] = 'Rocky Path'
G.node[14]['Path'] = 'Rocky Path'
G.node[13]['Rock'] = 'Medium Rock'
G.node[15]['Path'] = 'Rocky Path'
G.node[18]['Surprise'] = 'Money'
G.node[19]['Surprise'] = 'Health'
G.node[21]['Path'] = 'Smooth Path'
G.node[22]['Path'] = 'Rocky Path'
class Cell(Graph):
def __init__(self, game, objects, blocked, position, coords, map, graph):
super().__init__()
self.objects = {}
self.blocked = False
self.position = (0,0)
self.map = graph.G
print(map)
答案 0 :(得分:0)
我不确定你想做什么,但我在你的代码中看到了几个问题。
首先,您实现了方法__index__
,但在实践中很少有用例。即使你打算这样做,它也必须返回一个结果,但你没有使用return
语句。
假设您返回G
,它对您没有帮助,因为nx.Graph
不可清,而地图键必须是可清洗的。
我不知道如何解决这个问题,因为我不明白你的意思。
另一种可能性是你并不是要实现__index__
(一种改变[]
运算符的行为的模糊方法),而是__init__
(对象构造函数)。
在这种情况下,您必须将__index__
替换为__init__
,并将其G
分配给self
(例如self.G = G
功能)。