Python 3.x Blit函数不用于显示图像

Python 3.x Blit函数不用于显示图像,python-3.x,pygame,blit,Python 3.x,Pygame,Blit,我目前一直在关注pygame上的一个视频,并创建了一个空间入侵者类型的游戏,我将为自己的游戏实现进行修改。然而,我已经到了一个部分,在那里你必须使用blit函数来显示游戏背景的图像,而这对我来说不起作用。一旦程序被执行,窗口将被启动,但不会显示背景图像。我相信我已经正确加载了图像,并进入了将使用blit函数显示背景图像的功能。请让我知道,如果我忽略了什么,任何帮助将不胜感激 import pygame import os import time import random #Setting

我目前一直在关注pygame上的一个视频,并创建了一个空间入侵者类型的游戏,我将为自己的游戏实现进行修改。然而,我已经到了一个部分,在那里你必须使用blit函数来显示游戏背景的图像,而这对我来说不起作用。一旦程序被执行,窗口将被启动,但不会显示背景图像。我相信我已经正确加载了图像,并进入了将使用blit函数显示背景图像的功能。请让我知道,如果我忽略了什么,任何帮助将不胜感激

import pygame
import os
import time
import random


#Setting window frame
WIDTH, HEIGHT = 1000, 600
WINDOW = pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption("Space Battle")

#Image Loading

RED_SPACESHIP = pygame.image.load(os.path.join("assets", "pixel_ship_red_small.png"))
GREEN_SPACESHIP = pygame.image.load(os.path.join("assets", "pixel_ship_green_small.png"))
BLUE_SPACESHIP = pygame.image.load(os.path.join("assets", "pixel_ship_blue_small.png"))

#Ship for player
YELLOW_SPACESHIP = pygame.image.load(os.path.join("assets", "pixel_ship_yellow.png"))

#Laser loading
YELLOW_LASER = pygame.image.load(os.path.join("assets", "pixel_laser_yellow.png"))
RED_LASER = pygame.image.load(os.path.join("assets", "pixel_laser_red.png"))
GREEN_LASER = pygame.image.load(os.path.join("assets", "pixel_laser_green.png"))
BLUE_LASER = pygame.image.load(os.path.join("assets", "pixel_laser_blue.png"))
下面是加载后台图像的代码

#Loading Backgrnd Img

BG = pygame.image.load(os.path.abspath("assets/background-black.png"))
formatedBG = pygame.transform.scale(BG, (WIDTH,HEIGHT))
下面是主要功能和后台显示处理的代码

def window_Redraw():
    WINDOW.blit(formatedBG, (0,0))
    pygame.display.update() 


def main():
    run = True
    FPS = 60
    clock = pygame.time.Clock()
    
    while run:
        clock.tick(FPS)
        window_Redraw()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False

main()
以下是执行后窗口的屏幕截图:

你的例子要复杂得多。红色宇宙飞船,蓝色宇宙飞船。。。在这种情况下,etc是不相关的,您应该删除它们

您只显示一个黑色背景-没有其他内容,因此应该显示它。为了检查是否一切正常,请从以下示例开始:

import pygame

# initialize the pygame module
pygame.init()

WIDTH, HEIGHT = 1000, 600
WINDOW = pygame.display.set_mode((WIDTH, HEIGHT))

formatedBG = pygame.Surface((WIDTH, HEIGHT))
formatedBG.fill(pygame.color.Color(255, 0, 0, 0))

# BG = pygame.image.load(os.path.abspath("assets/background-black.png"))
# formatedBG = pygame.transform.scale(BG, (WIDTH, HEIGHT))


run = True
while run:
    WINDOW.blit(formatedBG, (0, 0))
    pygame.display.update()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

然后取消对背景的注释,检查背景是否变为黑色。

您的示例要复杂得多。红色宇宙飞船,蓝色宇宙飞船。。。在这种情况下,etc是不相关的,您应该删除它们

您只显示一个黑色背景-没有其他内容,因此应该显示它。为了检查是否一切正常,请从以下示例开始:

import pygame

