簡體   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