我在这里的第一个问题是蟒蛇的乞丐
我想做简单的射击游戏(鸡入侵者类型)。长方形(敌人)和小矩形(弹药)名单,谁应该‘杀死’敌人的碰撞。我在屏幕上的任意位置上创建了矩形列表。
enemies = []
for i in range(ENEMYCOUNT):
enemySize = random.randint(ENEMYMINSIZE, ENEMYMAXSIZE)
newEnemy = pygame.Rect(random.randint(0, WINDOWWIDTH - enemySize),
random.randint(0, WINDOWWIDTH-200), enemySize, enemySize)
enemies.append(newEnemy)我的“弹药”是显示在鼠标点击上的看不见的矩形的列表,然后它们向上移动。
ammo = []
for i in range(1, 5):
ammo.append(pygame.Rect(0, 0, 0, 0))我做了单一敌人和单一弹药,它是按预期的工作。现在我想制造更多的敌人,并检查是否有敌人被弹药击中。
for e in enemies:
for a in ammo:
if e.colliderect(a):
enemies.remove(e)但我一直
if e.colliderect(a):AttributeError:'NoneType‘对象没有属性“对撞”
我正在学习从'inventwithpython‘的书和复制部分的代码,我需要,但我无法解决这个问题。我看不出问题所在,因为我的两个列表都是由Rect对象组成的。如能提供任何帮助,将不胜感激。
发布于 2016-01-30 22:55:03
问题可能是因为从for语句中使用的列表中删除。
解决方案:使用未移除的元素创建新列表,然后将其分配给enemies。
但是Pygame有Group类来保存Sprites和
Pygame.sprite.spritecollide(精灵,团体,死亡,碰撞=无)
其中:
返回一个列表,其中包含与另一个Sprite相交的组中的所有Sprite。通过比较每个Sprite的Sprite.rect属性来确定交集。 道奇的论点是个坏蛋。如果设置为True,则所有与碰撞的雪碧将从组中移除。
https://stackoverflow.com/questions/35107929
复制相似问题