Я недавно выложил довольно много вопросов, и я думаю, что люди устали от меня, но я плохо программирую и пытаюсь написать игру для курсовых работ уровня A, поэтому мне нужна вся помощь, чтобы научиться язык. Во всяком случае, я покажу несколько соответствующих битов кода ниже для справки. Я использую all_targets
, потому что хочу добавить задержку, используя threshold
, чтобы они не появлялись одновременно. Я думаю, что это вызывает повторное добавление целей в группу спрайтов, но я не могу решить это. Я хочу, чтобы цели удалялись из target_sprites при попадании пули. Я пытался использовать логические значения, чтобы сделать так, чтобы if destroyed == True:
all_bullets.remove(item)
, но это, похоже, не работает. Любая помощь приветствуется.
class Target(pygame.sprite.Sprite):
def __init__(self, width, height, offset, threshold):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface([width, height])
self.image = target_img
self.rect = self.image.get_rect()
self.rect.center = (self.rect.x + 50, self.rect.y + offset)
self.threshold = threshold
target_sprites = pygame.sprite.Group()
target_1 = Target(100, 100, 100, 0)
target_2 = Target(100, 100, 300, 150)
target_3 = Target(100, 100, 200, 300)
target_4 = Target(100, 100, 100, 450)
target_5 = Target(100, 100, 400, 600)
target_6 = Target(100, 100, 250, 750)
#Function to add delay between targets spawning.
def target_delay():
global clock
clock += 1
for item in all_targets:
if clock >= item.threshold:
target_sprites.add(item)
#Function to make targets move each time screen refreshes.
def movement():
for item in target_sprites:
item.rect.x += 1
for item in all_bullets_keep:
if item['y']-30 < (target_1.rect.y) + 100 and item['y']+30 > target_1.rect.y:
if item['x']+10 > target_1.rect.x and item['x']-30 < (target_1.rect.x) + 100:
target_1.kill()
if item['y']-30 < (target_2.rect.y) + 100 and item['y']+30 > target_2.rect.y:
if item['x']+10 > target_2.rect.x and item['x']-30 < (target_2.rect.x) + 100:
target_2.kill()
if item['y']-30 < (target_3.rect.y) + 100 and item['y']+30 > target_3.rect.y:
if item['x']+10 > target_3.rect.x and item['x']-30 < (target_3.rect.x) + 100:
target_3.kill()
if item['y']-30 < (target_4.rect.y) + 100 and item['y']+30 > target_4.rect.y:
if item['x']+10 > target_4.rect.x and item['x']-30 < (target_4.rect.x) + 100:
target_4.kill()
if item['y']-30 < (target_5.rect.y) + 100 and item['y']+30 > target_5.rect.y:
if item['x']+10 > target_5.rect.x and item['x']-30 < (target_5.rect.x) + 100:
target_5.kill()
if item['y']-30 < (target_6.rect.y) + 100 and item['y']+30 > target_6.rect.y:
if item['x']+10 > target_6.rect.x and item['x']-30 < (target_6.rect.x) + 100:
target_6.kill()