Враги в пигме - PullRequest
       6

Враги в пигме

0 голосов
/ 03 сентября 2018

Эй, я делаю эту космическую стрелялку в пигме и хочу порождать 10 врагов одновременно. Вот код, который я использовал:

    blocks.append([random.randrange(0, display_width),0])


    for block in blocks:
        pygame.draw.rect(game_display, green, (block[0],block[1], 30, 40))


    for leng in range(len(blocks)):
        blocks[leng][1]+=10


        for block in blocks:
            if block[1]<0:
                blocks.remove(block)

Используя этот код, мой экран наполняется врагами (зеленые линии). Есть ли способ, которым я могу порождать определенное количество врагов за раз и продолжать порождать больше, если враг уходит с экрана или умирает?

1 Ответ

0 голосов
/ 03 сентября 2018

Вместо Списка, представляющего ваших врагов, начните использовать класс Rect (на самом деле вы должны использовать класс Sprite, но по одному шагу за раз).

Так что вместо

blocks.append([random.randrange(0, display_width),0])


for block in blocks:
    pygame.draw.rect(game_display, green, (block[0],block[1], 30, 40))

мы можем написать

blocks.append(pygame.Rect(random.randrange(0, display_width), 0, 30, 40))

for block in blocks:
    pygame.draw.rect(game_display, green, block)

и вместо

for leng in range(len(blocks)):
    blocks[leng][1]+=10


    for block in blocks:
        if block[1]<0:
            blocks.remove(block)

мы можем использовать (посмотрите, насколько яснее становится код):

for block in blocks[:]:
    block.move_ip(0, 10)
    if not game_display.get_rect().contains(block):
        blocks.remove(block)
        blocks.append(pygame.Rect(random.randrange(0, display_width), 0, 30, 40))

, который также добавит нового врага, когда он покинет экран. Мы также можем просто сбросить его позицию, например так:

for block in blocks:
    block.move_ip(0, 10)
    if not game_display.get_rect().contains(block):
        block.x = random.randrange(0, display_width)

Итак, когда вы хотите, чтобы появился новый прямоугольник, просто позвоните

blocks.append(pygame.Rect(random.randrange(0, display_width), 0, 30, 40))

, который вы, возможно, захотите поместить в функцию, или лучше использовать класс Sprite вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...