【问题标题】:How do I randomize images in Python and how to blit image on top of image?如何在 Python 中随机化图像以及如何在图像上添加图像?
【发布时间】:2020-11-23 04:53:34
【问题描述】:

我想解决 2 个问题:

1.) 如何在 Python 中随机化图像?我希望每次运行程序时都显示一个图像。这些是我的代码的一些 sn-ps,但说一些错误。路径是复制和粘贴的,所以我不太清楚为什么会出错。

import os
import random

path =r"D:\Files\Second Year Files\Advance Compprog\Final Project\Code Blocks\Images\Trivias"
files = os.listdir(path)
d = random.choice(files)
os.startfile(d)

FileNotFoundError: [WinError 2] 系统找不到指定的文件:'Trivia2.png'

我也尝试使用此代码,但没有任何显示:

import pygame
import os
import random

# Initialize the pygame
pygame.init()

screenHeight = 550
screenWidth = 1000
screen = pygame.display.set_mode((screenWidth, screenHeight))

Trivias = [pygame.image.load(os.path.join("Images/Trivias", "Trivia1.png")),
            pygame.image.load(os.path.join("Images/Trivias", "Trivia2.png")),
            pygame.image.load(os.path.join("Images/Trivias", "Trivia3.png"))]

trivia = random.choice(Trivias)
screen.blit(trivia, [0,0])

2.) 如何在另一张图片之上添加 blit 图像? 我试图在图像上对图像进行 blit,但是当我运行程序时,它要么会快速闪烁,要么会显示我用来 blit 的最后一个图像。如果我想对第一张图像进行 blit,那么在一段时间后,我想将它与另一张重叠(两个图像具有相同的大小并且将在相同的位置显示)。我该怎么做并设置时间间隔?我希望你能帮助我:(

  background_image = pygame.image.load(os.path.join("Images/Start", "Level1Lose.png"))
  screen.blit(background_image, [0, 0])
  pygame.display.update()
  hello_image = pygame.image.load(os.path.join("Images/Start", "hello.png"))
  screen.blit(hello_image, [0, 0])
  pygame.display.update()

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    问题1的答案:

    检查files 变量。这是一个列表。它可能是该目录中仅包含文件名的列表,我认为是这种情况。为了正常运行,它应该是文件路径列表,而不仅仅是文件名。

    您可以通过传递path+d 而不是仅传递d 来解决此问题

    同样的论点可以应用于尝试的情况。

    【讨论】:

    • 您好,我尝试过这样做,但是每当我运行程序时,我的计算机只会打开图像本身的文件。如何在 Python 的控制台中运行它?我希望它在控制台中运行而不是打开文件。谢谢这么多请帮助:
    • 控制台窗口无法显示图像。
    • 有什么方法可以随机化图像并在 pygame 中使用 screen.blit() 显示这些图像?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多