繁体   English   中英

pygame中的敌人

[英]Enemies in pygame

嘿,我正在pygame中制作这个太空射击游戏,想一次生成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)

使用此代码,我的屏幕上充满了敌人(绿色矩形)。 如果敌人离开屏幕或死亡,我有什么办法可以一次产生一定数量的敌人,并继续产生更多的敌人?

开始使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM