Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » État des touches
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

État des touches

Posté le 06/11/2019 07:04

Salut ! Je reviens après longtemps pour demander s'il est possible de différencier un état "maintenu" d'un état "click" d'une touche ? C'est surtout pour empêcher l'utilisateur de maintenir la touche perpétuellement...


LephenixnoirHors ligneAdministrateurPoints: 16165 Défis: 140 Message

Citer : Posté le 06/11/2019 08:05 | #


Il faut que tu comptes toi-même le temps qui s'écoule une fois la touche pressée, je suppose.
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 06/11/2019 13:28 | #


Donc par exemple je pourrais faire cela ?

(...définition des vars...)
Do
Getkey→K
Loopwhile K≠31
(...du code de mouvements...)
Do
Getkey→K
LoopWhile K=31
(...suite du code et boucle...)


Ajouté le 06/11/2019 à 13:31 :
Et sinon il faudrait rajouter une variable +1→variable avec une conditions disant que si la variable est égale au nombre défini (le temp maintenu) et bien il "stop" le programme ?
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
LephenixnoirHors ligneAdministrateurPoints: 16165 Défis: 140 Message

Citer : Posté le 06/11/2019 13:35 | #


Ça ne t'empêchera pas de rester appuyé longtemps. Une autre idée, ce serait...

0→T # Temps de pression
10→S # Seuil "clic"/"pas clic" (à choisir)
0→K # Touche pressée

# Attendre qu'une touche soit pressée
Do:Getkey→K
LpWhile K=0

# Compter le temps jusqu'à ce qu'elle soit relâchée
Do:T+1→T
LpWhile Getkey=K

If T<X
Then # Clic
Else # Pas clic
IfEnd
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 06/11/2019 13:44 | #


Merci !
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
DisperseurHors ligneMembrePoints: 1672 Défis: 1 Message

Citer : Posté le 06/11/2019 13:55 | #


Sinon pour gérer proprement l'appui des touches:
while 1 #boucle principale

#Actions a executer avant la pression d'une touche

Do
LpWhile Getkey #tant qu'un touche est pressée on attends

Do
LpWhile Not GetKey #Une fois toutes les touches relâchées on attends une pression

#conditions pour la pression des touches
If GetKey = ....
IfEnd...
WhileEnd

Mes meilleurs jeux
N'hésitez pas, notez !

Jeux BasicCasio / CBasicCasio:
-World Tank War II
-Apollo 11
-GeoGraph ! Élu Jeu du Mois de Mars 2019 !
Jeux C:
-Planétarium 2 ! Chef d'Oeuvre !


√(2+2-2+2-2+2+2-2-2-2) = 0
LephenixnoirHors ligneAdministrateurPoints: 16165 Défis: 140 Message

Citer : Posté le 06/11/2019 15:39 | #


C'est pas vraiment propre parce que comme tu appelles Getkey plusieurs fois au moment de tester les touches pressées, tu peux passer dans plusieurs conditions ou aucune selon le temps que ça se met à s'exécuter. :3
DisperseurHors ligneMembrePoints: 1672 Défis: 1 Message

Citer : Posté le 06/11/2019 15:41 | #


Dans ce cas il faudrait mettre GetKey -> A par exemple, dans la deuxieme boucle Do-LpWhile et tester Not A au lieu de Not GetKey pour reutiliser A dans les conditions
Mes meilleurs jeux
N'hésitez pas, notez !

Jeux BasicCasio / CBasicCasio:
-World Tank War II
-Apollo 11
-GeoGraph ! Élu Jeu du Mois de Mars 2019 !
Jeux C:
-Planétarium 2 ! Chef d'Oeuvre !


√(2+2-2+2-2+2+2-2-2-2) = 0
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 06/11/2019 21:18 | #


Effectivement lephenix avait raison : le fait de mettre plusieurs Getkey faisait capoter la détection de la touche !
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 43 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd