Petit probleme avec la SDL
chaa13
-
NiicoDu42 Messages postés 157 Date d'inscription Statut Membre Dernière intervention -
NiicoDu42 Messages postés 157 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un question en C avec la bibliothèque SDL : En faisant un Waitevent(), Si l'appui sur une touche (la touche A) une action se produit comme jouer de la musique, puis en laissant enfoncer la touche A j'appuis sur une autre (touche B), l'action de la touche B (ouvrir une image) va être lancer, mais si j'arrête d'enfoncer la touche B et bien l'action de la touche A (la touche est rester enfoncer tout au long) ne se relance pas, il faut que j'arrête de l'enfoncer puis de la ré enfoncer !Comment je peut faire pour ne pas avoir besoin de la ré enfoncer ? Quelqu'un a une idée pour parer a ce problème ?
Merci d'avance !!
Chaa13
J'ai un question en C avec la bibliothèque SDL : En faisant un Waitevent(), Si l'appui sur une touche (la touche A) une action se produit comme jouer de la musique, puis en laissant enfoncer la touche A j'appuis sur une autre (touche B), l'action de la touche B (ouvrir une image) va être lancer, mais si j'arrête d'enfoncer la touche B et bien l'action de la touche A (la touche est rester enfoncer tout au long) ne se relance pas, il faut que j'arrête de l'enfoncer puis de la ré enfoncer !Comment je peut faire pour ne pas avoir besoin de la ré enfoncer ? Quelqu'un a une idée pour parer a ce problème ?
Merci d'avance !!
Chaa13
A voir également:
- Petit probleme avec la SDL
- Trier du plus petit au plus grand excel - Guide
- Petit 3 ✓ - Forum Word
- Petit 2 ✓ - Forum Windows
- Petit 9 - Forum Mail
- Comment imprimer une photo en petit ✓ - Forum Photo numérique
11 réponses
hey !
Heu... justement enfait, quand je reste appuyer sur la touche A ou B une action se declanche mais des que jarrette d'appuyer sur A ou B ma fonction KEY_UP dira d'envoyer un nombre qui permettra d'arrêter toute les action en cours !
Tu as une idée ?
Merci d'avance ^^
Heu... justement enfait, quand je reste appuyer sur la touche A ou B une action se declanche mais des que jarrette d'appuyer sur A ou B ma fonction KEY_UP dira d'envoyer un nombre qui permettra d'arrêter toute les action en cours !
Tu as une idée ?
Merci d'avance ^^
Ok, voici la seulement la partie interressante ^^ :
PS: le " RS232_SendByte" sert seulement a envoyer des donnée sur un port serie !
Ne fait surtout pas attention au "if" inutile (il me servent ^^)
PS: le " RS232_SendByte" sert seulement a envoyer des donnée sur un port serie !
Ne fait surtout pas attention au "if" inutile (il me servent ^^)
int continuer = 1; SDL_EnableKeyRepeat(1,1); SDL_Event event; while (continuer) { t = 1; s = 1; u = 1; w = 1; x = 1; SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_UP: if(s == 1) { RS232_SendByte(5,'3'); //s++; } break; case SDLK_RIGHT: if(u==1) { RS232_SendByte(5,'4'); u++; } break; case SDLK_LEFT: if(w==1) { RS232_SendByte(5,'5'); // w++; } break; case SDLK_DOWN: if(x==1) { RS232_SendByte(5,'1'); // x++; } break; } break; case SDL_KEYUP: RS232_SendByte(5,'0'); // t++; break; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je ne suis pas un pro de la SDL mais quand tu déclares ton événement comme ça : SDL_Event event;
Essayes dans déclarer un deuxième : SDL_Event event, event2;
Et tu les testes --> tu mets "event" pour l'image
et tu mets "event2" pour la musique par exemple.
Je ne suis vraiment pas sur de ça mais ça vaut le coût d'essayer. ^^
Essayes dans déclarer un deuxième : SDL_Event event, event2;
Et tu les testes --> tu mets "event" pour l'image
et tu mets "event2" pour la musique par exemple.
Je ne suis vraiment pas sur de ça mais ça vaut le coût d'essayer. ^^
Hey !
J'ai essayer, mais le truc c'est que je dois appuyer sur deux touche pour lancer quelques chose ! Est ce que tu pense que ca viendrait d'autre part comme justement l'information qui est envoyer par un touche quand elle est appuyer, n'est pas renvoyer, ou elle est renvoyer mais quand une autre touche est appuyer ça n'envoi plus l'info comme quoi la première touche est appuyer ?
merci d'avance !!
J'ai essayer, mais le truc c'est que je dois appuyer sur deux touche pour lancer quelques chose ! Est ce que tu pense que ca viendrait d'autre part comme justement l'information qui est envoyer par un touche quand elle est appuyer, n'est pas renvoyer, ou elle est renvoyer mais quand une autre touche est appuyer ça n'envoi plus l'info comme quoi la première touche est appuyer ?
merci d'avance !!
Heu ... ca fait un truc vraiment bizzar la je dois appuyer plusieurs fois sur un touche pour lancer un action...
il faut ralentir ta boucle avec un SDL_Delay(10); par exemple (10 est le temps a attendre pour recommencer la boucle tu peux en mettre plus ... )
Hey,
Heu nan ca change rien :( j'ai essayer plusieurs valeur mais rien !
Je pourrais essayer de faire quelque chose qui dit au programme que si la touche A et enfoncé mais quelle n'est pas relâcher alors mettre a = 0, si B et enfoncer puis relacher et que a = 0 et bien lancer A ! Mais j'ai du mal a le faire, tu serait pas comment je pourrais my prendre ?
Merci d'avance !
Heu nan ca change rien :( j'ai essayer plusieurs valeur mais rien !
Je pourrais essayer de faire quelque chose qui dit au programme que si la touche A et enfoncé mais quelle n'est pas relâcher alors mettre a = 0, si B et enfoncer puis relacher et que a = 0 et bien lancer A ! Mais j'ai du mal a le faire, tu serait pas comment je pourrais my prendre ?
Merci d'avance !
Oui voilà, donc essayes de faire un truc dans le genre :
Si tu appuis sur la touche "A", mettre VarA=1
if(VarA == 1){//faire l'action voulu}
Comme ça a chaque tour de boucle il fera ce que tu veux, mais essayes de te débrouiller avec des conditions je pense que c'est faisable.
Mon aide n'est pas très claire, mais bon ... ^^
Si tu appuis sur la touche "A", mettre VarA=1
if(VarA == 1){//faire l'action voulu}
Comme ça a chaque tour de boucle il fera ce que tu veux, mais essayes de te débrouiller avec des conditions je pense que c'est faisable.
Mon aide n'est pas très claire, mais bon ... ^^