Tutoriel 06
Utiliser les touches dans un programme
Nouvelles commandes :
> getKey = Donne la valeur de la dernière touche préssée [PRGM] [>] [7]
Introduction :
Après les bases, voici quelque chose de très simple qui donnera un aspect plus pro à vos programmes et vous permettra de créer des jeux dignes de ce nom. En effet, la seule commande pour que l'utilisateur (ou le joueur) entre des informations succeptibles de changer le cours du programme (grace aux branchements de la leçon précédente) est Input! Pour un jeu dans lequel vous devez bouger un vaiseau (par exemple), le faire à coups d'Input n'est pas vraiement pratique! Cette leçon très rapide vous apprendra à utiliser les touches de direction dans un programme.
getKey :
C'est la seule nouvelle commande de ce tutoriel. Elle renvoie
un nombre. Vous l'utiliserez exactement de la même façon que
pour toute autre variable. Mais attention : une fois que vous
l'avez utilisée, cette variable reprend la valeur 0 jusqu'à la
prochaine pression sur une touche.
Voici le programme :
:Lbl 0 Devinez : c'est tout frais
normalement (il y a une leçon)
:getKey->K Stoque la valeur de la
dernière touche dans une variable pour pouvoir y accéder
plusieurs fois
:If K Si
K<>0... Souvenez-vous : Une fonction est fausse si elle est
égale à 0 et vraie dans le cas contraire
:Disp K ...Affiche la valeur de K :
Deuxième utilisation de K
:Goto 0 Ferme la boucle pour
attendre un nouvel appui
Notez que l'on aurrai pu écrire "Disp
getKey" directement mais des 0 aurai brouillé la
lecture. Nous l'avons donc stockée dans K et l'avons affiché
seulement s'il était différent de 0 (0 signiffie qu'aucune
touche n'a été présée depuis le dernier appel de la
fonction). Essayez le code suivant et voyez comme les touches
seraient illisibles :
:Lbl 0 Idem :
Début de la boucle
:Disp getKey Affiche directement la
valeur de la dernière touche, même si aucune n'a été
préssée
:Goto 0 Ferme la boucle
Pour quitter l'un des deux programmes appyez sur [ON] pour le
stopper immédiatement puis [1].
Ce programme est aussi utile que ceux pour tester les resultats
des fonctions du menu [TEST] (souvenez-vous : c'était au tutoriel 04). Non pas pour distribuer mais
pour vous, programmeur! Grace à lui, vous pourrez obtenir le
code de la touche que vous souhaitez connaitre pour votre jeu (ou
programme).
Les codes des touches :
Voici le tableau des touches de la TI avec leurs codes
11 | 12 | 13 | 14 | 15 |
21 | 22 | 23 | 24 25 26 | |
31 | 32 | 33 | 34 |
|
41 | 42 | 43 | 44 | 45 |
51 | 52 | 53 | 54 | 55 |
61 | 62 | 63 | 64 | 65 |
71 | 72 | 73 | 74 | 75 |
81 | 82 | 83 | 84 | 85 |
91 | 92 | 93 | 94 | 95 |
102 | 103 | 104 | 105 |
Soit vous gardez toujours une copie du programme que nous
venons de créer sur votre TI, soit vous apprenez le code des
touches par cur! Mais il y a une autre méthode :
Retenez que le nombre des dixaines de la valeur d'une touche est
la ligneà laquelle appartient la touche en question et que
l'unité est la colonne à laquelle elle appartient. Ainsi, la
touch [APPS] est sur la ligne 4 et la colonne 2 ; son code est
donc 42! Idem pour [ENTER] : ligne 10, colonne 5 : 105... Cette
méthode est très simple, facile à retenir et n'encombrera pas
votre TI!
Seules les touches directionnelles poseront problème au début
mais on s'y fait et, à force, on les connait pas cur car
ce sont les plus utilisées.
Bouger une étoile :
Un peu de réflexion... Nous allons maintenant utiliser toutes
les instructions que avons d'appris (sauf Input)
pour créer un programme dans le but de vous montrer
l'utilisation de getKey. Il s'agit
d'appuyer sur les touches de directions pour faire bouger une
étoile à l'écran texte.
Réfléchissez et ne regardez pas la réponse tout de suite...
C'est fait? Bon : qui dit affichage à un endrois précis sur
l'écran texte dit Output(! Ensuite,
et c'est l'objet de la leçon, vous devrez utiliser getKey pour connaitre la dernière pression
de l'utilisateur et comparrer cette valeure à d'autres avec If et des opérateurs logiques ("=" par exemple). Vous devrez faire
plusieures comparaisons, donc vous devrez stoquer la valeur de getKey dans une variable, ainsi que les
valeurs X et Y, coordonnées de l'étoiles. Finalement, vous
devrez insérer une étiquette avec Lbl
au début du programme et un Goto
pour y retourner à la fin et attendre une autre pression de
l'utilisateur.
Voila comment vous devez résonner lorsque l'on vous demande de
faire un programme (ou lorsque vous voulez en faire un). Ne
surtout pas se jeter sur la TI mais réfléchir d'abord à la
façon dont vous allez ordonner le programme et, surtout, comment
vous allez faire pour transformer une règle du jeu (dans le cas
d'un jeu) en une suite d'instructions comprise par la machine à
programmer (car cela est valable pour tout programmeur et
facilite les choses). Ça a l'air laborieux mais, vous verrez,
ça va très vite et vous n'avez pas besoin de tout penser :
juste l'essentiel.
Maintenant que tout est dit (et qu'un point important de la
programmation a été abordé), place au programme que vous
comprendrez, de fait, plus facilement et plus vite...
Voici le programme :
:ClrHome C'est
compris, maintenant...
:5->Y:8->X Initialisation des
coordonnées de l'étoile pour la centrer au début (les deux
points ont le même effet qu'un retour à la ligne et permet une
meilleur lisibilité...)
:Lbl 0 pour la boucle... Comme
précisé ci-avant
:Y->B:X->A Ici, les anciennes
coordonnées sont stoquées dans d'autres variables pour pouvoir
effacer puis la bouger...
:getKey->K Dernière touche
préssée... simple!
:If K=24:X-1->X Regardez le
tableau des touches : Touche gauche : diminuer X de 1
:If K=25:Y-1->Y Idem...
:If K=26:X+1->X Dans la mesure du
possible, et ce pour une meilleur lisibilité, ratachez toujours
la condition
:If K=34:Y+1->Y à son
instruction (ou à Then) par deux points
:Output(B,A," ") Efface
l'étoile (avec les coordonnées sauvegardées et non-modifiées)
au cas ou elle devrai être déplacée
:Output(Y,X,"*") Réaffiche
l'étoile à sa nouvelle position même si elle n'a pas bougé
:If K<>45 Au cas où la touche
est différente de [Cherchez laquelle] alors...
:Goto 0 ... va attendre une autre
touche. Si K est égal à la touche 45 alors le programme
s'arrête car il est arrivé à sa fin et n'a pas été rerouté
vers son début
Ce fut très simple... n'est-ce pas? Je n'aurai même pas du
mettre de commentaires (d'ailleurs, la prochaine fois je n'en
mettrai pas)
Conclusion :
Tutoriel, encore une fois, très simple mais important. Nous en avons profité pour voir la manière dont doit travailler un programmeur, ainsi que les deux points.
Retour : Sommaire
Aide : Liste
des commandes
Précédent : Tutoriel
05 : Conditions et branchements
Suivant : Tutoriel
07 : Les boucles