首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'NoneType‘没有属性’对撞机‘

'NoneType‘没有属性’对撞机‘
EN

Stack Overflow用户
提问于 2016-01-30 22:23:47
回答 1查看 378关注 0票数 0

我在这里的第一个问题是蟒蛇的乞丐

我想做简单的射击游戏(鸡入侵者类型)。长方形(敌人)和小矩形(弹药)名单,谁应该‘杀死’敌人的碰撞。我在屏幕上的任意位置上创建了矩形列表。

代码语言:javascript
复制
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)

我的“弹药”是显示在鼠标点击上的看不见的矩形的列表,然后它们向上移动。

代码语言:javascript
复制
ammo = []
for i in range(1, 5):
    ammo.append(pygame.Rect(0, 0, 0, 0))

我做了单一敌人和单一弹药,它是按预期的工作。现在我想制造更多的敌人,并检查是否有敌人被弹药击中。

代码语言:javascript
复制
for e in enemies:
        for a in ammo:
            if e.colliderect(a):
                enemies.remove(e)

但我一直

if e.colliderect(a):AttributeError:'NoneType‘对象没有属性“对撞”

我正在学习从'inventwithpython‘的书和复制部分的代码,我需要,但我无法解决这个问题。我看不出问题所在,因为我的两个列表都是由Rect对象组成的。如能提供任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-01-30 22:55:03

问题可能是因为从for语句中使用的列表中删除。

解决方案:使用未移除的元素创建新列表,然后将其分配给enemies

但是PygameGroup类来保存Sprites

Pygame.sprite.spritecollide(精灵,团体,死亡,碰撞=无)

其中:

返回一个列表,其中包含与另一个Sprite相交的组中的所有Sprite。通过比较每个Sprite的Sprite.rect属性来确定交集。 道奇的论点是个坏蛋。如果设置为True,则所有与碰撞的雪碧将从组中移除

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35107929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档