SDL_GetKeyState version manette

SDL_GetKeyState version manette - C - Programmation

Marsh Posté le 08-10-2008 à 13:14:22    

Bonjour,
Je voudrais juste savoir s'il existe un équivalant de SDL_GetKeyState pour gerer les boutons d'une manette svp.

Reply

Marsh Posté le 08-10-2008 à 13:14:22   

Reply

Marsh Posté le 08-10-2008 à 13:35:48    

resolu

Reply

Marsh Posté le 08-10-2008 à 13:40:29    

Et comment? Parce que là, autant supprimer le topic...


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 13-10-2008 à 17:15:04    

j'ai trouvé ça dans la doc:
 
Sint16 SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis);
 
 :jap:
ps: ça c'est pour gerer les axes, et il y en a un autre pour les boutons  :):
 
Uint8 SDL_JoystickGetButton(SDL_Joystick *joystick, int button);


Message édité par jaco3th le 13-10-2008 à 21:41:31
Reply

Marsh Posté le 14-10-2008 à 17:07:49    

parcontre je n'arrive pas à m'en servir je veux bien de l'aide.

Reply

Marsh Posté le 15-10-2008 à 11:32:57    

Il faut qu'on devine ton problème ?

Reply

Marsh Posté le 16-10-2008 à 20:06:42    

Non.
Alors j'explique:
J'ai codé un jeu qui fonctionne au joystick et le probleme est que:
En fait j'utilise un booléen qui si j'appuie sur la touche 1 du joystick se met à bouton = 1, si je relache ce bouton bouton = 0;
J'utilise aussi un booléen pour chaque direction, qui se mettent à droite = 1 (par exemple) si je vais à droite et droite = 0 si je relache cette direction.
Tout cela fonctionne tres bien.
Le seul probleme est que si je relache un axe et le bouton au meme moment, seul bouton se met à = 0, mon booléen "droite" reste à 1 (donc le personnage continue à avancer meme si je n'appuie pas vers la droite tant que je ne rappuie pas sur une direction il reste à marcher tout seul.
J'espere etre clair quand meme.
J'ai essayé SDL_JoystickGetAxis et SDL_JoystickGetButton mais ça n'y change strictement rien.


Message édité par jaco3th le 16-10-2008 à 20:07:56
Reply

Marsh Posté le 17-10-2008 à 17:58:03    

donc voila en fait quand il sagit de critiquer un topic ya toujours du monde quoi, mais à part ça...

Reply

Marsh Posté le 17-10-2008 à 18:40:50    

Je disais ça c'était pour toi hein, si tu veux augmenter tes chances d'avoir une réponse la première chose c'est de donner le plus d'info possible à ceux qui te lisent... Avec ton attitude c'est sûr que ça donne pas envie de t'aider.

Reply

Marsh Posté le 17-10-2008 à 18:50:14    

Ben ya de quoi etre blazé, je passe mes journées à essayer de resoudre le probleme et aucune solution sur aucun site, à croire qu'on ne peut pas coder un jeu correct (qui se joue à la manette) en C.


Message édité par jaco3th le 17-10-2008 à 18:53:12
Reply

Marsh Posté le 17-10-2008 à 18:50:14   

Reply

Marsh Posté le 17-10-2008 à 19:08:16    

Met le bout de code qui appelle SDL_JoystickGetAxis et SDL_JoystickGetButton peut être... Le problème est sûrement dans ton code.

Reply

Marsh Posté le 17-10-2008 à 19:58:24    

J'ai tout essayé, meme de resoudre le probleme par programmation,mais apparemment c'est la SDL qui ne gere pas les actions continues au joystick, seulement au clavier.
Je peux mettre le bout des evenements de mon code actuel (desolé pour les balmises , je ne sais pas les mettre):
 
 
while(SDL_PollEvent(&event));
        {
        switch(event.type)
        {
 
            case SDL_JOYBUTTONDOWN:
            if (manette && event.jbutton.button == 1)
            boutonUn = 1;
            break;
 
        case SDL_JOYBUTTONUP:
        if (manette && event.jbutton.button == 1)
        boutonUn = 0;
        break;
 
 
 
        case SDL_JOYAXISMOTION:
 
        if (event.jaxis.axis == 0 && event.jaxis.value >= -3200)
        gauche = 0;
 
        if (event.jaxis.axis == 0 && event.jaxis.value <= 3200)
        droite = 0;
 
        if (event.jaxis.axis == 1 && event.jaxis.value >= -3200)
        haut = 0;
 
        if (event.jaxis.axis == 1 && event.jaxis.value <= 3200)
        bas = 0;
 
 
    if (event.jaxis.axis == 0 && event.jaxis.value < -3200) /* Vers la gauche */
        gauche = 1;
 
    else if (event.jaxis.axis == 0 && event.jaxis.value > 3200) /* Vers la droite */
        droite = 1;
 
    else if (event.jaxis.axis == 1 && event.jaxis.value < -3200) /* Vers le haut */
        haut = 1;
 
    else if (event.jaxis.axis == 1 && event.jaxis.value > 3200) /* Vers le bas */
        bas = 1;
 
 
    break;
 
//etc...
 
Le truc banal quoi...

Reply

Marsh Posté le 17-10-2008 à 20:59:06    

Tu es sûr que le problème n'est pas dans le code qui examine les boutonUn, gauche, droite, haut et gauche, et fait l'action correspondante ?

Reply

Marsh Posté le 17-10-2008 à 21:30:47    

Certain car mon jeu fonctionne impécablement au clavier (il y a un menu, on peut choisir soit "clavier" soit "manette" ).
Je vais essayer de placer des SDL_JoystickGetAxis et des SDL_JoystickGetButton  directement en tant que condition (en plein dans le code) , je n'y avais pas pensé, j'étais trop parti dans l'idée des booléens.
Je reposterais pour dire ce que ça donne...
Merci matafan.

Reply

Marsh Posté le 18-10-2008 à 16:59:54    

Toujours rien.


Message édité par jaco3th le 19-10-2008 à 23:13:00
Reply

Marsh Posté le 21-10-2008 à 19:44:03    

Probleme enfin résolu sur un autre site !
Ca venait du point virgule apres while(SDL_PollEvent(&event)) qui rendait le while non fonctionnel.
Une grosse prise de tete pour rien en résumé, mais content d'en etre sorti.
(desolé je n'ai pas trouver comment mettre mon probleme en "resolu" )


Message édité par jaco3th le 21-10-2008 à 19:46:48
Reply

Marsh Posté le 21-10-2008 à 19:58:57    

:pt1cable:

Reply

Sujets relatifs:

Leave a Replay

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