Почему append () называется каждым циклом? - PullRequest
0 голосов
/ 09 октября 2019

У меня есть класс плиток:

class Tile:
    tile_pref = {
        "sprites": []
    }
    pos = Vector2(vector_zero)

    def img(self, x, y, tilemap, t):
        return self.tile_pref["sprites"][0]

    def __init__(self, img, pos):
        self.tile_pref["sprites"].append(img)
        self.pos = pos

И еще одна обрезанная часть: src - допустимый путь строки, spacing, tile_size, offset - векторы с .xи .y. self.__tiles__ - это массив.

img = pyglet.image.load(src)
for i in range((img.height - offset.x) // (spacing.x + tile_size.x) + 1):
  for j in range((img.width - offset.y) // (spacing.y + tile_size.y) + 1):
                a = offset.x + (tile_size.x + spacing.x) * j
                b = offset.y + (tile_size.y + spacing.y) * i
                self.__tiles__.append(Tile(img.get_region(a, b, tile_size.x, tile_size.y), Vector2(i, j)))

Основная проблема в том, что длина tile_pref["sprites"] не 1, но равна всему количеству плиток. Как я могу это исправить?


Думаю, когда я звоню img.get_region, мне возвращается ссылка на него. Таким образом, он вызывает append каждый раз, когда меняется ссылка.
...