by Anonymous » 25 Jul 2025, 15:59
Ich habe es mit [:] in Listen versucht, funktioniert aber immer noch nicht
Code: Select all
for bullet in self.bullets[:]:
bullet.update(self.bullet_speed, self.bullets)
for obstacle in game.obstacle_manager.obstacles[:]:
if bullet.rect.colliderect(obstacle.rect):
game.obstacle_manager.obstacles.remove(obstacle)
self.bullets.remove(bullet)
bullet_flag = True
break
if bullet_flag:
break
Es wird das Fehler valueError: list.remove (x): x nicht in list
in self.bullets.remove (Bullet)
Ich suche nach Colision zwischen Kugeln und Hindernissen, wenn das Bullet geschieht.
Code: Select all
def update(self, game):
bullet_flag = False
if game.player.type == WEAPON_TYPE:
if self.bullet_step%5 == 0:
self.bullets.append(Bullet(game.player))
self.bullet_step += 1
for bullet in self.bullets[:]:
bullet.update(self.bullet_speed, self.bullets)
for obstacle in game.obstacle_manager.obstacles[:]:
if bullet.rect.colliderect(obstacle.rect):
game.obstacle_manager.obstacles.remove(obstacle)
self.bullets.remove(bullet)
bullet_flag = True
break
if bullet_flag:
break
< /code>
Es scheint, dass alle Antwortpunkte [:] < /code> Ich hoffe, Sie können mir helfen, da dies nicht funktioniert hat oder ich es nicht richtig mache.self.bullets.remove(bullet)
< /code>
Ich mache es im Selbst.self.bullets[:]
< /code>
Die Lösung wird also darin bestehen, eine Variable vor dem für < /p>
zu erstellenaux = self.bullets[:]
< /code>
Dann modifizieren Sie es in der for und zuweisen das Original der neuen Kugelnliste < /p>
aux.remove(bullet)
self.bullets = aux
< /code>
Ich konnte ehrlich gesagt nicht darüber nachdenken, deshalb dachte ich, ich könnte es trotzdem fragen, danke an alle.for bullet in aux:
bullet.update(self.bullet_speed, self.bullets)
for obstacle in game.obstacle_manager.obstacles[:]:
if bullet.rect.colliderect(obstacle.rect):
game.obstacle_manager.obstacles.remove(obstacle)
aux.remove(bullet)
bullet_flag = True
break
if bullet_flag:
break
self.bullets = aux
Ich habe es mit [:] in Listen versucht, funktioniert aber immer noch nicht
[code]for bullet in self.bullets[:]:
bullet.update(self.bullet_speed, self.bullets)
for obstacle in game.obstacle_manager.obstacles[:]:
if bullet.rect.colliderect(obstacle.rect):
game.obstacle_manager.obstacles.remove(obstacle)
self.bullets.remove(bullet)
bullet_flag = True
break
if bullet_flag:
break
[/code]
Es wird das Fehler valueError: list.remove (x): x nicht in list
in self.bullets.remove (Bullet)
Ich suche nach Colision zwischen Kugeln und Hindernissen, wenn das Bullet geschieht.[code]def update(self, game):
bullet_flag = False
if game.player.type == WEAPON_TYPE:
if self.bullet_step%5 == 0:
self.bullets.append(Bullet(game.player))
self.bullet_step += 1
for bullet in self.bullets[:]:
bullet.update(self.bullet_speed, self.bullets)
for obstacle in game.obstacle_manager.obstacles[:]:
if bullet.rect.colliderect(obstacle.rect):
game.obstacle_manager.obstacles.remove(obstacle)
self.bullets.remove(bullet)
bullet_flag = True
break
if bullet_flag:
break
< /code>
Es scheint, dass alle Antwortpunkte [:] < /code> Ich hoffe, Sie können mir helfen, da dies nicht funktioniert hat oder ich es nicht richtig mache.self.bullets.remove(bullet)
< /code>
Ich mache es im Selbst.self.bullets[:]
< /code>
Die Lösung wird also darin bestehen, eine Variable vor dem für < /p>
zu erstellenaux = self.bullets[:]
< /code>
Dann modifizieren Sie es in der for und zuweisen das Original der neuen Kugelnliste < /p>
aux.remove(bullet)
self.bullets = aux
< /code>
Ich konnte ehrlich gesagt nicht darüber nachdenken, deshalb dachte ich, ich könnte es trotzdem fragen, danke an alle.for bullet in aux:
bullet.update(self.bullet_speed, self.bullets)
for obstacle in game.obstacle_manager.obstacles[:]:
if bullet.rect.colliderect(obstacle.rect):
game.obstacle_manager.obstacles.remove(obstacle)
aux.remove(bullet)
bullet_flag = True
break
if bullet_flag:
break
self.bullets = aux
[/code]