Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : détecter le relachement d'une touche allegro [ Divers / Débutant(e) ] (Darksheep)

lundi 30 juillet 2007 à 15:47:24 | détecter le relachement d'une touche allegro

Darksheep

Salutations !
Ma question est simple : comment détecter les évenements "appuie d'une touche particuliere " "ou "le relachement d'une touche particuliere" avec allegro ?
je dis "particuliere" car avec allegro , on ne dispose que d'une fonction bool keypressed() ou encore les test pour connaître l'état d'une touche ("enfoncée ou non") mais  pas de test pour détecter le relachement et l'appui....
 Exemple : si  on fait if(key[KEY_A]) action();   action() va boucler si on laisse la touche A appuyée. :'(
Sinon on a readkey()>>8  mais readkey() est blockant  dans la mesure on l'on attent qu'on appuie une touche si le keybuff est vide
(on peut l'utiliser avec if(keypressed()) mais alors impossible de déterminer le relachement d'une touche ?!)
Un fan d'allegro parmis vous a une solution à me proposer ?
(Quand je pense que Mugen a été fait avec allegro , avec toutes les combinaisons impossibles et inimaginables de touches pour déclencher une action; et moi qui cherche juste à détecter le relachement d'une touche :'(   )

Cordialement;
Darksheep


lundi 30 juillet 2007 à 17:36:16 | Re : détecter le relachement d'une touche allegro

Darksheep

bon en fait je viens de trouver XD
bon la solution est moche quand même , si quelqu'un a mieux

bool keypressed(int tkey);
bool keyrelease(int tkey);

bool draw = false;
    while (!key[KEY_ESC]) {
     lastk = currentkey;
     currentkey=0;
     for(int i=1;i<127;i++)
     if(key[i])
      currentkey=i;
 
  
        clear(buffer);
 
     if(keyrelease(KEY_UP))
      draw = !draw;
      if(draw)
      textprintf(buffer,font,200,200,3000,"fucccck");
     
    textprintf(buffer,font,200,234,3000,"currentkey %d,lastkey %d",currentkey,lastk);
    blit(buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H);
}

et puis :
bool keypressed(int tkey)
{
if((lastk!=tkey)&&(currentkey==tkey))
 return true;
return false;
}

bool keyrelease(int tkey)
{
if((lastk==tkey)&&(currentkey!=tkey))
 return true;
return false;
}

lundi 30 juillet 2007 à 18:33:35 | Re : détecter le relachement d'une touche allegro

dletozeun

En effet ca a l'air moche!

Mo ice que j'aurais c'est de creer un tableau de la meme taille que le tableau key d'allegro. Puis je souvegarderais le dernier etat de chaque touche dedans. Ensuite lors d'un test sur une touche, si la touche est actuellement pressé et qu'avant elle etait relachée, alors on vien d'enfoncée la touche et on met a jour le dernier etat de la touche ( c a d enfoncée) Inversement pour detecter le relachement d'une, si le dernier etat est enfoncé et que maintenant c'est relaché alors on vient de relaché la touche et de meme on remet a jour le tableau....

J'ai pas testé ce que je viens de dire mais a mon avis ca prend moins de lignes.



Cette discussion est classé dans : détecter, touche, relachement, allegro, particuliere


Répondre à ce message

Sujets en rapport avec ce message

Espoir.Installation de allegro sur Visual c++ 6 [ par garon ] Bonjour.C est par espoir de trouver une bonne ame capable de m expliquer comment on install Winallegro sur visual 6c++.Merci par avance. Comment compiler allegro avec DEV C++??? [ par mastave ] J'ai un gros problème:J'ai DEV C++ et ça fait des mois que j'essaye de compiler allegro(une librairie pour les jeux).Au secours!!! Comment détourner la touche entrée ? [ par Manson ] 'lut,Comment détourner la touche entrée d'une zone de texte en Visual C ?Thanx [BC++]getch() kbhit() Y EN A PAS UNE AUTRE?? [ par idk ] J'ai un probleme! existe t'il une fonction qui dit si une touche du clavier et pressé et en meme tmps qui prenne le code de cette touche?Un peu pres c Intercepter la touche ESC [ par mindark ] BonjourVoila, j'ai un programme qui execute une boucle d'environ 5 mins. Et je voudrais que cette boucle soit executee plusieurs fois, jusqu'a ce que Haute résolution avec Allegro [ par GoldenEye ] j'ai réussi à passer en 800*600 avec Allegro (set_gfx_mode) alors que cette réolution n'est pas prévue par les diverses docs que j'ai trouvées. Est ce Diminuer la vitesse du fade_out avec DJGPP & Allegro [ par GoldenEye ] Qui peut me dire comment on fait pour ralentirla vitesse de fade_out ou de fade_in avec Allegro ?J'ai beau mettre le paramètre de speed au minimumc'es gestion du clavier [ par Myts ] SalutJe programme sous TC++ (turbo c++) sous dos.Et j'ai un probleme concernant la gestion du clavier.Mon jeux, prochainement sur ce site, doit effect clavier : La touche Windows et la touche alt [ par bily ] Vegeta :-)Salut,je voudrais savoir comment a l'aide d'un boutton bloquer et debloquer la touche wndows en esperant que son raccourci "ctrl+echap" soie IMPORTANT CLAVIER WINDOWS BLOQUER [ par bily ] Vegeta :-)Salut,je voudrais savoir comment a l'aide d'un boutton bloquer et debloquer la touche wndows en esperant que son raccourci "ctrl+echap" soie


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,156 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.