我正在尝试在pygame中制作一个过马路的版本,并已经弄清楚了汽车和硬币的碰撞箱;然而,我试图做到这一点,以便每当头像与硬币碰撞时,它就会消失或以某种方式失去为用户评分加分的效果。
def pick_up_coin(self, coin):
coin_hitbox = pygame.Rect(self.avatar.x, self.avatar.y,
self.avatar.image.get_width(), self.avatar.image.get_height())
return coin_hitbox.colliderect(coin.x, coin.y, self.coin.image.get_width(), self.coin.image.get_height())
for j in range(len(self.coins)):
if self.pick_up_coin(self.coins[j]):
print("Score") and self.coins[j].kill()
问题是奇怪的
and
操作:
print("Score") and self.coins[j].kill()
print
的返回值为None
(对于A and B
,仅当B
计算结果为true时才计算A
项)。所以 self.coins[j].kill()
永远不会被执行。你必须把代码写成两行:
print("Score")
self.coins[j].kill()
请注意,实际上可以使用
or
而不是 and
。