Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Calculatrices > Casio > Langage Basic CASIO > Les Graphismes > Les différents modes d'effacement > Lecture du tutoriel

Les différents modes d'effacement

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : Ilae
Visualisations : 681

Plus d'informations Plus d'informations
Nous allons maintenant voir les différentes fonctions et principes d’effacement de l’écran graphique de l’écran et les appliquer à un petit programme qui vous fera penser au jeu du serpent.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Cls

Cls



Cette fonction, dont je vous ai déjà donné le chemin d?accès ci-dessus, permet d?effacer toute la partie visible (vous comprendrez ce terme par la suite) de l?écran. Elle ne prend en compte aucun paramètre : il suffit de la placer dans le code.
Retenez bien cette fonction car bien que très simple, elle est très usuelle.
Voici donc une nouvelle fois son chemin d'accès (afin que vous le mémorisiez) : [Shift], [F4] (Sketch), [F1] (Cls).


Text " "



Cette astuce va nous permettre d?effacer une partie bien définie de l?écran contrairement à la fonction Cls qui efface tout l?écran. Il suffit en fait d?afficher grâce à la fonction Text des espaces. Une fois qu?on le dit, ça paraît évident. N?est-ce pas ?


ClrGraph



Cette dernière fonction permettant d?effacer l?écran va vous permettre de comprendre le terme que j?ai employé pour la fonction Cls (partie visible). En effet, elle ne fait pas qu?effacer l?écran ; elle rétablit aussi tous les paramètres d?origine (axes, grille, labels, ViewWindow?).
Comme la fonction Cls, elle ne prend en compte aucun paramètre. Son chemin d?accès est : [Shift], [VARS] (Prgm), [F6], [F1] (Clr), [F2] (Grph).

Notre petit programme...

Que pourrions-nous faire cette fois-ci ? Une idée ? Eh bien moi j'en ai une, nous allons afficher à l'écran un symbole que nous allons faire bouger grâce aux flèches de direction. Afin de bien vous faire comprendre l'utilité des systèmes d'effacement, nous allons effectuer ce programme en deux temps : d'abord sans effacement afin que vous vous rendiez compte qu'il y a un problème et ensuite avec effacement.
Le symbole que nous allons afficher est le signe "multiplier" (x). Il faudra pouvoir diriger ce symbole grâce aux flèches de direction présentes en haut à droite du clavier de votre calculatrice. Nous allons
procéder comme précédemment, je vous donnerai des astuces mais ne les lisez que si vous n'arrivez pas à le faire seul. Bonne chance !
Notez que je ne vous donne au départ que très peu d'indications pour que vous appreniez par vous même à tout faire !

Sans effacement



astuce n°1 :
Secret (cliquez pour afficher)
Utilisez des variables comme paramètres de la fonction texte (et pas X et Y parce que ça pourrait planter) ! Quelque chose du genre : Code : Autre
1
Text A, B, "x"



astuce n°2 :
Secret (cliquez pour afficher)
Utilisez la fonction Getkey pour changer les nombres retenus dans les variables.


astuce n°3
Secret (cliquez pour afficher)
Voici un bout du code :
Code : Autre
1
2
3
4
5
6
7
Lbl 1

Text A, B, "x"

Getkey = 27 => B+1->B

Goto 1

N'essayez pas de caser ce morceau de code dans le votre, c'est juste une indication. Il faudra changer certaines choses afin qu'il puisse marcher. N'essayez donc pas de faire du copier-coller, faites marcher votre cervelle :p .





Bon normalement vous devriez avoir trouvé. Si ce n'est pas le cas, effectuez la même démarche qu'au TP précédent.


Voici donc la solution (notez que vous pouvez avoir un code différent) :
Secret (cliquez pour afficher)
Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Cls

63 -> B

33 -> A

0 -> X

While 0<1

Text A, B, "x"

Getkey -> X

X=27 => B+1 -> B

X=38 => B-1 -> B

X=28 => A-1 -> A

X=37 => A+1 -> A

WhileEnd


Les espaces que j'ai ajoutés dans mon code ne devront pas être recopiés sur votre CASIO. Je les ai mis pour rendre le code plus lisible.


