SDL_GetKeyState version manette - C - Programmation
Marsh Posté le 13-10-2008 à 17:15:04
j'ai trouvé ça dans la doc:
Sint16 SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis);
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);
Marsh Posté le 14-10-2008 à 17:07:49
parcontre je n'arrive pas à m'en servir je veux bien de l'aide.
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.
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...
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.
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.
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.
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...
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 ?
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.
Marsh Posté le 18-10-2008 à 16:59:54
Toujours rien.
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" )
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.