Les commandes de programmation sur les calculatrices TI (suite 3)

 

 

Vous êtes intéressés par la programmation de votre TI-83 ? Vous voulez vous aussi créer des programmes divers, des logiciels ou des jeux sur votre TI-83, TI-82 ou même sur votre TI-89 ? (le langage utilisé est généralement le même : le TI-basic) Cette page est faite pour vous ! A travers plusieurs exemples détaillées et des photos d'écran de ma TI (images crées à l'aide du TI-graph link), vous pourrez facilement et rapidement apprendre à programmer votre calculatrice en TI-basic ! Nous analyserons chaque instruction, du If, au GetKey, en passant par le Input, le Disp ou les instructions graphiques !

 

 

III. Les instructions graphiques -Opérations Draw) :

Venons-en maintenant au plus intéressant : les commandes qui permettent de tracer des lignes, des points ou des cercles à l'écran. Sans ces instructions, les meilleur jeux sur Ti n'auraient pas pu voir le jour (Bataille Navale, Serpent, Morpion, Puissance 4, Demineur, et j'en passe et des meilleurs). De plus, ce sont des instructions très simples à utiliser, et le plus dur sera de toujours devoir travailler avec des coordonnées ; c'est pourquoi nous allons commencer par nous créer des reglages simples que nous garderons.
Notez que si vous ne savez pas utiliser les instructions expliquées dans les 2 pages précédantes, vous arriverez peut-être à tracer des lignes et à faire de jolies choses à l'écran, mais vous ne pourrez pas interargir avec. Soyez donc sûrs de maîtriser les commandes de type Contrôle et Entrée/Sortie pour facilement maîtriser les futures instructions (n'hésitez pas à refaire les exemples). Maintenant, courage, le plus dur est appris, les instructions suivantes sont très simples à utiliser !
Note : Au cas où vous ne l'auriez pas remarqué, ces instructions se trouvent dans le menu [DRAW] : [2nd], [PRGM].

 

 

Reglages :

Je parlais tout-à l'heure de réglages qui nous permettraient de travailler avec des coordonnées simples. Ces reglages sont ceux qui sont utilisés dans la plupart de mes jeux (sauf peut-être les premiers), et je les trouve parfaits. Voyons comment les inclure dans un programme :
:0-->Xmin:0-->Ymin
:1-->PasX:1-->PasY

Que signifient ces reglages et déjà, comment les rentre-t-on dans le programme ? Tout d'abord, La première ligne signifie simplement que le coin en bas à gauche de l'écran possède les coordonnées {0,0}. C'est une bonne chose, celà veut dire qu'aucune coordonnée ne sera négative. Pour trouver les instructions Xmin et Ymin, allez dans VARS, 1:Window (ou fenêtre), puis 1 pour Xmin et répétez avec 4 pour Ymin.
Une fois que celà est fait, on va aussi s'arranger pour que les coordonnées soient claires, et que l'on puisse placer les points exactement où l'on veut (je pense ici aux virgules). Pour faire disparaître les coordonnées embêtantes, nous allons décider qu'un pixel à l'écran correpondra à une graduation (bref, on va créer un repère orthonormal). Celà permettra entre autre de tracer des cercles vraiment ronds (essayez avec un reglage non orthonrmal : vous obtiendrez une ellipse) !!! Pour créer cette graduation de 1pixel=1unité, on va chercher les instructions PasX et PasY (ce sont des deltas dans la version anglaise). Il faut encore aller dans VARS, puis dans Window (fenêtre), et efnfin choisir 8 pour PasX, et 9 pour PasY.

Conséquences : la fenêtre aura 94 graduations en largeur, et 62 en hauteur ! Baladez le curseur, vous n'aurez jamais de coordonnées négatives, ni décimales. Pour vous entrainer, essayez de trouver les coordonnées des coins de la fenêtre et du milieu de l'écran (rappel : on exprime l'abscisse, puis l'ordonnée). Vous pensez avoir trouvé ? Cliquez ici pour vérifier ;-)

Si vous savez comment exprimer les coordonénes de points, et si vous vous sentez à l'aise avec cette configuration, le plus gros du travail est achevé, puisque les instructions ne font qu'utiliser votre amaîtrise des coordonnées !

 

ClrDraw (EffDessin) :