A quoi sert la boucle While ? Et pourquoi une telle condition ? o_O

J'étais sûr que ceci allait vous poser problème... C'est une boucle infinie (en effet 0 est toujours inférieur à 1 donc la condition est toujours respectée) car il faut toujours que la calculatrice soit prête à ce que nous appuyions sur une touche.

Pourquoi n'avons nous pas réglé de fenêtre d'affichage ?
Et bien parce que la fonction Text n'utilise pas la fenêtre d'affichage, elle se réfère aux pixels. Donc pourquoi s'encombrer de lignes de code inutiles ? :-°



Ca paraît tout simple maintenant. Non ? Mais il se peut que vous ayez un problème... En effet lorsque votre symbole arrive au bord de l'écran et le dépasse un message d'erreur arrive ! Eh oui, comment voulez vous que la calculatrice affiche un symbole dont les coordonnées ne sont pas comprises dans la fenêtre d'affichage. Eh bien elle plante lamentablement. Si jamais vous avez une idée pour contourner ce bug, mettez la de côté, nous essaierons de le résoudre à la fin (car ce n'est pas notre principal souci).
Vous aurez remarqué que le symbole laisse une longue trainée derrière lui et au bout de quelques temps de déplacement on ne voit plus rien. C'est dommage, un si beau programme pour rien :( .Eh bien faisons en sorte qu'il n'y ait à chaque fois qu'un symbole d'affiché (le dernier déplacé sinon ça n'a aucun intérêt).

Avec effacement



Eh bien à vous de trouver. Ca ne devrait pas être très dur si vous avez tout bien compris.

Indication :
Secret (cliquez pour afficher)
Il n'y a qu'une fonction à rajouter.


