2017-03-21 20 views
0

文字、それはラグすべきではないので、これは私のコードです:pygameの更新バグ

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) 
+0

あなたのコードの字下げがフォーラムに正しく行ったことを確認できますか?私は特にPersonnageクラスを見ています。 –

答えて

0

古いものを一掃することなく、何度も何度も前の画像の上に描画されています。静的なので他の画像とは区別できませんが、文字と一緒に表示されます。追加:

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

ゲームループの先頭に新しい場所を描画するための画面を更新します。

関連する問題