羁绊的小水门 2023-06-18 18:33 采纳率: 20%
浏览 9

我的pygame粘贴不出来图片?我后面也加了update啊

请问为什么我的pygame粘贴不出来图片?我后面也加了update啊
以下是main.py文件:

import pygame
from plane import *
import time

pygame.init()

width = 450
height = 500
bg = pygame.image.load("img/bg.png")

screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("飞机大战")
screen.blit(bg, (0, 0))

plane = Plane()
plane.draw(screen, 225, 500)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
    pygame.display.update()

以下是plane.py文件:

import pygame

pygame.init()

class Plane():
    def __init__(self):
        self.image = pygame.image.load("img/plane.png")

    def draw(self, screen, x, y):
        screen.blit(self.image, (x, y))

请问为什么我显示不出来plane,却显示的出来bg?

  • 写回答

2条回答 默认 最新

  • 大师兄6668 新星创作者: python技术领域 2023-06-18 19:14
    关注

    看了一下你的代码,给你几点建议,你尝试按步骤排查解决一下:
    图片无法显示出来的问题可能是由于以下原因之一:

    1. 文件路径错误:请确保 bg.pngplane.png 这两个图片文件与你的 main.pyplane.py 文件在同一个目录下,并且文件名拼写和大小写正确。如果图片文件存放在不同的目录下,你需要提供正确的相对路径或绝对路径。

    2. 代码顺序问题:在你的代码中,你首先加载并绘制了背景图像(bg.png),然后创建了飞机对象(plane = Plane()),最后调用 pygame.display.update() 更新显示。这样的话,背景图像会立即显示出来,但飞机图像可能会被覆盖在背景之后。你可以尝试将飞机的绘制操作放在背景绘制之后。例如,将以下行:

    screen.blit(bg, (0, 0))
    

    移动到更新显示之前来确保飞机图像在背景之上:

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
        screen.blit(bg, (0, 0))
        plane.draw(screen, 225, 500)
        pygame.display.update()
    

    通过调整绘制顺序,你应该能够在屏幕上同时显示背景和飞机图像。

    请检查以上两个可能的问题,如果问题仍然存在,可以随时联系,再沟通排查。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月18日