Cette instruction est la plus facile à comprndre et à utiliser : elle permet d'effacer les dessins. Celà signifie que l'instruction n'efface ni l'écran de calcul (celui devant lequel on se trouve lorsqu'on allume la calculatrice), ni les axes de graphiques, ni les graphiques eux-mêmes, ni les courbes de statistique. Cette instruction n'efface en fait que ce qui est faisable avec les autres instructions DRAW. Je pense qu'il est inutile de vous faire un dessin, vous aurez compris que l'instruction ClrDraw est très simple d'utilisation. Et puis tant qu'on y est, voilà la liste des instructions nécessaires pour effacer absolument tout l'écran, comme ça, tout sera clair :

:ClrHome Efface l'écran de calcul
:ClrDraw Efface les dessins
:AxesOff Enleve les axes
:""-->Y1 Desactive le graphique 1
:PlotsOff Desative les courbes statistiques (plots)



Line (Ligne) :

Cette instruction est une des plus utilisées, et pour cause, elle permet de tracer facilement une ligne en n'exprimant que les coordonnées des deux extrémités constituant cette ligne.
Par exemple, pour tracer deux lignes faisant une croix sur l'écran, on écrira :
:Line(0,0,94,62) Trace une ligne du coin inférieur gauche au coin supérieur droit de l'écran
:Line(0,62,94,0) Trace l'autre diagonale de l'écran

Il est aussi à noter que lorsque l'on rajoute la valeur 0 comme cinquième argument (optionnel) de la fonction Line, cette ligne est tracée "en blanc", c'est-à-dire qu'elle est effacée. Ce cinquième argument de la fonction peut être n'importe quel nombre, s'il est différent de 0, il est optionnel car la ligne est tracée, sinon, la ligne est effacée.



Horizontal :
Extrèmement simple, cette instruction trace une ligne horizontale qui traverse tout l'écran à l'ordonnée choisie. Ainsi, on pourra écrire Horizontal 62 au lieu de Line(0,62,94,62) pour tracer une ligne tout en haut de l'écran.
Cette fonction n'accepte pas 0 comme deuxième argument pour effacer l'horizontale, il faut pour celà utiliser la fonction Line().


Vertical :
Cette fonction est pareille que la précédente, sauf qu'elle trace une droite verticale à l'abscisse mentionnée comme argument.


Tangeant (Tangeante) :

Cette fonction est peu utilisée dans les jeux, puisqu'elle est surtout destinée à un usage mathématique. On doit mettre en argument la fonction à dessiner et l'abscisse à laquelle on veut tracer la tangeante à cette courbe.
:Tangeant(X3-5X,1.5)



DrawF (DessFonct) :

Cette fonction aussi est surtout destinée à un usage mathématique, puisqu'elle permet de tracer la courbe d'une équation que l'on passe en seul argument. Les deux instructions suivantes affichent la même chose à l'écran :
:DrawF X2
:"X²"-->Y1
:Pause
L'avantage de DrawF est de ne pas placer l'équation dans une fonction prévue à cet effet (Y1, Y2 …), ce qui permet ensuite de l'effacer avec un simple ClrDraw !


Shade (Ombre) :

Cette fonction est la plus complexe de toutes les fonctions Draw et comprend plusieurs arguments (dont beaucoup sont optionnels)/ Voici sa syntaxe : Shade(lowerfunc, upperfunc[, Xleft, Xright, pattern, patres]). Le manuel explique de la meilleure des façons comment utiliser la fonction Shade :
Shade représente graphiquement les deux fonctiosn de X lowerfunc et upperfunc sur le graphe en cours et ombre la zone qui se trouve exactement au dessus de lowerfunc et en dessous de upperfunc. Seules les zones ou lowerfunc est strictement inférieur à upperfunc sont ombrées.
Xleft et Xright, s'ils sont spécifiés, indiquent les bornes gauche et droite de l'ombreage. Xleft et Xright doivent être des nombres compris entre Xmin et Xmax, qui sont les valeurs apr défaut lorsque Xleft et Xright sont omis.

pattern spécifie l'un des quatre motifs d'ombrage.
pattern=1vertical (valeur par défaut)
pattern=2horizontal
pattern=3pente-négative 45°
pattern=4pente-positive 45°

patres spécifie la résolution de l'ombrage au moyen d'un entier compris entre 1 et 8.
patres=1ombre chaque pixel (valeur par défaut)
patres=2ombre un pixel sur deux
patres=3ombre un pixel sur trois
patres=4ombre un pixel sur quatre
patres=5ombre un pixel sur cinq
patres=6ombre un pixel sur six
patres=7ombre un pixel sur sept
patres=8ombre un pixel sur huit


:Shade(X3-8X,X-2)
:Shade(X-2,X3-8X,-3,2,2,3)



DrawInv (DessRecip) :

Cette petite fonction permet de dessiner la courbe d'équation passée en seul argument, mais l'axe des abscisses est devenu vertical et celui des ordonnées horizontal !!! Voyez l'action de cette fonction associée à DrawF pour comparaison : (note: les valeurs windows sont pour cet exemple, celles obtenues en choisssant le Zoom Standart, puis Orthonormal)
:DrawF X2
:DrawInv X2



Circle (Cercle) :

On revient maintenant dans les fonctions courantes et simples d'utilisation avec Circle() qui permet de tracer un cercle en exprimant les coordonnées de son centre, suivies du rayon de ce cercle (en unités sur le graphique, pas en pixels). Si le zoom n'est pas orthonormal (ce n'est pas le cas avec nos réglages prédéfinis, pas d'inquiétude donc), ce n'est pas un cercle qui est dessiné, mais une ellipse. Le cercle peut dépasser de l'écran sans bug.
Attention, il est encore une fois impossible de rajouter l'argument 0 comme dans Line() pour effacer le cercle ! (mais ClrDraw fera l'affaire pour tout effacer ;-)


