La programmation de TI-83 :
Bienvenue dans la rubrique Programmation, j'espère qu'à la fin
de votre "formation" vous serez capables de faire un programme correct
(différent de celui-ci) et de comprendre mes codes sources ! Vous verrez,
la programmation de TI n'a rien de difficile, il n'y a pas beaucoup de commandes
à connaître, il faut juste savoir ce que l'on veut faire et comment
on veut essayer de le faire, après, il suffit de jongler avec les variables,
matrices, listes, graphes, opérations draw et le reste.
Ce que je vous conseille de faire, c'est que, au fur et à mesure que
vous lisez le codes source que j'explique ci-dessous, vous vous arrêtiez
un moment et que vous essayiez de faire un petit programme, simplement avec
les notions que vous venez d'appendre. Au début, avec trois commandes
(disp, ClrHome, pause), puis en insérant des variables (n'oubliez pas
: utilisez la touche "sto" au dessus de "on" pour attribuer
une valeur à une variable. Par exemple, pour attribuer la valeur de 5
à la variable X, on écrira 5X). Ne vous basez pas que sur
mon explication, allez un peu voir votre manuel ; si vous êtes vraiment
perdus, je peux vous aider.
Et maintenant, appuyez sur la touche "prgm" de votre TI, allez dans
"new", appuyez sur "enter" et choisissez un nom de 8 lettres
maximum pour votre programme. Appuyez ensuite à nouveau sur "enter"
et suivez les explications...
Tout d'abord, il faut introduire le programme en effaçant les dessins, l'écran principal et le graphique n° 1 en faisant :
:ClrDraw :ClrHome :"" ![]() |
Une fois que tout est effacé, on va écrire Bienvenue sur la première ligne et mettre une pause pour que le programme ne continue pas tout de suite.
:Disp "Bienvenue"
avec un espace entre disp et les guillemets :Pause Lors de l'execution du programme, il faudra appuyer sur [enter] pour continuer le programme |
Ensuite, on va écrire "On y va" au milieu de l'écran, mettre une pause et effacer l'écran à nouveau :
:Output(4,5,"On y va")
Faites attention à mettre des virgules et pas de points ; la parenthèse finale est optionnelle :Pause :ClrHome |
On va maintenant demander au "joueur" la valeur qu'il veut attribuer à la variable A, puis lui demander son age (pour la valeur B) :
:Prompt A :Input "Ton age : ",B |
Maintenant, on va multiplier son âge par A :
:AB![]() |
On va maintenant lui indiquer le résultat de l'opération, en lui disant que c'est son code, et on va mettre une pause pour qu'il aie le temps de le voir :
:Disp "Ton Code : ",B :Pause :Clrome |
Et maintenant, commençons les opérations draw... Nous allons tout d'abord configurer les dimensions idéales de la fenêtre, à savoir : 94 pixels en largeur et 62 en hauteur. On va alors placer un point à un endroit aléatoire et un au centre et les afficher pour faire un petit serpent. Il ne sera pas dur à programmer, on pourra sortir de l'écran et se crasher n'importe où...Allons-y :
:0![]() ![]() :94 ![]() ![]() :62 ![]() ![]() :randInt(1,94) ![]() :randInt(1,62) ![]() :47 ![]() ![]() :Pt-On(V,W) :Pt-On(X,Y) |
Maintenant, on va regarder sur quelle touche appuie le joueur. Nous allons lui attribuer la valeur de K :
:Repeat Kø0 (tout ce qui suit, jusqu'à End, est répété jusqu'à
ce qu'on appuie sur une touche, que K soit différent de 0) :Getkey ![]() :End |
On va maintenant placer une étiquette. Le programme pourra ainsi revenir à cet endroit quand on lui demandera. Puis, on va programmer la procédure à suivre quand K sera égal à 25 (touche haut) ou à H si vous avez le programme "contrôle".
:Lbl 0 :If K=25:Then (ou K=H si vous avez le prgm "controle") :Repeat Kø0 (tout ce qui suit est répété jusqu'à ce qu"on appuie sur une touche) :Y+1 ![]() :If X=V and Y=W:Goto T (si les coordonnées du serpent et du point sont les mêmes, on va à l'étiquette T) :Pt-On(X,Y)(...et on affiche le point se trouvant aux nouvelles coordonées) :Getkey ![]() :End (Fin de l'instruction "Repeat") :Goto 0:End (on arrive ici quand K est différent de 0 et on est donc redirigé vers l'étiquette 0, et fin de l'instruction End pour que le reste soit pris en compte) |
On peut maintenant répéter toutes ces instructions, pour la droite d'abord (K=26 ou K=D si vous avez téléchargé le prgm controle et changé la valeur de B au début du prgm qui correspondait à l'âge) :
:If K=26:Then :Repeat Kø0 :X+1 ![]() :If X=V and Y=W:Goto T :Pt-On(X,Y) :Getkey ![]() :End :Goto 0:End |
Pour le bas (K=34 ou K=B si vous avez encore un fois changé la variable correspondant à l'âge qui était B)
:If K=34:Then :Repeat Kø0 :Y-1 ![]() :If X=V and Y=W:Goto T :Pt-On(X,Y) :Getkey ![]() :End :Goto 0:End |
Et la gauche (K=24) :
:If K=24:Then :Repeat Kø0 :X-1 ![]() :If X=V and Y=W:Goto T :Pt-On(X,Y) :Getkey ![]() :End :Goto 0:End |
Une fois que vous aurez inséré toutes ces lignes de codes, n'oubliez
pas de tester le programme (directions comme les touches, Pause bien intercalées
etc. Si le serpent ne démarre pas au centre, ne vous en faites pas, c'est
un peu "normal" : en effet, c'est la variable Y qui merde souvent
et qui revient à 0 sans que l'on sache pourquoi... N'hésitez pas
à changer la variable Y dans tout le programme (en Z par exemple). Mais
si vous la changez une fois, faites le partout parceque sinon vous ne comprendrez
plus rien !
On peut maintenant placer l'étiquette T (comme touché).
Le programme se rendra immédiatement vers cette étiquette quand
X=V (le serpent est sur la même ligne que sa cible) ET quand Y=W (le serpent
est sur la même colonne que sa cible), bref quand la cible sera atteinte
:
:Lbl T |
On va maintenant effacer l'écran pour que les traces du serpent ne restent pas et on va écrire un texte en mode texte. Attention, en mode texte, il faut d'abord indiquer le n° de la ligne (sachant que 0 correspond toujours au HAUT et 62 correspond toujours au BAS, quels que soient les réglages "windows"). Attention, n'essayez pas d'écrire sur la ligne 62, le nombre correspond au haut de la lettre (et il est impossible d'écrire en dehors de l'écran). Sachez aussi que pour sauter une ligne, il faut sauter à-peu-près 7 lignes pour ne pas réécrire par dessus le reste. Une fois qu'on a indiqué le numéro de la ligne, il faut mettre celui de la colonne, où 0 correspond à la gauche, et 94 à la droite, quels que soient les réglages windows :
:ClrDraw :Text(20,30,"Bravo !") :Text(27,0,"Passons a la suite !" :Pause :ClrDraw |
Maintenant, on va dessiner un cercle au centre de l'écran (47,31) de rayon 20 et on va tracer une courbe de formule F(x) = 2x² + 3
:"X![]() ![]() :Circle(47,31,20) |
On va aussi écrire "clique ici" dans le cercle :
:Text(27,29,"Clique ici") |
Pour "cliquer", le joueur utilisera la curseur des graphiques que l'on obtient avec input. Quand il appuiera sur "enter", les coordonnées de X et Y seront enregistrées et on pourra les utiliser pour vérifier s'il a bien "cliqué" dans le rond (la zone concernée sera au fait un carré) :
:Lbl I :Input :If X>27 and X< 67 and Y>11 and Y< 51:Then :ClrDraw :Goto S :Else:Goto I :End |
On va maintenant placer l'étiquette S et on va redemander son code au joueur. S'il répond juste (C=B), il sera félicité, sinon, il sera blâmé :
:Lbl S :Input "Ton code ?",C :If CøB:Then :Output(4,1,"Bouh T'es nul !" :Pause:Goto I :Else :Output(4,1,"Felicitations !" :Output(8,6,"Bravo !" :Pause :ClrHome :Stop |
Voilà ! Avec l'instruction "Stop", votre programme est maintenant
terminé et prend dans les 630 octets (variable selon le titre), ce qui
est plutôt raisonnable pour un premier programme ! Mon premier programme
en prenait 112, c'est pour dire...
Si vous avez d'autres questions ou si vous avez rencontré des bugs dans le programme,
surtout : Visitez
mon forum !
:ClrDraw :ClrHome :"" ![]() :Disp "Bienvenue" :Pause :Output(4,5,"On y va") :Pause : :ClrHome :Prompt A :Input "Ton age : ",B :AB ![]() :Disp "Ton Code : ",B :Pause : :Clrhome :0 ![]() ![]() :94 ![]() :62 ![]() :randInt(1,94) ![]() :randInt(1,62) ![]() :47 ![]() ![]() :Pt-On(V,W) :Pt-On(X,Y) : :Repeat Kø0 :Getkey ![]() :End : :Lbl 0 : :If K=25:Then :Repeat Kø0 :Y+1 ![]() :If X=V and Y=W:Goto T :Pt-On(X,Y) :Getkey ![]() :End :Goto 0:End : :If K=26:Then :Repeat Kø0 :X+1 ![]() :If X=V and Y=W:Goto T :Pt-On(X,Y) :Getkey ![]() :End :Goto 0:End : :If K=34:Then :Repeat Kø0 :Y-1 ![]() :If X=V and Y=W:Goto T :Pt-On(X,Y) :Getkey ![]() :End :Goto 0:End : :If K=24:Then :Repeat Kø0 :X-1 ![]() :If X=V and Y=W:Goto T :Pt-On(X,Y) :Getkey ![]() :End :Goto 0:End : :Lbl T : :ClrDraw :Text(20,30,"Bravo !") :Text(27,0,"Passons a la suite !" :Pause :ClrDraw :"X ![]() ![]() :Circle(47,31,20) :Text(27,29,"Clique ici") : :Lbl I :Input :If X>27 and X< 67 and Y>11 and Y< 51:Then :ClrDraw :Goto S :Else:Goto I :End : :Lbl S :Input "Ton code ?",C :If CøB:Then :Output(4,1,"Bouh T'es nul !" :Pause:Goto I :Else :Output(4,1,"Felicitations !" :Output(8,6,"Bravo !" :Pause :ClrHome :Stop |