2017-08-06 1 views
1

J'ai commencé à regarder une série de vidéos youtube sur l'apprentissage de pygame par sentdex. J'ai suivi toutes ses démarches et j'en suis arrivé au point où j'avais une voiture (l'image) et c'était sur un écran blanc. Mais, quand je mets les fonctions pour pouvoir déplacer la voiture. La prochaine fois que je l'ai couru, je ne pouvais pas voir ma voiture. J'ai remarqué que je pouvais le voir pendant une fraction de seconde quand j'ai fermé l'écran. J'ai essayé de chercher cette question chaque fois que je pouvais penser. C'est probablement une petite erreur stupide de ma part. Nous vous remercions à l'avance importation pygamePourquoi mon image est-elle couverte?

pygame.init() 

display_width = 800 
display_height = 600 

black = (0,0,0) 
white = (255,255,255) 


gameDisplay = pygame.display.set_mode((display_width, display_height)) 
pygame.display.set_caption('A bit Racey') 
clock = pygame.time.Clock() 

carImg = pygame.image.load('racecar.png') 

def car(x, y): 
    gameDisplay.blit(carImg,(x,y)) 


x = (display_width * 0.45) 
y = (display_height * 0.6) 

x_change = 0 

crashed = False 

while not crashed: 

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

if event.type == pygame.KEYDOWN: 
    if event.key == pygame.K_LEFT: 
     x_change = -5 
    if event.key == pygame.K_RIGHT: 
     x_change = 5 

if event.type == pygame.KEYUP: 
    if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: 
     x_change = 0 

x += x_change    

gameDisplay.fill(white)   
car(x,y) 
pygame.display.update() 
clock.tick(60) 

pygame.quit() 
quit() 
+1

Veuillez indenter votre exemple de code correctement, car votre erreur pourrait être le résultat d'une indentation incorrecte. – skrx

Répondre

0

Votre empreinte est foiré. Tout de for event in pygame.event.get(): à clock.tick(60) devrait être indenté pour montrer qu'il rentre dans la boucle while not crashed:. En outre, crashed = True doit être indenté pour indiquer qu'il se trouve dans l'instruction if event.type == pygame.QUIT:. En outre, les comparaisons pygame.KEYDOWN et pygame.KEYUP doivent se trouver dans votre boucle for event in pygame.event.get():. Enfin, vous pouvez améliorer la vitesse en changeant certains if s à elif s. Ceci est la version corrigée de la dernière section de votre code:

while not crashed: 

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

     elif event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_LEFT: 
       x_change = -5 
      elif event.key == pygame.K_RIGHT: 
       x_change = 5 

     elif event.type == pygame.KEYUP: 
      if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: 
       x_change = 0 

    x += x_change    

    gameDisplay.fill(white)   
    car(x, y) 
    pygame.display.update() 
    clock.tick(60) 

pygame.quit() 
quit() 
+0

Merci beaucoup. Je devenais tellement frustré – Andrej