Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pygame] Impossible de breaké une boucle.

23 décembre 2010 à 3:27:19

Bonjour

Dans pygame, pour fermer une fenêtre, on quitte une boucle. Mais moi, j'ai beau modifier la condition de la boucle, rien ne change et python ne lit pas le reste des instruction après la boucle...


## PRINCIPAL ##
import pygame
from pygame.locals import *
from pygame import sprite 

from constantes import*
from Classe import *

pygame.init()

def Jeu():
    #Ouverture de la fenêtre Pygame (carré : largeur = hauteur)
    fenetre = pygame.display.set_mode((cote_fenetre, cote_fenetre))
    #Chargement et collage du fond
    fond = pygame.image.load("fond.jpg")
    fenetre.blit(fond, (0,0))
    #Icone
    icone = pygame.image.load("dk_droite.png")
    pygame.display.set_icon(icone)
    #Titre
    pygame.display.set_caption("DOnkey LaByrInthe")

    niveau = Niveau()
    niveau.génération_niveau()
    niveau.affiche_niveau(fenetre)

    #Perso
    perso = pygame.image.load("dk_droite.png")
    fenetre.blit(perso, (0,0))

    pygame.display.flip()
    
    

fenetre = pygame.display.set_mode((cote_fenetre, cote_fenetre))
fond = pygame.image.load("fond.jpg")
#Icone
icone = pygame.image.load("dk_droite.png")
pygame.display.set_icon(icone)
#Titre
pygame.display.set_caption("DOnkey LaByrInthe")

niveau = Niveau()
donkey = Perso()

accueil = 1
while accueil:
    #Chargement et collage du fond
    fond = pygame.image.load("accueil.png")
    fenetre.blit(fond, (0,0))
    pygame.display.flip()

    
    while 1: #MENU#-------
      #Limitation de vitesse de la boucle
      #30 frames par secondes
      pygame.time.Clock().tick(30)
      
      for event in pygame.event.get():
            if (event.type == KEYDOWN):
                if(event.key == K_RETURN):
                    accueil = 0

            
            if (event.type == QUIT):
              break


    while 1: #JEU#-------
          for event in pygame.event.get():
            pygame.time.Clock().tick(30)

            if (event.type == QUIT):
                break
     
            if (event.type == KEYDOWN):     #Arriver au jeu
                if(event.key == K_RETURN):
                    Jeu()

                if(event.key == K_UP):
                    donkey.déplacement("haut")
                    
                if(event.key == K_DOWN):
                    donkey.déplacement("bas")
                    
                if(event.key == K_RIGHT):
                    donkey.déplacement(fenetre, "droite")
                    
                if(event.key == K_LEFT):
                    donkey.déplacement("gauche")

          fenetre.blit(fond, (0,0))
          niveau.affiche_niveau(fenetre)
          fenetre.blit(donkey.direction, (donkey.DK_x, donkey.DK_y))
          pygame.display.flip()


Le problème vient de la boucle à la ligne 47...
Merci
  • Partager sur Facebook
  • Partager sur Twitter
23 décembre 2010 à 8:29:03

Citation : ShikiSokuZeku

Dans pygame, pour fermer une fenêtre, on quitte une boucle. Mais moi, j'ai beau modifier la condition de la boucle, rien ne change et python ne lit pas le reste des instruction après la boucle...



Moi pour fermer la fenêtre j' utilise pygame.quit()

accueil = 1
while accueil:
    #Chargement et collage du fond
    fond = pygame.image.load("accueil.png")
    fenetre.blit(fond, (0,0))
    pygame.display.flip()

    
    while 1: #MENU#-------
      #Limitation de vitesse de la boucle
      #30 frames par secondes
      pygame.time.Clock().tick(30)
      
      for event in pygame.event.get():
            if (event.type == KEYDOWN):
            if(event.key == K_RETURN):
                break

            
            if (event.type == QUIT):
              pygame.quit()


Ce code te fera sortir de la boucle menu si tu appuie sur K_RETURN et fermera ta fenetre si tu appuie sur le bouton quitter (croix).
  • Partager sur Facebook
  • Partager sur Twitter
23 décembre 2010 à 11:29:40

K_RETURN et K_KP_ENTER ne sont pas les même touches ... bref aucun rapport.

le break de la ligne 66 casse le for/in de la ligne 59 et non le while de la ligne 54 ...
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

23 décembre 2010 à 11:31:25

merci pour le tuyau, la fenêtre se ferme belle et bien.
Mais après, j'ai un message d'erreur qui me dit:

pygame.error: video system not initialized
  • Partager sur Facebook
  • Partager sur Twitter