为什么我的屏幕不能用 pygame 在 python 中更新?

问题描述

我正在用 pygame 编写代码,但我的屏幕没有用 pygame.display.flip() 更新 有人可以帮我吗?

我的代码: 主文件

import pygame
pygame.init()
from game import Game

pygame.display.set_caption("Run !")
screen = pygame.display.set_mode((1080,680))

game = Game()

running = True

while running:
    game.update(screen)

    pygame.display.flip()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            pygame.quit()
        elif event.type == pygame.KEYDOWN:
            game.key_pressed[event.key] = True
        elif event.type == pygame.KEYUP:
            game.key_pressed[event.key] = False

游戏文件

import pygame
from player import Player

class Game(pygame.sprite.Sprite):

    def __init__(self):
        super().__init__()
        self.player = Player()
        self.key_pressed = {}

    def update(self,screen):
        screen.blit(self.player.image,self.player.rect)


        if self.key_pressed.get(pygame.K_RIGHT):
            self.player.move_right()
        if self.key_pressed.get(pygame.K_LEFT):
            self.player.move_left()
        if self.key_pressed.get(pygame.K_UP):
            self.player.move_up()
        if self.key_pressed.get(pygame.K_DOWN):
            self.player.move_down()

        pygame.display.flip()


和播放器文件

import pygame

class Player(pygame.sprite.Sprite):

    def __init__(self):
        super().__init__()
        self.veLocity = 3
        self.image = pygame.image.load('res/player.png')
        self.image = pygame.transform.rotozoom(self.image,0.9)
        self.rect = self.image.get_rect()

    def move_right(self):
        self.rect.x += self.veLocity

    def move_left(self):
        self.rect.x -= self.veLocity

    def move_up(self):
        self.rect.y -= self.veLocity

    def move_down(self):
        self.rect.y += self.veLocity

我可以看到玩家移动(它是一个蓝色方块),但之前的图像没有被删除。所以当它移动时我看到一条蓝线而不是一个正方形

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)