Во-первых: я бы отдельно перемещал и проверял столкновения, отдельно проверял then
добавлял новых врагов и отдельно рисовал врагов.
Во-вторых: я бы использовал список then
, чтобы хранить время для всех удаленных врагов.
В-третьих: в python нецелесообразно удалять элементы из списка, который вы повторяете, потому что он может пропускать некоторые элементы (он не будет проверять элемент, который был после удаленного элемента, поскольку он перемещается вместо удаленного элемента). Популярный метод - добавлять в новые элементы списка, которые вы хотите сохранить, и заменять список после for
-l oop
then = [] # create at start of game
# --- only move and check collisions ---
enemies_keep = []
for item in enemies:
item.move()
if item.x <= -20:
p.hp -= 1
then.append(time.time())
else:
enemies_keep.append(item)
enemies = enemies_keep
# --- only add new enemies ---
now = time.time()
then_keep = []
for item in then:
if now - item >= 4: # Calculate time difference and if it is less than 4
for i in range(random.randint(1, 2)): # spawn more enemies
enemies.append(Enemy())
else:
then_keep.append(item)
then = then_keep
# --- only draw ---
for item in enemies:
item.draw()