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

cs_idk Messages postés 16 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 29 juillet 2004 - 11 janv. 2002 à 16:35
Croqmort Messages postés 95 Date d'inscription mercredi 5 décembre 2001 Statut Membre Dernière intervention 27 juin 2006 - 24 janv. 2002 à 09:38
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

Croqmort Messages postés 95 Date d'inscription mercredi 5 décembre 2001 Statut Membre Dernière intervention 27 juin 2006
24 janv. 2002 à 09:38
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!
0
Rejoignez-nous