Problème d'affichage du menu sur pygame

Fermé
marinside Messages postés 9 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 27 mars 2019 - 27 mars 2019 à 17:38
 bhof - 28 mars 2019 à 09:31
Bonjour je suis en isn et lorsque que j'essaye de lancer le programme du menu
cela ne marche pas, ecran noir... comment faire ?

ecran = pygame.display.set_mode((700,700)).convert()
fond = pygame.image.load("newyork.jpg")
fond.blit(fond,(0,0))
pygame.display.flip() #pour que les instrcutions soient appliquées

clock = pygame.time.Clock()

def menu():
intro = True
while intro:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
ecran = pygame.display.set_mode((700,700)).convert()
fond = pygame.image.load("newyork.jpg")
fond.blit(fond,(0,0))
pygame.display.update() #pour que les instrcutions soient appliquées
if event.type == KEYDOWN:
if event.key == K_RETURN: #jeu
mode=2
if event.type ==K_SPACE:
instructions=pygame.image.load("loris.jpg").convert() #toujours pas mais a faire info et regles
fenetre.blit(instructions,(0,0))
pygame.display.update()


menu()
A voir également:

1 réponse

Bonjour.

Beaucoup de problèmes dans ton code.
- pygame.display.set_mode ne doit être déclaré qu'une seule fois.
- pygame.display.update() ne doit être appelé qu'une seule fois (c'est une opération très coûteuse).
- Les chargements d'images (pygame.image.load) ne doivent JAMAIS être effectués dans une boucle, le chargement d'une image est une opération lente et coûteuse car accès disque, il faut charger les images une unique fois au début du script.
- Il faut revoir ce que doivent être les paramètres du blit.

Voici à peu près comment devrait être organisé ton code (j'ai essayé d'indenter ton code par déduction...).

ecran = pygame.display.set_mode((700,700)).convert()
fond = pygame.image.load("newyork.jpg")
instructions = pygame.image.load("loris.jpg").convert()
fond.blit(fond, (0,0))
pygame.display.flip() #pour que les instrcutions soient appliquées

clock = pygame.time.Clock() # NE SERT PAS...

def menu():
    intro = True
    while intro:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                # pygame.quit()
                # quit() # KÉSAKO ?
                return
                # ecran = pygame.display.set_mode((700,700)).convert() # NON
                # fond = pygame.image.load("newyork.jpg") # NON
                # fond.blit(fond, (0,0)) # PAS ICI
                # pygame.display.update() #pour que les instrcutions soient appliquées # NON
            elif event.type == KEYDOWN: # ON UTILISE UN ELIF
                if event.key == K_RETURN: #jeu
                    mode=2 # KÉSAKO ?
                    img = fond  # AUCUNE IDÉE SI CELA DOIT ÊTRE ÇA DANS TON CODE
            elif event.type == K_SPACE:
                # instructions=pygame.image.load("loris.jpg").convert() #toujours pas mais a faire info et regles # NON
                img = instructions
        # fenetre.blit(instructions,(0,0)) # D'OÙ SORT FENETRE ?
        ecran.blit(img, (0, 0))
        pygame.display.update()


menu()
pygame.quit()
0