Accueil Forum A Propos
Afficher du texte à l'écran.

Introduction
Bonjour mes amis programmeur en amos ! Voici un article qui est dédié au débutant. Nous allons parler des instructions pour jouer avec du texte à l'écran ! Vous allez voir c'est simple et puissant ! Attention dans ce première article je ne vais pas parler de toutes les instructions qui existe juste une petite base pour que vous poussiez faire mumuse. Toutes les instructions qui font intervenir des "variables" ne seront pas traité ici. Cela sera pour plus tard !
L'amos est un langage de programmation de la famille des BASIC. Et le BASIC utilise l'instruction PRINT pour sortir du texte à l'écran.
Dans l'amos tapez cette instruction :
Print "Hello World"
Hello World
Lancez le programme, et voila que Hello World apparaît à l'écran. Bravos.
Hello World
Vous pouvez voire que mon texte est entouré par des guillemet droits double.  Ce qui se trouve entre ses signes, nous appelons ça une chaîne de caractère en français, ou String en Anglais.
Attention :
"4" => 4 dans cette exemple n'est donc pas une valeur numérique mais belle et bien une chaîne.
4 => 4 dans cette exemple est belle et bien le chiffre 4 !
Gardez ça à l'esprit…
Un autre nom de vocabulaire, une lettre peut être aussi désigné par le terme Caractère.
Donc voila vous savez placer du texte à l'écran avec Print " Chaîne ". Le tuto est fini, à la prochaine…
Non je déconne, il n'y pas que ça.
Quand on fait utilise la fonction Print, Les lettres sont affichées sur un Curseur qui se déplace à droite automatiquement à chaque fois qu'une lettre est posé. Une fois toutes les lettres de la chaîne posé, le curseur va à la ligne suivante et au début !
Faite le teste avec ceci par exemple :
Print "Hello World"
Print "Je suis Monos"
Vous pouvez voir une petite ligne clignoter… Par défaut le curseur est visible.
Dans un jeu ce n'est pas beau, nous pouvons rendre le curseur invisible en utilisant cette instruction :
Curs Off
Et l'instruction inverse le fait réapparaître :
Hello World
Curs On
Magique non ?
Bon c'est bien beau mais moi je voudrais placer mon texte ou je veux ! Le Basic fait bien les choses. Il est possible de déplacer le curseur. Pour cela, nous avons l'instruction suivante :
Locate Position X, Position Y
Attention il y a un piège. La Position X et la Position Y ne sont pas exprimés en Pixel ! Donc si vous vous amusez à écrire Locate 160,100 pour positionner le curseur au milieu, vous allez avoir droit au message d’erreur "Illegal text window parameter at line x." En gros vous êtes en dehors de la fenêtre.
Avec Locate, les coorodinnés X et Y sont exprimées en Case. Et une Case représente un caractère.
Mais il y a combien de case de disponible ? Cela dépend de la taille de votre fenêtre nous allons faire le calcule ensemble. Au démarrage de l'amos, si vous ne changez rien en programmant, une fenêtre s'ouvre automatique avec comme dimension 320 px sur 200 px.
Un caractère c'est un bloc de 8 px sur 8px. (64 points soit allumer ou pas)
On divise la longueur de la fenêtre par la taille d'un cataracte ce qui nous fait 320/8=40, on fait la même chose avec la hauteur. 200/8 =25.
Notre fenêtre de 320px sur 200px permet donc d'afficher 40 caractère de longueurs sur 25 caractère de hauteurs soit 1000 lettres.
Donc dans notre exemple un :
Locate 40,25 
Devrait positionner le curseur en bas à droit !
Faite un test et ajoutez aussi l'instruction Wait Key sinon vous allez rien voir :
Locate 40,25
Wait Key
(Wait Key permet d'attendre de l'utilisateur qu'il enfonce une touche du clavier pour continuer le programme)
Lancez le programme et …
Encore ce message d'erreur, c'est le 2nd piège de la commande Locate.
Le première caractère en haut à gauche ce n'est pas Locate 1,1 mais 0,0. Et oué en informatique on commence souvent par 0. Donc pour aller en bas à droite dans notre exemple c'est donc :
Locate 39,24
Et la ça fonctionne, vous pouvez voir le curseur en bas à droite nous faire un jolie clignotant !
Il y a deux trucs sympathique avec la commande Locate. Tapez ce programme et regardez un peu son effet :
Locate 39,24
Wait Key
Locate 0,
Wait Key
Locate 39,24
Wait Key
Locate ,0
Wait key
Vous pouvez omettre la valeur X ou la valeur Y. (Attention, il faut quand même placer la virgule), ce qui à pour effet de déplacer le curseur soit sur ça position X ou Y et de ne pas modifier la position X si c'est Y qui est modifié et l'inverse bien sur. Pratique non ! Mais l'amos a encore d'autre petit tour dans son sac.

Hello World
Vous voulez faire revenir votre curseur en position 0,0 ? Locate 0,0 fonctionne bien mais l'instruction :
Home
C'est bien aussi. Home permet de faire revenir le curseur au début de votre fenêtre.
Il existe aussi une instruction pour bouger le curseur d'un certain nombre de carreau.
L'instruction :
CMOVE X,Y

CMOVE 1,
permet de déplacer le curseur d'une case à droite.
CMOVE -1,
Permet de le faire à Gauche.
CMOVE ,1
Permet de déplacer le curseur d'une case en bas.
CMOVE 1,1
Permet de déplacer le curseur d'une case en bas et à droite.
Attention au virgule comme Locate et ne pas dépasser les limites de votre fenêtre.
Un peu de style !
Je veux centrer un texte comment je fais ?
Soit vous testez visuellement avec Locate pour tout centrer
Soit vous appliquez une formule :
La formule est simple, nombre de caractère affichage dans la (fenêtre-Nombre de lettre à afficher)/2.
Et on a notre Locate X. (Cela fonctionne aussi avec le Locate Y bien sur)
Exemple je veux afficher une chaîne avec 4 caractère dans une fenêtre qui peux afficher 40 cases.
40-4 =36
36/2 =18
donc :

Locate 18,0
Print "1234"
 
C'est centrer. Enfin à condition que le nombre de lettre à afficher soit un nombre Paire sinon cela peut être difficile faire un centrage parfait. (sauf si le nombre de lettre pouvant être affichées sont impaire la ça peux le faire)

Bon maintenant que vous avez la base du centrage de texte, passons à une commande plus rapide pour centrer notre texte :
Centre "Chaîne de caractère"
Plus besoin de de faire de calcule savant, le tour est joué ! Sympathique non ?
A attention, Centre n'est pas un Print. Le curseur ne va pas au début de la ligne suivante.

Curseur
Les Tabulations :
Amos gère pas trop mal les tabulations. Une Tabulation, c'est laisser un espace vide avant du texte. C'est couramment utilisé pour aéré du texte, et que cela soit lisible. La touche F3 dans l'amos permet de faire des tabulations automatique de votre code pour plus de lisibilité, si vous ouvrez un livre, souvent au début d'un paragraphe, ne commence pas au début mais possède des espaces vides.
Pour faire une tabulation c'est simple c'est Print Tab$
Testez ce petit bout de code.

Print Tab$ ;"Tabulation"
Yopla, "Tabulation" débute sur la 5em case. L'Amos de base fait une tabulation de 4 cases. Il est possible de modifier cela en cours de route avec l'instruction Set Tab valeur_numérique.
Set Tab 2
Print Tab$ ;"Tabulation"
Le T est posé à la troisième case.
Pratique non.

Réunions de deux chaînes.
Petite apparté. Vous avez vu que plus haut aprés le print tab$ j'utilise un point virgule (;) et j'ajoute une nouvelle chaîne. Je ne saute pas de ligne (ou utilise les deux points) avec un nouveau Print "Chaîne"
Pourquoi ? Cela évite tout simple un saut de ligne. Les chaîne peuvent être réunis avec le point virgule.
Exemple :
Print "Hello" ;"World"
Va réunir les deux !
La sortie sera Hello+World = HelloWorld.
(N'oubliez pas un espace avant World ou après Hello ah ah !

Retour sur le mouvement du curseur !
4 instructions permetent de bouger d'une case seulement le curseur.
Cleft$ pour la gauche
Cright$ pour la droite
Cup$ pour remonter d'une ligne.
Cdown$ pour sauter une ligne.

Print "Hello";Cright$;"World"
Dans cette exemple on aura bien un espace entre les deux

Information pour aller plus loin ! Cleft$ est ses petits frère sont tout simplement des constance qui appelle une valeur officiel ASCII. (28 pour right, 29 pour left, 30 pour up, 31 pour Downs,) C'est valeurs ASCII sont des caractère de contrôle qui permet de bouger un curseur de texte.
On reviendras sur l'ASCII dans un autre article.

Un peu de couleur !
Bon c'est bien beau tout ça, mais écrire du blanc du rouge, cela va bien 5 minutes.
Quand vous écrivez un nouveau programme, il y a des paramètres par défaut qui existe.
Nous savons que la fenêtre de base est ouvert en 320px sur 200px. Et je peux vous dire qu'il est possible d'afficher 16 couleurs !
Quand vous aviez du texte, vous l'écrivez avec un stylo, et vous avez un stylo qui possède 16 couleurs. La première couleur est le stylo 0 et la dernière dans notre cas est le stylo 15
Pour changer de stylo, c'est simple, il faut utiliser l'instruction :
Pen numeros_du_stylo
Exemple :
Pen 4
Print "J'ai changé de couleur"
Wait Key
Bravos vous avez écris en Rouge sang sur du rouge.
C'est pas grave ! Cela va être utile plus tard.
Petit piège, une fois que le programme intérpretre l'instruction Pen X, il va continuer avec la même couleur après. Mais vous pouvez bien sur re changer le numéros du stylo.
Pen 4
Print "J'ai changé de couleur"
Print "C'est la même couleur"
Wait Key
Pen 8
Print "Ho une autre couleur"
Voilà un petit programme pour voir les couleurs !
Il y a un peu de variable mais c'est pas grave :

For C =0 to 15
Pen C
Print "Voici une couleur ";str$(C)
Next
Couleur
Décryptons un peu ses lignes
For C = 0 to 15
Nous allons entrer dans une boucle et répéter les instructions tant que C est compris entre 0 et 15.
Pen C
Nous allons prendre le stylo donc numéros est contenue dans C et comme C est une variable qui gère la boucle, si nous sommes dans cette exemple à la 3em boucle, C vaudra 2. (Car oui on débute à 0) donc le stylo sera le numéro 2 à la troisième boucle.

Print "Voici une couleur ";str$(C)
On affiche le texte avec une couleur déterminé par Le Pen C. (Non je ne fais pas de blague sur ça)
ensuite on peux voir le point virgule qui permet de réunir une autre chaine à la première. La je demande d'afficher le contenue de C. Donc d'afficher le numéros du stylo. Mais comme on ne mélange pas les serviettes et les torchons, le str$(C) permet de dire, hey oh la valeur contenue dans C n'est plus une valeur mais une chaîne. Et le tour est joué.
Enfin Next permet d'ajouter 1 au contenue C, de repartir au début de la boucle et si le nouveau C est compris en 0 et 15, on rejoue une nouvelle fois la boucle. (Et non je ne fais pas Next C, c'est inutile avec l'Amos)
Bon le résultat est la. 16 phrase affiché avec le numéros du stylo. La 2em phrase est invisible car de la même couleur que le fond et nous avons le stylo 3 qui clignote.
Flash Off
For C =0 to 15
Pen C
Print "Voici une couleur ";str$(C)
next
Rajouté Flash Off.
Et voila ça clignote plus.

Modifier le fond !
Bon maintenant que vous savez écrire dans différente couleur, il est peut être cool de changer ce fond et vous savez quoi, il y a une instruction pour ça.
Paper numéros_du_stylo
Faite :
Paper 0
Pen 5
Print "Bonjour"
Nous voila un fond noir sur Bonjour écrit en vert claire.
Cool non ?
Bon faite ceci

Paper 0
CLS
Pen 5
Print "Bonjour"
Voilà, le fond est maintenant totalement Noir
Le CLS permet d'affacer l'écran et d'appliquer la couleur sélectionné du paper.
Fond
D'autre Effet de Style.
L'amos permet encore d'autre effet de style simple à mettre en œuvre.
Souligner du texte ? L'amos sait le faire avec l'instruction :
Under ON
Print "Texte souligné"
Under Off
Print "Le texte n'est plus souligné"

Un autre effet de Style peut être sympathique. Testez ça.
Shade On
Print "Ce texte n'est pas dispo"
Shade Off
print "Ce texte est dispo"
Quand Shade est activé, il y a en gros un pixel sur deux qui n'est pas affiché dans le caractère. Ce qui peut être pratique pour montrer une option non disponible par exemple.
Testez aussi Inverse On et Inverse Off.
Je vous laisse voir les effets.
Style

Dit moi Celine, pourquoi…
Bon un dernier truc pratique dans cette article. Il est possible d'effacer une ligne de caractère avec l'instruction :
CLINE
(oué vous avez compris mon jeu de mot laid)
En faite CLINE va effacer la ligne horizontale ou le curseur est positionné.
Print "Texte"
Locate 10,0
Print "Texte 2"
Wait key
Locate 10,0
Wait Key
Paper 0
Cline
wait key
Ce petit exemple vous montre que l'Amos applique tout simplement sur la ligne la couleur du Paper en effaçant tous sur son passage.
Voilà, on a fini avec la base pour afficher du texte à l'écran. Il y a encore beaucoup de chose à dire comme des instructions pour mémoriser le curseur par exemple, mais ceci, c'est une autre histoire !

Monos
Off-Soft est un site dédié au Rétro Making Amateur , publié par Offgame