begin process at 2010 02 10 13:21:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

détecter le relachement d'une touche allegro


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

détecter le relachement d'une touche allegro

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ée 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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales