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

pygame.FULLSCREEN 返回空白屏幕而不是正确显示

如何解决pygame.FULLSCREEN 返回空白屏幕而不是正确显示

我正在学习了解 pygame 的教程。在这个游戏中,我只设置背景颜色,并绘制船舶图像并处理事件以管理船舶(图像)的位置。我的代码在静态屏幕大小下正常工作,但当我尝试以全屏模式打开时会出现空白屏幕。这是 AlienInvasion 类的正常工作代码

class AlienInvasion:
    def __init__(self):
        pg.init()
        self.settings = Settings()
        self.screen = pg.display.set_mode((self.settings.width,self.settings.height))
        # width and height are static value 1366 and 768

        pg.display.set_caption('Pygame')
        self.ship = Ship(self)
        self.x = float(self.ship.rect.x)

        self.move_right = False
        self.move_left = False

    def run_game(self):
        while True:
            self._check_events()
            self.update()
            self._update_screen()

    # Function to manage events
    def _check_events(self):
        for event in pg.event.get():
            if(event.type == pg.QUIT):
                sys.exit()
            elif(event.type == pg.KEYDOWN):
                self._check_keydown_events(event)

            elif(event.type == pg.KEYUP):
                self._check_keyup_events(event)

    # manage key down events
    def _check_keydown_events(self,event):
        if(event.key == pg.K_RIGHT):
            self.move_right = True
        elif(event.key == pg.K_LEFT):
            self.move_left = True
        elif(event.key == pg.K_q):
            sys.exit()
    # manage key up enevts

    def _check_keyup_events(self,event):
        if(event.key == pg.K_RIGHT):
            self.move_right = False
        elif(event.key == pg.K_LEFT):
            self.move_left = False

    # Update position of image object
    def update(self):
        if(self.move_right and self.ship.rect.right < self.ship.screen_rect.right):
            self.x += self.settings.ship_speed
        elif(self.move_left and self.ship.rect.left > 0):
            self.x -= self.settings.ship_speed

        self.ship.rect.x = self.x

    # Actual Function that set background and display image object
    def _update_screen(self):
        self.screen.fill(self.settings.bg_color)
        self.ship.blitme()
        pg.display.flip()


if __name__ == '__main__':
    ai = AlienInvasion()
    ai.run_game()

设置类代码

class Settings:
def __init__(self):
    self.width = 1366
    self.height = 768
    self.bg_color = (230,230,230)
    self.ship_speed = 1.5

船级代码

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('images/ship.bmp')
        self.rect = self.image.get_rect()
        self.rect.midbottom = self.screen_rect.midbottom

def blitme(self):
    a = self.screen.blit(self.image,(self.rect[0],self.rect[1] - 70))

终于ship.bmp

enter image description here

这是 AlienInvasion 的更新代码init 函数以全屏模式打开

def __init__(self):
    pg.init()
    self.settings = Settings()
    # Updated lines start
    self.screen = pg.display.set_mode((0,0),pg.FULLSCREEN)
    self.settings.width = self.screen.get_rect().width
    self.settings.height = self.screen.get_rect().height
    # End Update Lines
    pg.display.set_caption('Pygame')
    self.ship = Ship(self)
    self.x = float(self.ship.rect.x)

    self.move_right = False
    self.move_left = False

现在它显示一个空白的黑屏。我不明白为什么

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