# initialize the pygame module
pygame.init()

WIDTH, HEIGHT = 1000, 600
WINDOW = pygame.display.set_mode((WIDTH, HEIGHT))

formatedBG = pygame.Surface((WIDTH, HEIGHT))
formatedBG.fill(pygame.color.Color(255, 0, 0, 0))

# BG = pygame.image.load(os.path.abspath("assets/background-black.png"))
# formatedBG = pygame.transform.scale(BG, (WIDTH, HEIGHT))


run = True
while run:
    WINDOW.blit(formatedBG, (0, 0))
    pygame.display.update()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

然后取消背景注释,检查背景是否变为黑色。

我以前的pygame版本是1.9.4,这导致我最初使用blit显示背景图像时出现问题,以及窗口无法使用填充功能显示任何颜色的问题。我通过运行命令'pip install==2.0.0.dev4'来升级pygame,从而解决了这些问题。现在一切似乎都正常工作。

我以前的pygame版本是1.9.4,这导致了我最初使用blit显示背景图像的问题,以及窗口无法使用填充功能显示任何颜色的问题。我通过运行命令'pip install==2.0.0.dev4'来升级pygame,从而解决了这些问题。现在一切似乎都正常工作。

您能提供完整的代码让我们了解发生了什么吗。窗口是如何初始化的?你说“这对我不起作用”是什么意思?是否提出了例外情况?还是您没有看到任何结果?@qouify我添加了程序的开头以显示窗口的初始化。没有提出任何例外。执行后,将显示一个没有任何图像设置的窗口,只是一个空白的默认窗口。请提供完整的代码以了解发生了什么。窗口是如何初始化的?你说“这对我不起作用”是什么意思?是否提出了例外情况?还是您没有看到任何结果?@qouify我添加了程序的开头以显示窗口的初始化。没有提出任何例外。执行后,将显示一个没有任何图像集的窗口,只有一个空白的默认窗口。Hi Benjamin、redspaceship…等已加载,以便在脚本的稍后点使用,但这是我停止的地方,因为我被卡住了。之前有人要求查看窗口是如何初始化的,所以我提供了代码的开头,这就是为什么会显示这些常量。其次,我认为我加载的背景图片的名称可能会误导你,因为它实际上不是一个坚实的黑色背景。我继续测试了你的代码(仅仅是因为你的辛勤工作和努力),但仍然没有运气,开始认为这是一个更大的问题。“没有运气”意味着什么?红色渲染正确吗?我想那些“redspaceship等”可能有用,但在本例中它们不是必需的,因此可能会删除它们以提供一个最低限度的示例。“不走运”意味着在运行代码后,它不会给我任何与以前不同的结果。在执行过程中,窗口根本没有填充颜色。取消背景注释也不会显示图像。窗口的背景是白色还是透明?此外,我刚刚意识到,在开始时没有
pygame.init()
方法。你现在可以试试吗?我继续在原始帖子上贴了一个窗口截图,以澄清执行过程中发生了什么。嗨,本杰明,红色宇宙飞船等等都被加载到脚本中,以便在稍后的时候使用,但是这是我停下来的地方,因为我被卡住了。之前有人要求查看窗口是如何初始化的,所以我提供了代码的开头,这就是为什么会显示这些常量。其次,我认为我加载的背景图片的名称可能会误导你,因为它实际上不是一个坚实的黑色背景。我继续测试了你的代码(仅仅是因为你的辛勤工作和努力),但仍然没有运气,开始认为这是一个更大的问题。“没有运气”意味着什么?红色渲染正确吗?我想那些“redspaceship等”可能有用,但在本例中它们不是必需的,因此可能会删除它们以提供一个最低限度的示例。“不走运”意味着在运行代码后,它不会给我任何与以前不同的结果。在执行过程中,窗口根本没有填充颜色。取消背景注释也不会显示图像。窗口的背景是白色还是透明?此外,我刚刚意识到,在开始时没有
pygame.init()
方法。你现在可以试试吗?我接着在原始帖子上贴了一个窗口截图,以澄清执行过程中发生了什么。