Problème de Joystick avec Pygame - Python - Programmation
Marsh Posté le 14-05-2014 à 16:17:39
J'ai vraiment besoin de votre je dois bientot finir le projet...
UP !
Marsh Posté le 14-05-2014 à 20:49:20
Ah, et pourrait-on savoir comment ?
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.
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