リストのリストをマトリックス スタイルで格納するクラスがあり、[x,y] のようにインデックスを付けることができます。
今、私はこれらのセットを持っています:
test_dict = {1:"cow",2:"horse"}
randommap = mapArray(None, (20,20))
ランダム マップは 1 のリストで満たされているだけです。したがって、どのインデックスも 1 を返します。しかし、ここで迷ってしまいます。おそらく、辞書のしくみについての誤解が原因です。
test_dict[1]
それは明らかに「牛」を返し、
randommap[1,1] #or any two x,y values up to 20 for that matter
値は 1 です。
しかし、これはどうして私に重要なエラーを与えるのですか:
test_dict[randommap[1,1]]
単独で、そこにランダムマップをインデックス付けすると値1が得られるので、その1をtest_dictのインデックスとして指定して、「牛」を返すべきではありませんか?
更新: これらは、問題を引き起こしていると思われる 2 つの方法です。整数ではなく文字列を返しているようですが、2 つの違いをよく理解しているかどうかはわかりません。
def __str__(self):
return str(self.mapdata)
def __repr__(self):
return str(self.mapdata)
オーバーロードされた__getitem__
メソッドは次のとおりです。
def __getitem__(self, (x,y)):
#Just reverses it so it works intuitively and the array is
# indexed simply like map[x,y] instead of map[y][x]
return mapArray(self.mapdata[y][x])
申し訳ありませんが、フォーマットが少し台無しになっているようです。