[BC++]getch() kbhit() Y EN A PAS UNE AUTRE??

Signaler
Messages postés
16
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
29 juillet 2004
-
Messages postés
95
Date d'inscription
mercredi 5 décembre 2001
Statut
Membre
Dernière intervention
27 juin 2006
-
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 comme sur les calculette Ti 82 -83 (getkey)! Car en faite je veux faire un petit jeu ou une barre se deplace gauche-droite! Avec getch c'est une catastrophe! et avec kbhit +
getch aussi!
Merci!

1 réponse

Messages postés
95
Date d'inscription
mercredi 5 décembre 2001
Statut
Membre
Dernière intervention
27 juin 2006

si tu est sous dos
ce que tu peut faire c'est detourner l'interruption clavier
sous bc++ ça donne ça :
#include <dos.h>
#define KEYBOARD_INT 0x09
#define KEY_BUFFER 0x60
#define KEY_CONTROL 0x61
#define INT_CONTROL 0X20

void _interrupt _far New_Key_Int();
void (_interrupt _far *Old_Kbd_Isr)();
void Initialise_Key();
void Key_Actif();
void Key_Inactif();

void Initialise_Key(){
Old_Kbd_Isr=_dos_getvect(KEYBOARD_INT);
};

void Key_Actif(){
_dos_setvect(KEYBOARD_INT, New_Key_Int);
};

void Key_Inactif(){
_dos_setvect(KEYBOARD_INT, Old_Kbd_Isr);
};

void _interrupt _far New_Key_Int(){
asm{
sti
in al, KEY_BUFFER
xor ah, ah
mov raw_key, ax
in al, KEY_CONTROL
or al, 82h
out KEY_CONTROL, al
and al, 7fh
out KEY_CONTROL, al
mov al, 20h
out INT_CONTROL, al
}
if(raw_key<128)
// la touche ayant pour code : "raw_key" est pressé
else
// la touche ayant pour code : "raw_key" est
relaché
}

bon c'est peut etre un peu violent comme methode mais j'ai fait un jeu de vaisseau avec et ça marche impec !

-----------------
Réponse au message :
-------------------------------

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 comme sur les calculette Ti 82 -83 (getkey)! Car en faite je veux faire un petit jeu ou une barre se deplace gauche-droite! Avec getch c'est une catastrophe! et avec kbhit +
getch aussi!
Merci!