begin process at 2012 02 10 21:46:25
  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...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 7,800 sec (3)

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