我正在创建一个侧滚射击游戏中的敌人(无人机)产卵不断在屏幕的右侧。最近创建的敌人被添加到一个列表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()
在pygame中这样做的“正确”方法是让类从^{} 继承,然后使用^{} 而不是简单的列表来存储敌人,并使用^{} 进行冲突检测,将
dokill
参数设置为True
相关问题 更多 >
编程相关推荐