首页 > 解决方案 > 列表中的每个 blitted 图像都会消失而不是保留在屏幕上。我想用图像填满整个屏幕,因为它在随机位置闪烁

问题描述

import pygame
import random
pygame.init()

screen = pygame.display.set_mode((476,800))
clock = pygame.time.Clock()
win = pygame.display.set_mode((500, 600))
pygame.display.set_caption("DOGGO GAME")
dogimg = pygame.image.load('dog.png')

*doglist 将包含图像矩形,以便多个图像/实体将填满屏幕

doglist = []
dogx = []
dogy = []

污点触发元素的创建(狗图像rect = dogimg)

BLOT = pygame.USEREVENT
pygame.time.set_timer(BLOT, 500)

drawdog 对 doglist 中的图像进行 blits

def drawdog(doglist):
    for dog in doglist:
        screen.blit(dogimg, new_dog)


run = True
while run:
    #pygame.time.delay(50)
    win.fill((0, 0, 0))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        if event.type == BLOT:
            
            dogimg = pygame.image.load('dog.png')
            dogranx = random.randint(50,200)
            dograny = random.randint(50,450)
            new_dog = dogimg.get_rect(midtop=(dogranx, dograny))
            doglist.append(new_dog)
            print(doglist)


    drawdog(doglist)


    pygame.display.update()
    clock.tick(1)


pygame.quit()

标签: listpygameblit

解决方案


我能够通过替换来纠正它:

for dog in doglist

for new_dog in doglist

在前者中,我使用的是扩展。我将其更改为附加并使用后一个代码,并且它起作用了。


推荐阅读