Il est fort probable (si vous avez réussi) que lorsque vous exécutez votre programme, le symbole clignote en permanence (normal puisqu'il est à chaque fois effacé puis réaffiché). Ne vous en souciez pas pour l'instant, nous y réfléchirons à la fin (chaque chose en son temps :p ).


Eh bien voici la solution au cas où vous n'auriez pas trouvé...

Secret (cliquez pour afficher)
La fonction à rajouter est la fonction Cls. Si vous n'avez pas trouvé, essayez de la placer dans le code afin que ça marche et surtout essayez de comprendre pourquoi.
<secret cache="0">Voici donc maintenant le code complet :
<span class="code">Code : Autre</span><div class="code2"><table class="syntaxtable"><tbody><tr><td class="linenos"><pre>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 </pre></td><td class="code"><div class="syntax"><pre>Cls 63 -> B 33 -> A 0 -> X While 0<1 Cls Text A, B, "x" Getkey -> X X=27 => B+1 -> B X=38 => B-1 -> B X=28 => A-1 -> A X=37 => A+1 -> A WhileEnd</pre></div></td></tr></tbody></table></div>

<div class="rmq information">Il y a d'autres emplacements possibles pour la fonction Cls.</div>

</secret>


Si jamais vous n'avez pas réussi ces deux exercices seul, relisez le chapitre sur les graphismes (et éventuellement celui sur le Getkey) et retentez. Si vous comprenez le code c'est déjà une bonne chose mais ce n'est pas tout.

Quelques améliorations



Vous avez remarqué que notre programme a deux problèmes :
- le clignotement du symbole
- le bug lors de la sortie de l'écran du symbole.

Eh bien qu'attendons-nous ? Résolvons les !
Nous allons commencer par le deuxième problème car c'est le plus facile. Nous allons procéder de la même manière que d'habitude : vous essayez de vous débrouiller seul (sans que je ne vous dise rien) et je vous mets des astuces au cas où vous ne trouviez pas (dans ce cas ce ne serait pas anormal).

Indication n°1 :
Secret (cliquez pour afficher)
Quel est le problème en fait ? C'est que les paramètres pris en compte par la fonction Text ne sont plus valides. Pourquoi ? Parce que A est devenu supérieur à 63 ou inférieur à 1 ou parce que B est devenu supérieur à 127 ou inférieur à 1.


Indication n°2 :
Secret (cliquez pour afficher)
Deux solutions s'offrent donc à vous :
- soit vous faites réapparaître le symbole de l'autre côté de l'écran (une fois qu'il est sorti d'un côté)
- soit vous faites en sorte que la fonction ne réponde plus lorsque le symbole sort de l'écran.
A vous de choisir.


Voici la solution :
Secret (cliquez pour afficher)
Normal, nous avons oublié de prendre en compte la largeur et la hauteur de notre symbole (3 pixels sur 3). Et bien résolvons ce problème en remplaçant dans le morceau de code que nous venons de rajouter (les 4 lignes de condition) les 127 par des des 124 (car 127-3=124) et les 63 par des 60 (car 63-3=60). Et voilà ça devrait marcher à la perfection maintenant...
Pourquoi le symbole ne s'affiche pas lorsque nous allons trop à droite ou trop en bas de l'écran ?

J'ai utilisé la solution où lorsque le symbole sort d'un côté de l'écran il réapparait de l'autre (que je trouve plus correcte). Si vous avez trouvé un code où l'autre marche, c'est bon !

Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Cls

63 -> B

33 -> A

0 -> X

While 0<1

Cls

Text A, B, "x"

Getkey -> X

X=27 => B+1 -> B

X=38 => B-1 -> B

X=28 => A-1 -> A

X=37 => A+1 -> A

A=128 => 1->A

A=0 => 127->A

B=64 => 1->B

B=0 => 63->B

WhileEnd



Il resterait le problème du clignotement à résoudre mais vous n'avez pas (encore) assez de compétences pour le résoudre. Nous pourrions le faire mais ce ne serait pas une bonne idée de ma part de vous montrer comment faire car ça vous ferait utiliser un code qui ne serait pas du tout optimisé et vous prendriez de mauvaises habitudes... Donc nous nous arrêtons là pour ce TP.

On ne pourrait pas l'enrichir un peu ?

Ah oui, j'allais oublier. Si vous vous sentiez d'attaque vous pourriez créer un autre symbole fixe sur l'écran que vous devriez aller "manger" avec votre premier symbole (une sorte de "jeu du serpent"). Je vais vous donner quelques indications.
Comme vous ne savez pas encore utiliser la fonction qui tire un nombre au sort (car la position de notre symbole fixe devra être aléatoire), je vais vous donner les deux lignes de code dont vous aurez besoin (en effet, une pour l'abscisse et une autre pour l'ordonnée :-° ). Les voici donc :
Code : Autre
1
2
3
Int 60Ran#+1 -> D

Int 124Ran#+1 -> C

Pour les petits curieux, je ne vous expliquerai pas le fonctionnement de cette fonction pour ne pas troubler votre esprit de jeune programmeur. Nous la verrons dans quelques temps (en effet elle est assez complexe).
Et maintenant afin que vous ne fassiez pas un programme qui n'est que bidouillage, je vais vous indiquer une nouvelle fonction qui sera très utile et qui est très simple : And.
Voici son chemin d'accès : [OPTN], [F6], [F6], [F4] (logic) , [F1] (And). Elle vous permettra de lier deux éléments d'une condition. Un exemple de code pour que vous compreniez (il n'a rien à voir avec l'exercice en cours) :
Code : Autre
1
A=3 And B=4 => 5->C

Explications : il faut que les deux conditions soient respectées pour que C prenne la valeur 5. Avouez tout de même que son utilisation est très simple. Nous l'étudierons plus précisément (ainsi que ses copines Or et Not) dans quelques chapitres.

Eh bien vous êtes parti ! Je ne vous donne aucune autre indication ! Je ne vous donne pas non plus de solution : si vous voulez le faire, vous devez le faire tout seul ! Lorsque vous programmerez, je ne serai pas là pour vous guider et vous donner les solutions. Il faut prendre les bonnes habitudes dès maintenant. Si jamais vous bloquez, posez la question dans les commentaires, je répondrai. ;)
Bonne chance !

Eh bien maintenant vous comprenez l'utilité de ces fonctions (autrement que pour effacer l'écran en début de programme).
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 18/04/2007 à 20:22:57
Modifié : le 22/08/2008 à 15:51:13
Avancement : 95%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 555 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0449s (0.0324s)