Nous allons ici aborder l'utilisation de la
Getkey. Il s'agit d'une pseudo-fonction récupérant le code de la touche enfoncée.
En effet, chaque touche a un code prédéfini. Ce qui permet, entre autres, à la machine de déterminer que faire lorsque telle ou telle touche est pressée. Ce qui permet de dire
"en appuyant sur EXE, donner le résultat de l'opération ou exécuter l'instruction le cas échéant".
Pour obtenir les codes des touches, je vais vous guider pour la création d'une sorte de "mini-programme" capable de fournir, lorsque l'on appuie sur une touche, le code associé.
Voici les étapes :
1) on crée une pseudo-boucle avec
Goto /
Label
2) cette boucle continue tant qu'une touche n'est pas pressée ;
3) si une touche est pressée, on stocke le code de cette touche dans une variable qu'on affiche immédiatement.
Note de syntaxe :
il suffit de mettre "
Getkey" pour que le programme fournisse le code de la touche appuyée.
Donc :
Code : Autre
stockera le code de la touche appuyée dans A.
Pour trouver
Getkey :
Shift,
Prgm,
F6,
F4 (I/O),
F2 (Gtky).
Vous devriez pouvoir y arriver sans trop de problèmes.
...
Correction !!
Secret (cliquez pour afficher)Code : Autre1
2
3
| Lbl 0
Getkey -> A;
Goto 0 |
Pourquoi une boucle ?
Getkey ne stocke l'appui que lorsque l'utilisateur appuie sur la touche au moment où le
Getkey est appelé. Il faut donc mettre un
Getkey dans une boucle (ou pseudo-boucle dans notre cas) pour qu'il fonctionne concrètement. De plus, pour afficher A, il nous faut utiliser le triangle plein (marqué ici ';', je vous le rappelle).
Voilà : ainsi, en appuyant sur une touche, vous obtenez le code de la touche associée. Un tel programme est souvent utile. Même si ces codes de touches sont tous dans le manuel, vous ne l'avez sans doute pas toujours sur vous.
Nous aurons besoin des codes des touches
EXE, "flèche haute" et "flèche basse" pour notre liste interactive.
Vous obtiendrez :
EXE : 31
Flèche haute : 28
Flèche basse : 37.
J'ignore cependant si ces codes sont similaires pour tous les modèles de CASIO. Il est possible par exemple que cela change entre la Graph35 (celle que j'utilise) et les autres. D'où l'utilisation de ce mini-programme.
Nous avons nos codes de touches, l'utilisation de
Getkey, et nous savons générer une liste statique. Nous savons également générer un affichage où nous le souhaitons sur l'écran.
L'assemblage est un peu compliqué à première vue.
Nous devons créer une
pseudo-boucle dans laquelle nous afficherons notre menu.
Nous aurons une variable, nommée C par exemple, qui indiquera la position du "curseur" sur la liste.
Lorsque l'utilisateur appuyera sur la flèche haute (ou basse), on change la valeur de C en fonction. Et lorsqu'il appuie sur
EXE, on vérifie la valeur de C, pour diriger notre visiteur selon son choix.
Imaginons, par exemple, notre liste statique qui sera bientôt interactive. Lorsque C est égal à 1, cela signifie que notre curseur est sur le premier élément de la liste ("
1 joueur", dans notre cas). Pour C=2, c'est "
2 joueurs", C=3 pour "
Aide", C=4 pour "
Quitter".
En commençant ainsi, vous pouvez voir la structure de notre liste !
Attention, tout de même. Nous devons bien sûr utiliser un
Goto pour sortir de notre pseudo-boucle à chaque fois, mais nous devons également vérifier que notre variable ne passe pas hors des possibilités, c'est-à-dire qu'elle ne soit ni inférieure à 1, ni supérieure à 4.
Cette vérification doit se faire une fois la modification de C en fonction de la Getkey effectuée.
Imaginons que vous utilisiez le Label 1 pour créer la pseudo-boucle, le Label 2 pour commencer le jeu (que ce soit en 1 ou 2 joueurs), et le Label 3 pour arrêter le jeu.
Je rappelle qu'il faut, à chaque passage dans la pseudo-boucle, afficher le curseur selon la valeur de C, et uniquement à cet endroit. N'oubliez pas non plus d'initialiser C à une valeur qui nous convient(pourquoi pas 1 ?

)
Je vous laisse essayer. Il est probable que vous n'y arriviez pas directement. Dans ce cas, relisez les parties de ce tuto, une par une, et surtout celle-ci. Car c'est notre dernière ligne droite.
...
Pas réussi ? Réessayez.
...
Toujours pas ? Bien. Voici la correction.
Secret (cliquez pour afficher)
Code : Autre1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| 1 -> C
Lbl 1
C<1 => 1 -> C
C>4 => 4 -> C
C=1 => Locate 5,3,"->"
C!=1 => Locate 5,3," "
C=2 => Locate 5,4,"->"
C!=2 => Locate 5,4," "
C=3 => Locate 5,5,"->"
C!=3 => Locate 5,5," "
C=4 => Locate 5,6,"->"
C!=4 => Locate 5,6," "
Locate 6,3,"1 joueur"
Locate 6,4,"2 joueurs"
Locate 6,5,"aide"
Locate 6,6,"quitter"
Getkey=31 And C=4 => Goto 3
Getkey=31 And C=3 => Stop
Getkey=31 And C=1 => Goto 2
Getkey=31 And C=2 => Goto 2
Getkey=28 => C-1 -> C
Getkey=37 => C+1 -> C
Goto 1 |
Il ne vous faut pas oublier de positionner les Label 2 et 3, bien entendu. L'avantage d'une telle pseudo-boucle devient évidente. Par exemple, à la fin du texte d'aide, vous pouvez mettre un
Goto 1, ramenant ainsi à la liste

.
La lenteur du curseur et le manque de réactivité sont dûs à la forme de la boucle. Si vous voulez améliorer les performances, insérez les mêmes conditions de
Getkey juste avant l'affichage de la liste (donc une seconde fois).
Il existe quelques façons d'améliorer ce code. Je vais en présenter quelques-unes en annexe

.