Problème de Joystick avec Pygame

Problème de Joystick avec Pygame - Python - Programmation

Marsh Posté le 22-04-2014 à 12:45:53    

Bonjour, je suis actuellement entrain de créer un mini jeux ( labyrinthe ) avec pygame. Je me suis fortement inspiré d'un jeu déjà existant niveau codage, mon but est d'utiliser un joystick pour effectuer les mouvements du personnage.
Hélas, le programme ne prend pas en compte le joystick. Le joystick fonctionne parfaitement sur un autre petit programme simple donc ce n'est pas un problème de joystick.
Je vous transmet le code, dites moi si vous voyez des erreurs et si vous avez une idée de la source du problème.
 
-------------------------------------------------
 
import pygame
from pygame.locals import *
 
from classes import *
from constantes import *
 
pygame.init()
pygame.joystick.init()
 
#Ouverture de la fenêtre Pygame (carré : largeur = hauteur)
fenetre = pygame.display.set_mode((cote_fenetre, cote_fenetre))
#Icone
icone = pygame.image.load(image_icone)
pygame.display.set_icon(icone)
#Titre
pygame.display.set_caption(titre_fenetre)
nb_joysticks = pygame.joystick.get_count()
#Et on en crée un s'il y a en au moins un
if nb_joysticks > 0:
        mon_joystick = pygame.joystick.Joystick(0)
        mon_joystick.init()
 
#BOUCLE PRINCIPALE
continuer = 1
while continuer:
         
        #Chargement et affichage de l'écran d'accueil
        accueil = pygame.image.load(image_accueil).convert()
        fenetre.blit(accueil, (0,0))
 
        #Rafraichissement
        pygame.display.flip()
 
        #On remet ces variables à 1 à chaque tour de boucle
        continuer_jeu = 1
        continuer_accueil = 1
 
        #BOUCLE D'ACCUEIL
        while continuer_accueil:
         
                #Limitation de vitesse de la boucle
                pygame.time.Clock().tick(30)
         
                for event in pygame.event.get():
                 
                        #Si l'utilisateur quitte, on met les variables  
                        #de boucle à 0 pour n'en parcourir aucune et fermer
                        if event.type == JOYBUTTONDOWN :
                                continuer_accueil = 0
                                continuer_jeu = 0
                                continuer = 0
                                #Variable de choix du niveau
                                choix = 0
                                 
                        elif event.type == KEYDOWN:                                
                                #Lancement du niveau 1
                                if event.key == K_F1:
                                        continuer_accueil = 0   #On quitte l'accueil
                                        choix = 'n1'            #On définit le niveau à charger
                                #Lancement du niveau 2
                                elif event.key == K_F2:
                                        continuer_accueil = 0
                                        choix = 'n2'
                         
                 
 
        #on vérifie que le joueur a bien fait un choix de niveau
        #pour ne pas charger s'il quitte
        if choix != 0:
                #Chargement du fond
                fond = pygame.image.load(image_fond).convert()
 
                #Génération d'un niveau à partir d'un fichier
                niveau = Niveau(choix)
                niveau.generer()
                niveau.afficher(fenetre)
 
                #Création de Donkey Kong
                dk = Perso("images/dk_droite.png", "images/dk_gauche.png",  
                "images/dk_haut.png", "images/dk_bas.png", niveau)
 
                                 
        #BOUCLE DE JEU
        while continuer_jeu:
         
                #Limitation de vitesse de la boucle
                pygame.time.Clock().tick(30)
         
                for event in pygame.event.get():
                 
                        #Si l'utilisateur quitte, on met la variable qui continue le jeu
                        #ET la variable générale à 0 pour fermer la fenêtre
                        if event.type == JOYBUTTONDOWN and event.button == 0:
                                continuer_jeu = 0
                                continuer = 0
                 
                        elif event.type == JOYAXISMOTION or event.type == JOYBUTTONDOWN:
                                #Si l'utilisateur presse Echap ici, on revient seulement au menu
                                if event.button == 4:
                                        continuer_jeu = 0
                                         
                                #Touches de déplacement de Donkey Kong
                                elif event.axis == 0 and event.value >2:
                                        dk.deplacer('droite')
                                elif event.axis == 0 and event.value <-2:
                                        dk.deplacer('gauche')
                                elif event.axis == 1 and event.value >2:
                                        dk.deplacer('haut')
                                elif event.axis == 1 and event.value <-2:
                                        dk.deplacer('bas')                      
                         
                #Affichages aux nouvelles positions
                fenetre.blit(fond, (0,0))
                niveau.afficher(fenetre)
                fenetre.blit(dk.direction, (dk.x, dk.y)) #dk.direction = l'image dans la bonne direction
                pygame.display.flip()
 
                #Victoire -> Retour à l'accueil
                if niveau.structure[dk.case_y][dk.case_x] == 'a':
                        continuer_jeu = 0

 
--------------------------------------------------
Le programme appelle un autre programme "classes" dans le quel est defini la classes "deplacer". Le programme sans l'insertion du joystick marche.
Merci d'avance

Reply

Marsh Posté le 22-04-2014 à 12:45:53   

Reply

Marsh Posté le 07-05-2014 à 16:36:13    

UP ? :??:

Reply

Marsh Posté le 09-05-2014 à 23:13:49    

je risque de pas pouvoir aider mais le sujet m'intéresse, j'upperai de tmps en tmps  
 
bon courage


---------------
A Vendre
Reply

Marsh Posté le 14-05-2014 à 16:17:39    

J'ai vraiment besoin de votre je dois bientot finir le projet... :sweat:  
UP !

Reply

Marsh Posté le 14-05-2014 à 17:39:47    

Probléme resolu.

Reply

Marsh Posté le 14-05-2014 à 20:49:20    

Ah, et pourrait-on savoir comment ?


---------------
rule #1 : trust the python
Reply

Marsh Posté le 22-05-2014 à 19:47:40    

Il manquait en fait une boucle de reconnaissance de commande de joystick juste avant les déplacement par le joystick. :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed