IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème affichage pygame


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut Problème affichage pygame
    Bonjour,

    J'ai un problème avec mon code python du module pygame car la fenetre reste noire lors de l'ouverture du programme.

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    import pygame
    import webbrowser
    from pygame.locals import *
    from pygame import *
    from tkinter import *
    from webbrowser import *
    from math import atan2,degrees
     
    fenetretk = Tk()
    fenetretk.title('Gold Cup Racing Launcher 1.0 ')
    fenetretk.geometry('890x540')
    l = LabelFrame(fenetretk, text="News", padx=30, pady=30)
    l.pack(fill="both", expand="yes")
     
    Label(l, text="Bienvenue sur Gold Cup Racing").pack()
    Button(fenetretk, text ='New Profile').pack(side=LEFT, padx=5, pady=5)
    bouton_quitter = Button(fenetretk, text="                    Play                    ", command=fenetretk.quit)
    Button(fenetretk, text ='Edit Profile').pack(side=RIGHT, padx=5, pady=5)
    bouton_quitter.pack()
    fenetretk.mainloop()
     
    pygame.init()	
     
    #Ouverture de la fenêtre Pygame
    fenetre = pygame.display.set_mode((800, 596))
     
     
     
    iconfile = "data/images/icon.png" # appico.xbm sous linux
     
    #Icone
    icone = pygame.image.load("data/images/icon.png")
    pygame.display.set_icon(icone)
     
    #Titre
    pygame.display.set_caption("Gold Cup Racing")
     
    #Chargement et collage du personnage
    perso = pygame.image.load("data/images/background.png").convert()
    position_perso = perso.get_rect()
    fenetre.blit(perso, position_perso)
     
    road = pygame.image.load("data/images/road.png").convert_alpha()
     
    #Chargement et collage du fond
    fond = pygame.image.load("data/images/car.png").convert_alpha()
     
    fenetre.blit(road, (200,200))
     
    son = pygame.mixer.Sound("data/audio/vroom.wav")
     
    pygame.key.set_repeat(50, 0)
     
     
    vrect = fond.get_rect(center=(400,400))
    #~ dans l'image d'origine, le vaisseau doit être vertical
    #~ en direction du haut, c'est l'angle zero.
     
    #BOUCLE INFINIE
    continuer = 1
    while continuer:
     
    	for event in pygame.event.get():	#Attente des événements
    		if event.type == QUIT:
    			continuer = 0
    		if event.type == KEYDOWN:
    			if event.key == K_ESCAPE:	#Si "flèche bas"
    				#On descend le perso
    				continuer = 0
    			if event.key == K_s:	#Si "flèche bas"
    				#On descend le perso
    				position_perso = position_perso.move(0,10)
    				son.play()
    			if event.key == K_w:	#Si "flèche bas"
    				#On descend le perso
    				position_perso = position_perso.move(0,-10)
    				son.play()
    			if event.key == K_q:	#Si "flèche bas"
    				#On descend le perso
    				position_perso = position_perso.move(-10,0)
    				son.play()
    			if event.key == K_d:	#Si "flèche bas"
    				#On descend le perso
    				position_perso = position_perso.move(10,0)
    				son.play()
    		if event.type == KEYUP:
    			if event.key == K_w:
    				son.stop()
    			if event.key == K_s:
    				son.stop()
    			if event.key == K_q:
    				son.stop()
    			if event.key == K_d:
    				son.stop()
    			while True:
    				ev = event.wait()
    			if ev.type == QUIT: break
     
    			if ev.type == MOUSEMOTION:
    					        #~ on recupere les coordonnees de la souris
    					        #~ pour calculer un angle en fonction du centre du l'image
    				x,y = ev.pos
    				angle = degrees(atan2(vrect.centerx-x,vrect.centery-y))
    						        #~ on efface l'ancienne image en recuperant de rect
    				r = fenetre.fill(0,vrect)
    						        #~ on contruit l'image du vaisseau rotate
    						        #~ sans oublier de recalculer sa position
    				newimg = pygame.transform.rotate(fond,angle)
    				vrect = newimg.get_rect(center=(400,400))
    						        #~ on affiche la nouvelle image
    						        #~ et on actualise
    				vrect = fenetre.blit(newimg,vrect)
    			pygame.display.update((r,vrect))
    			#Re-collage
    			fenetre.blit(perso, position_perso)
    			fenetre.blit(road, (50,50))
    		quit()

  2. #2
    Membre régulier
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Amateur
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 52
    Points : 94
    Points
    94
    Par défaut
    Salut,

    Dans le futur, essaie de ne donner que la partie du code qui montre ton problème. Ici toute la partie avec Tkinter n'a rien à voir dans ton problème.

    Avec pygame, pour afficher quelque chose à l'écran, il faut soit dessiner sur le surface de la fenêtre, soit blitter une image sur cette même surface.

    Ton problème est que la structure de ta boucle principale est mauvaise. Tu a une boucle for qui itère sur chaque événement récupéré lors de ce tour de boucle. Si aucun événement ne se produit, on n'entre pas dans la boucle for, et on ne fait rien du tout ! Il faut attendre un événement KEYUP pour ... entrer dans une boucle infinie au lignes 95-96.

    Je te conseille de lire un tuto sur pygame et sur la structure de la boucle de jeu. Sans faire trop de pub, j'ai aussi des tutoriels vidéos à ce sujet.

    Mais en très résumé, la boucle de jeu se compose de 3 parties :
    1. Lecture des événements
    2. Mise à jour des objets du jeu
    3. Affichage des objets du jeu

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    J'ai cette erreur qui survient :

    main.py
    Traceback (most recent call last):
    File "C:\Users\Bidule\Documents\Dev\Python\Gold Cup Racing\main.py", line 63, in <module>
    for event in pygame.event.get(): #Attente des événements
    pygame.error: video system not initialized

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Citation Envoyé par Rombutucraft Voir le message
    J'arrive a me faire aidé par peut de monde
    Un peu de recherche avec Google sur "pygame.error: video system not initialized" vous ramène des tas de cas où çà arrive lorsqu'on a omit l'appel a pygame.init(). Il faut commencer par là... et éventuellement expliquer que vous l'avez bien fait en montrant le code qui va avec.

    - W

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 059
    Points : 1 396
    Points
    1 396
    Par défaut
    "pygame.error: video system not initialized" signifie que vous tentez de lire la file d'événements (ici pygame.event.get()) alors que vous n'avez pas encore initialisé de display (display.set_mode()) ou que celui-ci a échoué.

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  2. problème affichage image
    Par thealpacino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/05/2005, 13h56
  3. Problème affichage primitive
    Par goutbouyo dans le forum DirectX
    Réponses: 4
    Dernier message: 29/12/2004, 18h25
  4. [Plugin][VE] Problème affichage
    Par sebb84 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/07/2004, 14h50
  5. [DOS] Problème affichage de DOS dans un Memo
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 25/06/2004, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo