Programmation Basic Casio/Aspects graphiques

Et maintenant, un tutoriel sur les possibilités de la programmation graphique, passionnante dans les calculatrices.
Ce tutoriel n'est que valable pour les graph 85.

===> CORRECTION : ce tutoriel est aussi valable pour les graph 35+ ( et 35 aussi il me semble ) ainsi qu'en partie aux graph 25+

L'écran

modifier

L'écran d'une calculatrice Casio (je parlerai de la graph 85 car c'est le modèle que j'ai) est divisé en pixel. Il comporte 127 colonnes de 63 pixels.

Pour définir ces points, nous utiliserons les mêmes coordonnées qu'en mathématiques, x et y, à l'exception d'un petit détail: le point d'origine est en haut à gauche... (que sur certaine calculatrices! Testez en faisant un PlotOn 5, 40 et vous verrez)

Ça donne à peu près ça:

0
|------------------------>
|                  x: 127
|
| y: 63
|
|
|
V



Le « View Window »

modifier

Pour afficher quoi que ce soit sur l'écran, vous devez d'abord définir le graphique: on utilise le « ViewWindow ».

ViewWindow: shift, F3, F1

Il faut écrire:

    ViewWindow 1,127,0,1,63,0

(ceci est le ViewWindow de base). Cependant on peut tres bien utiliser un ViewWindow tel que

    ViewWindow 50,80,0,10,60,0

Cependant il est assez rare d'utiliser un viewwindow de ce genre... (les valeurs que j'ai mises sont des exemples, elles n'ont rien de particulier)

À noter qu'un utilisateur ne sachant pas manipuler le ViewWindow de sa calculatrice (shift f3) aura des soucis pour tracer des graphiques après avoir utilisé votre programme si vous ne remettez le ViewWindow a sa valeur par défaut à la sortie du programme.

ViewWindow -6.3,6.3,1,-3.1,3.1,1

Le « Text »

modifier

Pour afficher un texte, on utilise... le « Text ». Il est l'équivalent du Locate mais contrairement à celui-ci, marche sur les graphiques

Text <=> Graphiques;

Locate <=> Programme "standard"

Text: shift, F4, F6, F6, F2

Il faut écrire;

    ViewWindow 1,127,0,1,63,0
    Text y,x,"texte à écrire"

Oui on définit d'abord le y avant le x pour Text.

Pour locate on utilise

    Locate x,y,"texte à écrire"

Attention, l'écran du locate n'est pas en 127/63 mais en 21/7 !

Les « Plot »

modifier

Ils permettent d'afficher ou d'effacer un pixel de l'écran. Il y en a trois types:

    PlotOn             Affiche un pixel
    PlotOff             L'éteint
    PlotChange      Change son statut: PlotOn => PlotOff et vice-versa

Plot: shift, F4, F6, F1, F2 ou F3 ou F4

Il faut écrire;

    ViewWindow 1,127,0,1,63,0
    PlotOn x,y     (ou PlotOff x,y   ou PlotChg x,y)


Les « F-Line »

modifier

Ils permettent de tracer des lignes, surprise !

F-Line: shift, F4, F6, F2, F2

On l'utilise de la manière suivante: F-Line [x du point de départ] , [y du point de départ] , [x du point d'arrivée] , [y du point d'arrivée]

Il faut écrire;


    ViewWindow 1,127,0,1,63,0
    F-Line 12,31,56,31


Bon, c'est tout ce que j'ai à vous raconter, prenez-en soin!

La couleur

modifier

Si vous possédez une Graph65, Graph65+ ou Graph80 vous pouvez afficher 3 couleurs. On emploie pour ça les fonctions Blue, Green et Orange.
Voici la syntaxe:

<Fonction: Couleur> <Fonction: Graphique> <Propriétés: Fonction Graphique>

Option graphique des Statistiques

modifier

En fait, si ce que vous chercher à faire est un jeu, vous vous rendrez vite compte que faire des graphisme en F-Line, c'est impossible. Pourquoi? Simplement parce que c'est trop lent. Il existe un moyen beaucoup plus puissant pour afficher ligne, point, croix... Il s'agit... du... DrawStat !

Qu'est-ce donc?! me direz vous, il s'agit simplement de tracer un graphique à partir des listes statistiques. Si on veut tracer une ligne de coordonnée A(15;20) B(45;50), à la place d'écrire

F-Line 15,20,45,50

Qui est simple mais lent, il faudrait écrire

{15,20}->List1
{45,50}->List2
S-Graph1,DrawOn,xyline,List1,List2,1,dot
Drawstat

Mais c'est affreusement long !... Certes, pour afficher une ligne ça n'a que peu d'intérêt, mais si cette ligne doit ce déplacer, cela aura déjà un impact significatif sur la fluidité! D'ailleurs, dans les jeux, le DrawStat est généralement compris dans une boucle Do/LpWhile, ce qui fait que vous ne le marquez qu'une fois ; de même, la ligne du S-Graph1 n'est à définir qu'une fois (sauf si vous nettoyez le graph avec ClrGraph...) et les listes également! en fait, si ont veut simplement faire bouger la ligne vers la droite, voici le code nécessaire avec les 2 manières :

15->A
45->B
Do
Cls
F-Line A,20,B,50
Isz A
Isz B
LpWhile 1

Ou bien en Drawstat :

{15,20}->List1
{45,50}->List2
S-Graph1,DrawOn,xyline,List1,List2,1,dot
Do
Cls
Drawstat
List1+1->List1
LpWhile 1

On remarque que la taille du moteur de ce programme (entre Do et LpWhile) est plus ou moins de la même taille, pour une fluidité bien supérieur avec du drawstat. (Ne vous attendez quand même pas à sortir un jeu 3D sur calculatrice, même en Drawstat sa sera lent...).

On peut également placer des points en Drawstat, ce qui permettrai de faire un déplacement qui ne clignote pas autant qu'en PlotOn :

1->A
30->B
Do
PlotOff A-1,B
PlotOn A,B
Isz A
LpWhile 1

Ce qui donne en Drawstat :

{1}->List1
{30}->List2
S-Graph1,DrawOn,Scatter,List1,List2,1,dot
Do
Cls
Drawstat
List1+1->List1
LpWhile 1

Mieux qu'un point, pourquoi pas un petit carré ou bien même une croix?

{1}->List1                                                                            
{30}->List2
S-Graph1,DrawOn,Scatter,List1,List2,1,cross
Do
Cls
Drawstat
List1+1->List1
LpWhile 1

Travaux pratiques

modifier

On va faire un logiciel de dessin TRÈS basique... Vous déplacez le curseur avec les flèches et ça dessine!

Connaissez-vous les Getkey?

Vous allez vous servir des flèches pour dessiner... Essayez tout seul. Vous ne trouvez pas ?

La syntaxe est la suivante:

  • On annonce le graph avec ViewWindow.
  • On annonce les variables, par ex: 20->x et 20->y
  • Le tout est dans une boucle.

SI on appuie sur , c.à.d. Getkey 27, ALORS valeur de x augmente... SI on appuie sur , c.à.d. Getkey 38, ALORS valeur de x diminue... etc... ensuite un p'tit Plot de coordonnées x,y et on ferme la boucle.

Corrigé:

ViewWindow 1,127,0,1,63,0
20->x
20->y
While (y⩾-20)
Getkey=27 => x+1-> x
Getkey=38 => x-1 -> x
Getkey=37 => y-1 -> y
Getkey=28 => y+1 -> y
PlotOn x,y
Getkey=47 => Stop
WhileEnd

N'oubliez pas que cet exemple est basique, vous pouvez le développer !