我有以下类别的卡:
class Card:
def __init__(self, number, position):
self.number = number
self.position = position * 50
self.rect = pg.Rect(self.position, 0, 50, 100)
def draw(self, surface):
pg.draw.rect(surface, green, (self.position, 0, 50, 100))
## pg.draw.rect(surface, green, self.rect)
我想并排创建 16 张不同的卡片,从 0 到 800,每张卡片的宽度= 50。他们的数字是 0 到 7,然后又是 0 到 7。对于这个问题我已经想出了一个解决方案,那就是:
cards = []
for n in range(16):
cards.append(Card(n%8, n))
然而,一路上出现的破损解决方案给我留下了未解答的问题。例如:
cards = [Card(n, 0) for n in range(8)] * 2
for n in range(16):
cards[n].position = n * 50
在这里,我意识到cards[0] is cards[8]回报True。结果是只有最后一半的卡片出现在屏幕上。显然,这与发生在以下情况的情况相同:
cards = [Card(n, 0) for n in range(8)]
cards.extend(cards)
但我想将第二行更改为:
cards.extend(cards[:])
可以解决制作副本而不是参考的问题,但它仍然不起作用。这就是我想要解释的事情。有没有一种简单的方法可以解决前两种情况中的副本与参考问题?
另一个问题是绘制方法的注释版本。在我使用的一些损坏的方法中,这个版本不起作用,因为它从不更新位置,位置总是卡在0。似乎在类之外,没有收到 的值,尽管我可以直接card.rect[0]在card.position内部self.position使用绘制方法。这里到底是怎么回事self.rect?
GCT1015
慕村9548890
相关分类