我的第一个问题和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对象组成的。 任何帮助将不胜感激
答案 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
但enemies
有Pygame
个等级来保留Group
和
pygame.sprite.spritecollide(sprite, group, dokill, collided = None)
其中:
返回一个列表,其中包含与另一个Sprite相交的Group中的所有Sprite。通过比较每个Sprite的Sprite.rect属性来确定交集。
dokill论证是一个布尔。如果设置为True,则将从群组中删除所有与发生冲突的精灵。