Salut,
pour le nombre magique :
{$EXTERNALSYM KF_UP}
KF_UP = $8000;
0+
Cirec
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 15 nov. 2004 à 18:24
«je comprend pas a koi sert 32768 svp»
Un entier est de type INTEGER. Mais souvent il est nécessaire de passer 2 nombres dans la même variable. Pour pouvoir réaliser ceci, il faut ruser. On déclare 3 entiers notés ix, et on définit i3 comme: "i3:=i1 or i2;"
On vient donc de combiner 2 entiers dans le 3ème. Pour savoir si i1 ou i2 sont contenus dans i3, on effectue un autre calcul (pas vraiment la réciproque):
if i3 and i1 = 0 then ShowMessage('i1 est dans i3')
else ShowMessage('i1 n''est pas contenu dans i3');
Dans le code de fabiin, la fonction GetAsyncKeyState renvoie une combinaison de nombres. Il effectue un test AND avec le nombre magique 32768 afin de savoir s'il est contenu dedans. Mais ce nombre vaut en réalité 0. Ho ???
C'est tout à fait normal. GetAsyncKeyState renvoie un SHORTINT comme résultat, mais version C++. C'est pas le même que Delphi (ce serait sinon -32768). En fait, c'est compliqué car SHORTINT(32768)=0 selon Delphi, mais en même temps, il est dit que SHORTINT=-32768..32767. Il y a une incohérence, mais vous devez bien voir le truc. Ici, 32768 dépasse les limites de sous-étendues de SHORTINT (32768>32767). Du coup, on reboucle un tour. Autre exemple: BYTE va de 0..255. Mais le nombre 256 vaut 0 en byte, 257 vaut 1, 258 vaut 2 ...etc. Une boucle !!
Et donc la présence ou non d'un 0 dit si une touche a été pressée ou non. Ou du moins, ça peut donner ce genre d'informations.
Sinon, une remarque: fabiin fait une boucle de 0 à 255 en revérifiant à chaque fois l'état du clavier. Mais il me semble qu'il existe une fonction qui renvoit l'état du clavier à un instant T via un tableau de longueur totale 256. Ensuite, il suffit juste de naviguer dedans. Je ne retrouve plus le nom... ou alors ça n'existe pas.
cs_subzero
Messages postés71Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention24 février 2012 3 mars 2004 à 23:02
Exact! En fait, on doit insérer un sleep et un Application.ProcessMessages pour éviter de saturer le cpu. Plus le delai de Sleep sera court, plus le proc sera solicité, à+
cs_gamez
Messages postés34Date d'inscriptionsamedi 14 juin 2003StatutMembreDernière intervention27 janvier 2007 3 mars 2004 à 21:17
quand on appuye sur aucune toucheet quon attends, lutilisation du proc est au maximum à cause de la boucle, non?
cs_subzero
Messages postés71Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention24 février 2012 16 janv. 2003 à 20:33
Salut à tous, j'ai voulu faire la même chose! Là où j'ai été bloqué, c'est quand j'ai voulu les touches spéciales...
Si ça vous branche, allez voir le sujet "Touches de clavier en simultanné". C'est un clavier virtuel, qui marche avec un hook, c'est à dire qu'il est capable de fonctionner en arrière plan, et capture vraiement toutes les touches. J'ai intégré à l'archive, un programme pour déplacer le curseur de la souris avec les touches... à+
cs_Zynox
Messages postés11Date d'inscriptionvendredi 4 octobre 2002StatutMembreDernière intervention 2 mars 2004 3 déc. 2002 à 18:00
oué c pas mal, seré tu faire la meem chose pr avoir le scancode ?
pour ski est de l utilisé ac un jeu oui, ms un jeu a 2 joueur sur le clavier ? ac multu touche tu seré modifier ?
pr le 32768 moi non plus je comprends pas ^^
creatix74
Messages postés6Date d'inscriptionsamedi 19 octobre 2002StatutMembreDernière intervention20 novembre 2002 31 oct. 2002 à 01:12
je comprend pas a koi sert 32768 svp
cs_anderson2
Messages postés2Date d'inscriptionvendredi 18 octobre 2002StatutMembreDernière intervention 2 décembre 2002 19 oct. 2002 à 13:48
ouiais, vachement interessant, pour faire des jeux par exemple...
g0belin
Messages postés155Date d'inscriptionjeudi 6 décembre 2001StatutMembreDernière intervention19 avril 2010 6 févr. 2002 à 20:56
11 févr. 2006 à 03:01
pour le nombre magique :
{$EXTERNALSYM KF_UP}
KF_UP = $8000;
0+
Cirec
15 nov. 2004 à 18:24
Un entier est de type INTEGER. Mais souvent il est nécessaire de passer 2 nombres dans la même variable. Pour pouvoir réaliser ceci, il faut ruser. On déclare 3 entiers notés ix, et on définit i3 comme: "i3:=i1 or i2;"
On vient donc de combiner 2 entiers dans le 3ème. Pour savoir si i1 ou i2 sont contenus dans i3, on effectue un autre calcul (pas vraiment la réciproque):
if i3 and i1 = 0 then ShowMessage('i1 est dans i3')
else ShowMessage('i1 n''est pas contenu dans i3');
Dans le code de fabiin, la fonction GetAsyncKeyState renvoie une combinaison de nombres. Il effectue un test AND avec le nombre magique 32768 afin de savoir s'il est contenu dedans. Mais ce nombre vaut en réalité 0. Ho ???
C'est tout à fait normal. GetAsyncKeyState renvoie un SHORTINT comme résultat, mais version C++. C'est pas le même que Delphi (ce serait sinon -32768). En fait, c'est compliqué car SHORTINT(32768)=0 selon Delphi, mais en même temps, il est dit que SHORTINT=-32768..32767. Il y a une incohérence, mais vous devez bien voir le truc. Ici, 32768 dépasse les limites de sous-étendues de SHORTINT (32768>32767). Du coup, on reboucle un tour. Autre exemple: BYTE va de 0..255. Mais le nombre 256 vaut 0 en byte, 257 vaut 1, 258 vaut 2 ...etc. Une boucle !!
Et donc la présence ou non d'un 0 dit si une touche a été pressée ou non. Ou du moins, ça peut donner ce genre d'informations.
Sinon, une remarque: fabiin fait une boucle de 0 à 255 en revérifiant à chaque fois l'état du clavier. Mais il me semble qu'il existe une fonction qui renvoit l'état du clavier à un instant T via un tableau de longueur totale 256. Ensuite, il suffit juste de naviguer dedans. Je ne retrouve plus le nom... ou alors ça n'existe pas.
3 mars 2004 à 23:02
3 mars 2004 à 21:17
16 janv. 2003 à 20:33
Si ça vous branche, allez voir le sujet "Touches de clavier en simultanné". C'est un clavier virtuel, qui marche avec un hook, c'est à dire qu'il est capable de fonctionner en arrière plan, et capture vraiement toutes les touches. J'ai intégré à l'archive, un programme pour déplacer le curseur de la souris avec les touches... à+
3 déc. 2002 à 18:00
pour ski est de l utilisé ac un jeu oui, ms un jeu a 2 joueur sur le clavier ? ac multu touche tu seré modifier ?
pr le 32768 moi non plus je comprends pas ^^
31 oct. 2002 à 01:12
19 oct. 2002 à 13:48
6 févr. 2002 à 20:56