Python3:与游戏碰撞时从动态阵法中删除敌人

2024-06-09 05:49:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个侧滚射击游戏中的敌人(无人机)产卵不断在屏幕的右侧。最近创建的敌人被添加到一个列表drones每个敌人都朝屏幕左侧移动。一旦他们离开屏幕,他们就会从列表中删除

我还想在无人机与玩家相撞时移除它们。只要drones列表中有多个对象,下面的代码就可以正常工作,但是当列表只有一个项目(因此屏幕上有一个无人机)时,无人机不会在冲突时被删除

我不知道为什么第一个列表项不能被销毁

drones = []
class Drone
    #other call methods

    def hit(self):
        del drones[drones.index(self)]

def generate_enemy():
    global drones
    if len(drones) < 20:    
        if (random.randint(1,100) == 1):
            drones.append(Drone(screenWidth, random.randint(300,500)) 

def main():
    global drones
    while True:
       #main loop stuff happening
       if condition == True:
           generate_enemy():
       #main loop stuff happening
       if player and (len(drones) > 0):
           for i in range(len(drones)-1):
               if drones[i].hitbox.colliderect(player.hitbox):
                   drones[i].hit()
main()

Tags: self列表lenif屏幕maindefrandom