|
Auteur | Message |
---|
LeDragonDev Petit scarabée
Messages : 94 Réputation : 7 Inscrit le : 17/12/2011
| Msg n°1 Sujet: Mappage des touches Lun 13 Fév 2012, 22:07 | |
| Bonjour à vous! Encore un soucis avec le developpement (décidement!) Ce coup-ci, c'est le mapping des touches qui m'embête Enfin, les touches elles-mêmes, aucun soucis, mais le pad analogique, je ne vois pas comment faire. Merci de bien vouloir me guider |
|
| |
Riviera71 Dev' Open Source
Messages : 154 Réputation : 7 Age : 53 Inscrit le : 07/06/2011
Nec PC Engine
Localisation : Lyon
Humeur : La tête dans le code source ou les étoiles
| Msg n°2 Sujet: Re: Mappage des touches Mar 14 Fév 2012, 08:32 | |
| Salut Thedahu! Soit tu utilises la fonction SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis) comme un grand Soit tu te sers de ce que d'autres ont fait: [Vous devez être inscrit et connecté pour voir ce lien]Utilises ce qu'il y a en fin de page. |
|
| |
JeanSairien Padawan
Messages : 196 Réputation : 0 Age : 36 Inscrit le : 07/08/2011
Localisation : Brest
| Msg n°3 Sujet: Re: Mappage des touches Mar 14 Fév 2012, 08:37 | |
| Moi je me suis servi d'une appli caanoo qui indique le numéro des bouttons.
Le pad à 78 axes numéroté de 0 à 7 (8 étant le bouton home). 0 : bas (il me semble) 1 : bas gauche et ainsi de suite dans le sens des aiguille d'une montre. ... |
|
| |
LeDragonDev Petit scarabée
Messages : 94 Réputation : 7 Inscrit le : 17/12/2011
| Msg n°4 Sujet: Re: Mappage des touches Mar 14 Fév 2012, 12:40 | |
| Merci à vous deux! Je regarderai ce soir la doc de SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis)! Et je vous dirai si ça fonctionne |
|
| |
LeDragonDev Petit scarabée
Messages : 94 Réputation : 7 Inscrit le : 17/12/2011
| Msg n°5 Sujet: Re: Mappage des touches Mer 15 Fév 2012, 12:49 | |
| Hélas, après plusieurs testes, je n'ai absolument aucun résultat La compilation ce déroule à merveille, le jeu ce lance, tout les boutons fonctionnent sauf le joystick. La condition - Code:
-
if(SDL_JoystickGetAxis(joystick, 1) < -16384 || SDL_JoystickGetAxis(joystick, 1) > 16384) ne suffit elle pas ? Ai-je oublié quelque chose? [EDIT] J'ai trouvé une solution qui fonctionne mais qui ne ressemble pas vraiment aux exemples
- Code:
-
case SDL_JOYAXISMOTION: if (event.jaxis.axis == 1 && (event.jaxis.value < -16384 || event.jaxis.value > 16384) ) ..... Pour le moment, je vais donc continuer avec ça. Merci pour votre aide |
|
| |
JeanSairien Padawan
Messages : 196 Réputation : 0 Age : 36 Inscrit le : 07/08/2011
Localisation : Brest
| Msg n°6 Sujet: Re: Mappage des touches Mer 15 Fév 2012, 13:40 | |
| Je t'envoie mon programme qui utilise les touches ce soir. Ca te dira comment moi je l'ai utilise. Petite question sur le joystick :
Le joystick a uniquement 8 position ou beaucoup plus (32767 selon les valeurs données précédemment)?
PS : J'utilise le joystick sur 8 positions, si c'est que tu souhaite, mon bout de code pourra t'aider. |
|
| |
LeDragonDev Petit scarabée
Messages : 94 Réputation : 7 Inscrit le : 17/12/2011
| Msg n°7 Sujet: Re: Mappage des touches Mer 15 Fév 2012, 16:00 | |
| - JeanSairien a écrit:
Le joystick a uniquement 8 position ou beaucoup plus (32767 selon les valeurs données précédemment)?
Cette valeur ne correspond pas plutôt à l'angle du joystick? - Doc SDL a écrit:
The value returned by SDL_JoystickGetAxis is a signed integer (-32768 to 32768) representing the current position of the axis, it maybe necessary to impose certain tolerances on these values to account for jitter. La valeur retournée par SDL_JoystickGetAxis est un entier signé (-32768 à 32768) représentant la position actuelle de l'axe, il peut être nécessaire pour imposer certaines tolérances sur ces valeurs pour tenir compte de la gigue.Je serai heureux de pouvoir jetter un coup d'oeil dans ton code |
|
| |
Riviera71 Dev' Open Source
Messages : 154 Réputation : 7 Age : 53 Inscrit le : 07/06/2011
Nec PC Engine
Localisation : Lyon
Humeur : La tête dans le code source ou les étoiles
| Msg n°8 Sujet: Re: Mappage des touches Mer 15 Fév 2012, 16:09 | |
| Salut,
Il faut poser les conditions séparés comme ceci:
if (SDL_JoystickGetAxis( joystick, 0 ) < -16384) ton action gauche; if (SDL_JoystickGetAxis( joystick, 0 ) > 16384) ton action droite; if (SDL_JoystickGetAxis( joystick, 1 ) < -16384) ton action haut; if (SDL_JoystickGetAxis( joystick, 1 ) > 16384) ton action bas;e
Dernière édition par Riviera71 le Jeu 16 Fév 2012, 16:54, édité 1 fois |
|
| |
JeanSairien Padawan
Messages : 196 Réputation : 0 Age : 36 Inscrit le : 07/08/2011
Localisation : Brest
| Msg n°9 Sujet: Re: Mappage des touches Mer 15 Fév 2012, 16:18 | |
| Oui quand je disait "position" je parlait de l'angle, uniquement pour la valeur 65535 (et non pas 32767 comme je l'ai dit plus haut). Dans le code j'utilise la même commande que pour utiliser les boutons "classiques". L'indice pour les 8 positions va de 0 à 7. Puis à partir de 8 on retrouve les autres boutons.
Je suis encore au travail. Mais dès que je rentre, je vous mets ça en ligne.
Par contre la précision n'est pas super je trouve, surement due au 65535 valeurs possible de l'angle (chose que je ne savait pas avant aujourd'hui).
PS : petite précision qui n'a pas vraiment sa place ici : j'utilise 8 image pour créé un mouvement pour un personnage, et j'utilise les 8 position du pad pour déplacer ce personnage. J'ai un lag en utilisant un seul fichier fpg avec toutes mes images. Je vais séparer mon fichier fpg en 8 fichier (un pour chaque direction) et je pense que je vais gagner en fluidité. Il s'agit uniquement d'une remarque. |
|
| |
JeanSairien Padawan
Messages : 196 Réputation : 0 Age : 36 Inscrit le : 07/08/2011
Localisation : Brest
| Msg n°10 Sujet: Re: Mappage des touches Mer 15 Fév 2012, 16:56 | |
| Voici mon code : - Code:
-
if(get_joy_button(0,0) == true) j=0; graph=37; loop graph+=1; scroll.y0-=2; if(scroll.y0==4560) scroll.y0=0; end if(graph>46) graph=38; end frame(100); if(get_joy_button(0,0) == false) break; end end end if(get_joy_button(0,1) == true) j=0; graph=28; loop graph+=1; scroll.x0-=1; scroll.y0-=1; if(scroll.y0==4560) scroll.y0=0; end if(scroll.x0<0) scroll.x0=320; end if(graph>36) graph=29; end frame(100); if(get_joy_button(0,1) == false) break; end end end if(get_joy_button(0,2) == true) j=0; graph=19; loop graph+=1; scroll.x0-=2; if(scroll.x0<0) scroll.x0=320; end if(graph>27) graph=20; end frame(100); if(get_joy_button(0,2) == false) break; end end end if(get_joy_button(0,3) == true) j=0; graph=10; loop graph+=1; scroll.x0-=1; scroll.y0+=1; if(scroll.x0<0) scroll.x0=320; end if(scroll.y0<240) scroll.y0=4800; end if(graph>18) graph=11; end frame(100); if(get_joy_button(0,3) == false) break; end end end if(get_joy_button(0,4) == true) j=0; graph=1; loop graph+=1; scroll.y0+=2; if(scroll.y0==240) scroll.y0=4800; end if(graph>9) graph=2; end frame(100); if(get_joy_button(0,4)==false) break; end end end if(get_joy_button(0,5) == true) j=0; graph=64; loop graph+=1; scroll.y0+=1; scroll.x0+=1; if(scroll.y0==240) scroll.y0=4800; end if(scroll.x0>320) scroll.x0=0; end if(graph>72) graph=65; end frame(100); if(get_joy_button(0,5)==false) break; end end end if(get_joy_button(0,6) == true) j=0; graph=55; loop graph+=1; scroll.x0+=2; if(scroll.x0>320) scroll.x0=0; end if(graph>63) graph=56; end frame(100); if(get_joy_button(0,6)==false) break; end end end if(get_joy_button(0,7) == true) j=0; graph=46; loop graph+=1; scroll.y0-=1; scroll.x0+=1; if(scroll.y0>4560) scroll.y0=0; end if(scroll.x0>320) scroll.x0=0; end if(graph>54) graph=47; end frame(100); if(get_joy_button(0,7)==false) break; end end end
Voici le mappage du pad : 0,0 : haut. 0,1 : haut gauche 0,2 : gauche 0,3 : bas gauche 0,4 : bas 0,5 : bas droite 0,6 : droite 0,7 : haut droite |
|
| |
Longjohn Sexual Gamer
Messages : 352 Réputation : 9 Age : 50 Inscrit le : 14/05/2011
X360 - Xbox - Amiga - Dreamcast
| |
| |
JeanSairien Padawan
Messages : 196 Réputation : 0 Age : 36 Inscrit le : 07/08/2011
Localisation : Brest
| Msg n°12 Sujet: Re: Mappage des touches Jeu 16 Fév 2012, 15:56 | |
| Petite précision : j'utilise ceci avec Bennu GD et non avec du langage C++ "classique". Je ne sais plus quelle librairie il faut importer. |
|
| |
Contenu sponsorisé
| |
| |
|