2015-09-26 66 views
0

所以我有這一小段代碼,它運行良好,但是當我移動角色時,無論角色在哪裏,都有它的背後的圖片。想象它拿着一支鉛筆並在一張紙上畫畫,那基本上就是它如何展現的。我不知道代碼錯在哪裏,否則它運行正常。它有任何其他方式來顯示播放器的這個問題。幫幫我?pygame播放器沒有更新

import pygame,sys,os 
from pygame.locals import * 
pygame.init 


MOVERATE = 8 
WINDOWWIDTH = 1000 
WINDOWHEIGHT = 1000 
def terminate(): 
    pygame.quit() 
    sys.exit() 

playerImage = pygame.image.load('Test_Block.png') 
playerRect = playerImage.get_rect() 

WHITE = (255,255,255) 

WindowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT)) 
pygame.display.update() 


WindowSurface.fill(WHITE) 
mainClock = pygame.time.Clock() 



pygame.display.update() 
while True: 

playerRect.topleft = (WINDOWWIDTH /3, WINDOWHEIGHT/3) 
moveLeft = moveRight = moveUp = moveDown = False 


while True: 

     for event in pygame.event.get(): 
      if event.type == QUIT: 
       terminate() 


      if event.type == KEYDOWN: 
         if event.key == ord('a'): 
          moveRight = False 
          moveLeft = True 
         if event.key == ord('d'): 
          moveLeft = False 
          moveRight = True 
         if event.key == ord('w'): 
          moveDown = False 
          moveUp = True 
         if event.key == ord('s'): 
          moveUp = False 
          moveDown = True 

      if event.type == KEYUP: 
       if event.type == K_ESCAPE: 
        terminate() 
       if event.key == ord('a'): 
        moveLeft = False 
       if event.key == ord('d'): 
        moveRight = False 
       if event.key == ord('w'): 
        moveUp = False 
       if event.key == ord('s'): 
        moveDown = False 
      pygame.display.update() 

     if moveLeft and playerRect.left > 0: 
      playerRect.move_ip(-1 * MOVERATE,0) 
     if moveRight and playerRect.right < WINDOWWIDTH: 
      playerRect.move_ip(MOVERATE,0) 
     if moveUp and playerRect.top >0: 
      playerRect.move_ip(0,-1 * MOVERATE) 
     if moveDown and playerRect.bottom < WINDOWHEIGHT: 
      playerRect.move_ip(0,MOVERATE) 

      pygame.display.update() 

     WindowSurface.blit(playerImage, playerRect) 
     pygame.display.update() 
     mainClock.tick(30) 
pygame.display.update() 

回答

0

您需要用白色填充屏幕以擦除舊圖像。在WindowSurface.blit(playerImage, playerRect)之前,在您的代碼中使用WindowSurface.fill(WHITE)在相同的縮進處。