Vous n'êtes pas identifié.
J'utilise le foncyion readkeyb(); dans cyclo deux et je cherche comment effacer le buffer des touche a un certain moment dans le jeu.
Ou bien, y a t il une autre technique pour la gestion du clavier ( y'en a t il pas une avec des #define)
Bon allé, encore 2 heures de cour et puis, de retour en face de mon pc... lol
voila ce que j'utilise pour les touches:
char getkb( void )
{
unsigned char key;
asm push es;asm push di;asm push ax;
asm mov ax,0x40;
asm mov es,ax;
asm mov di,0xAF;
asm mov al,es:[di];
asm mov key,al;
asm pop ax;asm pop di;asm pop es;
return key;
}
et pour effacer le buffer clavier:
void emptybuf( void )
{
while (bioskey(1)) getch();
}
ceci vient des librairies made by KTR
Hors ligne
Petit correctif, la routine que tu présente à été faite par Duobab.
Sinon pour les touches j'utilisais les routines de X-Th, mais maintenant celles de Whyp, qui sont plus faciles à utiliser (on peut faire des définitions de touches dans une lib à part)
Hors ligne
Ya ke ca de moi et encore :
void emptybuf(void) { while (bioskey(1)) getch(); }
!
Hors ligne
Pour effacer le buffer des touches rien de tel que :
pokeb(0x41, 0xB, peekb(0x41, 0xD));
Hors ligne
j'ai une meilleur idée et c'est plus rapide que getch
origine:
void emptybuf(void)
{
while (bioskey(1)) getch();
}
modif
void emptybuf(void)
{
while (bioskey(1)) bioskey(0);
}
c un peu plus rapide
Hors ligne
en fait bioskey avec l'argument 1 ça capte une touche à la volée et ça n'en attend pas??? sinon 2072 ta routine bug en touches multiples (sachant que g pas désactivé l'int 9)
Hors ligne
Bon voilà la fonction que j'utilise dans TOUCHE, (il faut que la var global CASIO soit égale à 1 si le programme tourne sur la calto) :
void clear_key_buf ( void ) { int i; pokeb(0x41, 0xA + CASIO, peekb(0x41, 0xC + CASIO)); for (i=(0xE + CASIO); i<=(0x2C + CASIO); i+=2) { poke(0x41, i, 0x0000); } }
Hors ligne
La g rien sous la main, alors je peut pas verifier, mais y avais pas une ft de l'int 16h qui effaçais le buffer ?
Hors ligne
la fonction de 2072 marche pour les touches multiples ? c'est toujours pour mon tuto.
Hors ligne
nop, euh qu' est ce ke je dit, vi ya des touches multiples ds touche !!
bin demande lui, ms si tu prend les miennes, elles sont tres simples( car non optimiser !) et elles s'expliquent par elle meme pour autant que tu sache quelque truc en C !
Hors ligne
il n'y a pas de buffer pour les touches multriple mais si tru ne désactive pas l'interruption du clavier la calto les enregistre et qd tu cesseras d'utiliser les touches multiples alors le buffer se videra avec le premier programme qui va le lire, donc avant de quitter ton prog vide le buffer avec la fonction que j'ai donné.
Hors ligne
demande à Superna je sais au'il l'a déjà fait.
Hors ligne
X-thunder il me semble que c'est çà:
/////////Desactivates Int9//////////
int OldInt9Seg,OldInt9Off; //Addresses
void desactint9(void){asm {
xor ax,ax //Save Adresses in vars
mov es,ax
mov ax,es:0x26
mov OldInt9Seg,ax
mov ax,es:0x24
mov OldInt9Off,ax
mov ax,es:0x03FE //Replace with Null Interupt
mov es:0x26,ax
mov ax,es:0x03FC
mov es:0x24,ax }}
void actint9(void){asm{
xor ax,ax
mov es,ax
mov ax,OldInt9Seg
mov es:0x26,ax
mov ax,OldInt9Off
mov es:0x24,ax } }
c'etait avec tes routines multitoutche! mais jamais utilisé!
Hors ligne
la question n'est là !
ce sont bien des ofncition pour désactiver l'int 9 ?
Hors ligne