Problem
When bullet collide with the enemy most times few of other enemies turns invsible for 0.05 seconds (blinks). Well I know why it happends, but I have no idea how to fix it.
Code
Here is my enemy damage code:
for e in range(len(enemy.x)):
angle = math.atan2(player.y - enemy.y[e], player.x - enemy.x[e])
enemy.vel[e] = [math.cos(angle) * 2, math.sin(angle) * 2]
enemy.x[e] += enemy.vel[e][0]
enemy.y[e] += enemy.vel[e][1]
rect = pygame.draw.rect(win, (255, 0, 0), (enemy.x[e], enemy.y[e], 40, 40))
if rect.collidelistall(bullet.rect):
enemy.healt[e] -= 1
if enemy.healt[e] <= 0:
del enemy.x[e]
del enemy.y[e]
del enemy.t[e]
del enemy.vel[e]
del enemy.healt[e]
del bullet.x[rect.collidelistall(bullet.rect)[0]]
del bullet.y[rect.collidelistall(bullet.rect)[0]]
del bullet.vel[rect.collidelistall(bullet.rect)[0]]
del bullet.dmg[rect.collidelistall(bullet.rect)[0]]
break
Why enemy blinks
Enemy blinks because when one enemy gets attacked it needs to be breaked out of loop, even when there is a few enemies left to blit.
Why I need break out of loop
Well if didn't do that I will get Index
error, when enemy is destoyed. It happens because when an enemy is destroyed the whole list gets smaller.
Thanks for your help!