有没有办法将同一张图片以不同的大小显示多次?

2024-09-30 18:32:34 发布

您现在位置:Python中文网/ 问答频道 /正文

image1 = pygame.image.load('Insel.jpg')
image1 = pygame.transform.scale(image1, (200, 150))

image2 = pygame.image.load('Insel.jpg')
image2 = pygame.transform.scale(image2, (250, 200))

image3 = pygame.image.load('Insel.jpg')
image3 = pygame.transform.scale(image1, (150, 100))

multi_Images = []
multi_Images_pos = []

image1 = pygame.image.load('Insel.jpg')

for i in range(5):
    multi_Images.append(image1)
    pos = [random.randint(0, 480+1), random.randint(0, 480+1)]
    multi_Images_pos.append(pos)

这是我的代码soo-far,我想随机创建同一个图像多次和3个不同的大小,但这代码不工作。我不想反复加载图片。我对编程很陌生,但我知道这看起来不太好


Tags: posimagetransformloadrandommultipygamejpg
2条回答

I don't want to load the picture over and over again

仅加载一次图像并创建多个缩放图像:

image = pygame.image.load('Insel.jpg')

image1 = pygame.transform.scale(image, (200, 150))
image2 = pygame.transform.scale(image, (250, 200))
image3 = pygame.transform.scale(image, (150, 100))

我建议将图像存储在列表中,而不是3个单独的变量:

image = pygame.image.load('Insel.jpg')
image_list = [
    pygame.transform.scale(image, (200, 150))
    pygame.transform.scale(image, (250, 200))
    pygame.transform.scale(image, (150, 100))]

最后,您应该将代码放入函数中:

def load_and_scale(imagename):
    image = pygame.image.load(imagename)
    return [
        pygame.transform.scale(image, (200, 150))
        pygame.transform.scale(image, (250, 200))
        pygame.transform.scale(image, (150, 100))]
image_list = load_and_scale('Insel.jpg')

使用^{}从列表中选择随机图像:

image_list = load_and_scale('Insel.jpg')

multi_Images = []
for i in range(5):
    image = random.choice(image_list)
    pos = [random.randint(0, 480+1), random.randint(0, 480+1)]
    multi_Images.append((image, pos)) 

可以使用循环绘制图像:

for image, pos in multi_Images:
    screen.blit(image, pos)

如果你是编程新手,为什么要从制作游戏开始呢?先学习基础知识。这就像是医生的第一堂课,那就是脑外科手术

multi_Images.append(image1)。您的问题是您一直在添加相同的精确图像。
还有,为什么image1 = pygame.image.load('Insel.jpg')会发生两次

我不熟悉pygame,但这可能会满足您的需要

image_source = []
img = pygame.image.load('Insel.jpg')

image_source.append(pygame.transform.scale(img, (200, 150)))
image_source.append(pygame.transform.scale(img, (250, 200)))
image_source.append(pygame.transform.scale(img, (150, 100)))

multi_Images = []
multi_Images_pos = []

for i in range(5):
    choice = random.randint(0, 2)
    multi_Images.append(image_source[choice])
    pos = [random.randint(0, 480+1), random.randint(0, 480+1)]
    multi_Images_pos.append(pos)

相关问题 更多 >