' NoneType'没有属性' colliderect'

时间:2016-01-30 22:23:48

标签: python pygame attributeerror nonetype

我的第一个问题和python中的begginer

我想制作简单的射击游戏(鸡入侵者类型)。应该“杀死”的矩形(敌人)和较小的矩形(弹药)列表碰撞中的敌人。我在屏幕上的随机位置创建了矩形列表。

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)

但我一直在

如果e.colliderect(a): AttributeError:' NoneType'对象没有属性' colliderect'

我正在研究“发明”和“#”;预订和复制我需要的代码部分,但我无法解决这个问题。我无法看到问题,因为我的两个列表都是由Rect对象组成的。 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

问题可能是因为您从.globl _addInts .align 2 _addInts: .cfi_startproc sub sp, sp, #16 str w0, [sp, #12] str w1, [sp, #8] add w0, w0, w1 add sp, sp, #16 vmul.f32 q14, q8, q8 // --- This is the NEON line ret .cfi_endproc 语句中使用的列表中删除了。

解决方案:创建包含未删除元素的新列表,然后将其分配给for

enemiesPygame个等级来保留Group

pygame.sprite.spritecollide(sprite, group, dokill, collided = None)

其中:

  

返回一个列表,其中包含与另一个Sprite相交的Group中的所有Sprite。通过比较每个Sprite的Sprite.rect属性来确定交集。

     

dokill论证是一个布尔。如果设置为True,则将从群组中删除所有与发生冲突的精灵