2017-08-15 4 views
0

Je suis un programmeur débutant qui essaie de faire un jeu en utilisant python et pygame à partir d'un cours en ligne. Mais quand je cours le code suivant, la fenêtre de pygame s'ouvre pendant une fraction de seconde, puis se ferme.Lorsque je lance mon programme Python, la fenêtre pygame s'ouvre pendant une fraction de seconde puis se ferme

import pygame 

pygame.init() 
screen = pygame.display.set_mode((900,700)) 

finished = False 

while finished == False: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      finished = True 

    rectOne = pygame.Rect(0,0,30,30) 

    color = (0,0,255) #R,G,B 
    pygame.draw.rect(screen,color,rectOne) 
    pygame.display.flip() 

Je ne reçois aucun message d'erreur non plus. C'est comme si elle exécute ma boucle une fois puis change finished en True. J'ai vérifié plusieurs fois et mon code correspond exactement au code du cours en ligne. J'utilise un Mac et Python 2.7.13. Quelqu'un peut-il aider? Mise à jour: Je ne sais pas si cela aide, mais je peux toujours exécuter le code ci-dessous et cela fonctionne parfaitement bien. importation pygame

pygame.init() 
screen = pygame.display.set_mode((900,700)) 

finished = False 

while finished == False: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      finished = True 
+2

Comment utilisez-vous le code? Vous devrez peut-être l'exécuter à partir d'un terminal pour voir les erreurs. –

+1

Lorsque je lance votre code, une fenêtre reste ouverte avec un carré bleu en haut à gauche. Il ne se ferme pas après une seconde – jacoblaw

+0

Je l'exécute en cliquant sur l'onglet Run, puis en cliquant sur "Exécuter le module". Ça pourrait être mon ordinateur. – MakeDaGames

Répondre

0

OK, j'ai recherché sur votre problème un peu et je suis venu à la conclusion que vous devez essayer les choses suivantes:

A) Utilisez pygame.display.update() au lieu de pygame.display.flip()

B) Essayez de placer ceux-ci à la fin de votre programme en dehors de la boucle principale: pygame.QUIT et sur la ligne suivante quit()

C) Si aucune de mes spécula ci-dessus tions de travail, alors vous devez vérifier si le QUIT événement se déclenche automatiquement, faites ceci en changeant votre boucle while comme suit:

while not finished: 
    for event in pygame.event.get(): 
     print(event) 

Après cela, lorsque vous exécutez votre programme, dans le Shell, il affichera la les événements qui se produisent sur l'écran pygame, s'il y a un problème alors le premier et dernier événement serait QUIT et puis c'est probablement le problème de Mac ou de la version, parce que j'ai récemment lu sur reddit à ce sujet, jetez un coup d'œil à here

+0

Merci d'avoir essayé d'aider, rien de tout cela a fonctionné bien. Quand j'ai imprimé les événements, j'ai eu: Je suis sûr que ça doit être un problème avec mon Mac, et si cela est vrai, je me demande si vous pouvez répondre à la question que je vais publier sous peu. – MakeDaGames