ISN Labyrinthe interface python et pygame

Fermé
vaxx - Modifié le 21 avril 2018 à 18:49
 critou - 21 avril 2018 à 19:34
Bonjour,

Pour le Baccalauréat dans la spécialité ISN, je dois faire un programme pour la fin de l'année et c'est moi qui m'occupe de l'interface graphique à l'aide des logiciels Python et Pygame, dont ici je fais un labyrinthe.
Ici, je veux (à l'aide de mon niveau sur un autre programme : 0=fond et 1=mur) construire le labyrinthe en remplaçant les 0 et 1 par les images carrées du fond et du mur. J'ai donc le programme suivant :



import pygame

from pygame.locals import *
from constantes import *
from niveau import *

pygame.init()


#Ouverture de la fenêtre Pygame

fenetre = pygame.display.set_mode((longueur_fen, largeur_fen))



#Chargement et collage du fond

fond = pygame.image.load("images/fond.jpg").convert()
mur = pygame.image.load("images/mur.png")


def afficher_niveau():
for i in range (0,nb_cases_largeur+1):
for j in range(0,nb_cases_longueur+1):
if niveau [i][j]==1:
fenetre.blit(mur, (taille_cases*j, taille_cases*i))
else :
fenetre.blit(fond, (taille_cases*j, taille_cases*i))



#Rafraîchissement de l'écran

pygame.display.flip()


#BOUCLE INFINIE

continuer = 1

while continuer:

continuer = int(input())




(longueur_fen, etc sont des constantes d'un autre programme dont j'ai importé au début du programme-ci.



Mais malheureusement, la page pygame s'affiche avec un fond noir avec comme texte (le logiciel ne répond pas). Savez-vous où est le problème? Aidez moi s'il vous plaît je ne comprends vraiment pas.

Merci

1 réponse

Bonjour.

while continuer:
    continuer = int(input())


Il est là ton problème, un input n'a rien à faire dans la boucle événementielle de pygame.
Si tu veux détruire la fenêtre avec un appui sur une touche clavier ou kill de la fenêtre, cela se gère avec les events de pygame.

Et ne pas oublier d'utiliser un appel à
pygame.quit
après ta boucle pour que pygame ferme bien la fenêtre.
0
Je dois le remplacer donc par une commande avec une touche?
0
critou > vaxx
21 avril 2018 à 19:34
Je dois le remplacer donc par une commande avec une touche?

C'est comme tu veux, mais déjà utiliser un event pour que la fenêtre se ferme lorsqu'on la détruit est un bon début.

while continuer:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            continuer = False
            
pygame.quit()


Et pour plus d'informations comment se gère les evénements pygame, il faut lire la documentation, et suivre un bon tutoriel, il y a déjà ce qu'il faut sur le site officiel de pygame, c'est en anglais, mais ça impossible d'y échapper.
0
Je veux surtout afficher mon labyrinthe quoi
0