Python Pygame更新错误

Python Pygame更新错误,python,pygame,Python,Pygame,我正在用pygame在python上创建游戏,但在更新屏幕时遇到了一个错误: 我正在使用一个模式填充我的屏幕,每次我都刷新它,这是在我的角色之前,所以它不应该是滞后的,这是我的代码: import pygame, sys from pygame.locals import * pygame.init() #Open Pygame window taille_fenetre = [960, 640] fenetre = pygame.display.set_mode(taille_fenet

我正在用pygame在python上创建游戏,但在更新屏幕时遇到了一个错误:

我正在使用一个模式填充我的屏幕,每次我都刷新它,这是在我的角色之前,所以它不应该是滞后的,这是我的代码:

import pygame, sys
from pygame.locals import *

pygame.init()

#Open Pygame window
taille_fenetre = [960, 640]
fenetre = pygame.display.set_mode(taille_fenetre)
pygame.key.set_repeat(400, 30)

clock = pygame.time.Clock()

#Chargement et collage du fond
fond = pygame.image.load("brock.png").convert()
for a in range(taille_fenetre[0] // fond.get_width() + 1):
    for i in range(taille_fenetre[1] // fond.get_height() + 1):
        fenetre.blit(fond, (a*fond.get_width(),i*fond.get_height()))

room_size = (taille_fenetre[0]-64*2,taille_fenetre[1]-64*2)
room = pygame.Surface(room_size)
room.fill((255,0,0))
terre = pygame.image.load("terre.png").convert()
for a in range(room.get_width() // terre.get_width() + 1):
    for i in range(room.get_height() // terre.get_height() + 1):
        room.blit(terre, (a*terre.get_width(),i*terre.get_height()))

shadow_room = pygame.image.load('shadow_room.png')

def blit_alpha(target, source, location, opacity):
    x = location[0]
    y = location[1]
    temp = pygame.Surface((source.get_width(), source.get_height())).convert()
    temp.blit(target, (-x, -y))
    temp.blit(source, (0, 0))
    temp.set_alpha(opacity)        
    target.blit(temp, location)

class Personnage:
def __init__(self):
    self.imagesrc = "perso.png"
    self.image = pygame.image.load(self.imagesrc).convert_alpha()
    self.size = self.image.get_size()
    self.position = [0,0]
    self.vitesse = 5
    self.sante = 5
def bouger(self,facteur):
    self.position = [self.position[0] - self.vitesse * facteur[0],self.position[1] - self.vitesse * facteur[1]]
def afficher(self,fenetre):
    print(self.position)
    fenetre.blit(self.image,self.position)
#INFINITE LOOP
continuer = 1

perso = Personnage()
while continuer:
    relachex = True
    relachey = True

    #Re-collage
    fenetre.blit(fond, (0,0))
    fenetre.blit(room,(64,64))
    blit_alpha(room,shadow_room,(0,0),128)

    for event in pygame.event.get():        #Attente des événements
            if event.type == QUIT:
                    continuer = 0
                    pygame.quit()
                    sys.exit()

    keys = pygame.key.get_pressed()
    if keys[K_LEFT]:
        perso.bouger([1,0])
    if keys[K_RIGHT]:
        perso.bouger([-1,0])
    if keys[K_DOWN]:
        perso.bouger([0,-1])
    if keys[K_UP]:
        perso.bouger([0,1])
    #REFRESH
    perso.afficher(fenetre)
    pygame.display.flip()
        clock.tick(60)

你正在一次又一次地画之前的图像,而没有清除旧的东西。你无法分辨其他图像,因为它们是静态的,但它显示的是角色。加:

fenetre.fill((0, 0, 0))

到游戏循环的顶部刷新屏幕以绘制新位置。

您能检查一下您的代码缩进是否正确进入论坛吗?我特别关注
Personnage
类。