擅长:python、mysql、java
<p>一个更简单的方法是使用Sprite方法<code>kill()</code>,该方法将Sprite从它当前所在的所有<code>pygame.sprite.Group</code>中移除。</p>
<pre><code>def die(self):
if self.rect.x < 100:
self.kill()
</code></pre>
<p>在你的<code>update()</code>中调用<code>die()</code>将允许你检查是否要杀死你的精灵每个游戏循环,但是给定<code>die()</code>中的代码量,你只需将代码移动到<code>update()</code>中即可。根据您当前的代码,您的<code>EnemyList</code>已经是一个<code>pygame.sprite.Group</code>对象,因此不需要进行任何更改。</p>
<p>你现在的方法对我来说很难理解。你正在创建一个敌人,它检查是否所有的敌人(自身和列表中的另一个)都应该死亡。所以在你的游戏循环中,你从一个敌人那里调用这个方法来控制所有的敌人。换句话说,您正在创建具有不同职责的相同对象。根据经验:对象的方法应该只改变其自身的状态。</p>
<p>最后,<code>draw()</code>方法是不必要的,因为超类完全按照您的方式定义方法。所以删除你的将调用<code>draw()</code>的<code>pygame.sprite.Sprite</code>。</p>