Text (Texte) :

Cette fonction permet maintenant d'écrire des textes sur l'écran de dessin, contrairement aux fonctions Disp ou Output. Les arguments à passer en paramètre sont : La ligne à laquelle on écrit (en pixel, donc indépendant des réglages window, leur valeur doit être entière et comprise entre 0 et 57), puis la colonne (en pixel toujours, entre 0 et 94), puis le texte entre guillements ou la variable.
On peut écrire autant que l'on veut sur une même ligne, même si elle dépasse l'écran, et on peut alterner chaînes de caractères et variables comme suit :
:Text(20,0,"Votre score (",S,") est fabuleux !"


Note : la fonction Pen (Stylo)
Elle ne peut pas être utilisée dans un programme, mais seulement telle quelle, hors d'un programme. On appuie sur Enter pour l'activer (et trace des points à chaque passage du curseur), puis de nouveau sur Enter pour la désactiver. Encore une fois, elle n'est pas disponible dans un programme.

 

 

IV. Les instructions graphiques - les points :



Il est inutile de passer en revue chacune de ces fonctions simplistes, mais il y a quand même quelques "trucs" à retenir :
Déjà, les instructions commençant par Pt (point) agissent sur des points, c'est-à-dire dont les coordonnées varient selon les reglages window. Grâce à celà, ces points peuvent avoir des coordonnées décimales et négatives. A cause de celà, dans nos reglages predefinis par exemple, on ne fera pas la différence entre le points de coordonnée (20,4.12) et (20,4.13), ce qui explique que l'on ne peut peut pas faire de tests trop complqués dessus (comme voir si le point est noir ou blanc).
Les instructions commençant par Px (pixel), elles, agissent sur les pixels de l'écran, c'est-à-dire ceux qui sont 94*62 utilisables par un programme TI-Basic, et pas plus. Les coordonnées de ces pixels ne changent JAMAIS, quels que soient les reglages window, et doivent toujours être entiers et ne pas dépasser de l'écran. Contrairement aux coordonénes par points qui s'expriment par exemple Pt-On(47,31) pour tracer un point au milieu de la fenêtre, les coordonnées des pixels s'expriment en exprimant d'abord l'ordonnée (dont le 0 est en haut, comme pour la fonction Text), puis l'abscisse qui est comme dans les reglages predefinis (0 à gauche, 94 à droite).
Pour passer des points au pixels, il existe une petite formule pour nos reglages.
Exemple :
:Input On demande un point au joueur
:62-Y-->A:X-->B Voici la conversion
:
:Pt-On(X,Y)
:Pxl-On(A,B) Ces deux instructions placent le même point !


Petite note sur les instructions de points et de pixel : On exprime toujours deux arguments (les coordonnées), et on doit utiliser la fonction Pt-Off ou Px-Off pour effacer un point, et non pas rajouter 0 au bout de la ligne. Les instructions Px-Change et Pt-Change changent simplement la couleur du point concerné (devient noir s'il était blanc, et blanc s'il était noir). On ne peut que tester la présence d'un points en travaillant avec des Pixels et en utilisant l'instruction Px-Test. Cette instruction renvoie 1 (vrai) s'il y a un pixel allumé aux coordonnées demandées, sinon 0.

Traduction en version FR : les instructions se terminant par On en anglais se terminent par -Aff en français, et -Off devient -NAff.


Voilà, si vous avez suivi tous les tutoriels jusqu'ici, vous n'avez aucune excsue : vous êtes totalement capable de faire les meilleurs programmes Basic sur TI : tout ce qu'il vous faudra de plus sera de l'imagination et un peu de bon sens !