微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pygame.image.load 图片不会被添加到屏幕上

如何解决Pygame.image.load 图片不会被添加到屏幕上

我已经尝试了一切来解决这个问题,我的代码运行并显示一个屏幕,但图像不在屏幕上。 到目前为止,我已经尝试过:

  • 在pygame.image.load中输入图片时输入绝对路径
  • 尝试 os.join.path 方法(找不到文件错误
  • 还有很多其他的东西 -在尝试了所有方法并密切关注本书之后,我如何让它发挥作用?

我来自 Alien_invasion.py 的代码

import sys

import pygame

from settings import Settings

from ship import Ship


class AlienInvasion:

    def __init__(self):
        pygame.init()
        self.settings = Settings()

        self.screen = pygame.display.set_mode((self.settings.screen_width,self.settings.screen_height))
        pygame.display.set_caption("Alien Invasion")

        self.bg_color = (255,0)
        self.ship = Ship(self)

    def run_game(self):
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
            self.screen.fill(self.settings.bg_color)
            pygame.display.flip()

            self.screen.fill(self.bg_color)
        
            self.ship.blitme()
        
if __name__ == '__main__':
    ai = AlienInvasion()
    ai.run_game()

来自ship.py的代码


import pygame




class Ship:
    def __init__(self,ai_game):
        self.screen = ai_game.screen
        self.screen_rect = ai_game.screen.get_rect()

        self.image = pygame.image.load('C:/Users/Documents/Python Learning/python crash course lessons/Alien Invasion/ship1.bmp')
        self.rect = self.image.get_rect()
        self.rect.midbottom = self.screen_rect.midbottom

    def blitme(self):
        self.screen.blit(self.image,self.rect)

来自 settings.py 的代码

class Settings:
"""A class to store all settings for Alien Invasion."""

    def __init__(self):
    """Initialize the game's settings."""
    # Screen settings
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (230,230,230)
    

我真的很想找到这个问题的解决方案,否则我会被卡住,因为其他有同样问题的人的解决方案都没有解决我的问题...... 程序正常运行,没有错误显示图像只是没有将图像加载到屏幕上。

如果有帮助,谢谢

解决方法

图像未显示,因为绘制图像后显示未更新。绘制船后更新显示:

class AlienInvasion:
    # [...]

    def run_game(self):

        clock = pygame.time.Clock()
        run = True
        while run:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    run = False    
            
            self.screen.fill(self.bg_color)
            self.ship.blitme()
            pygame.display.flip()
            clock.tick(60)

        pygame.quit()
        sys.exit()

典型的 PyGame 应用程序循环必须:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。