|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Introduction Bonjour mes amis programmeurs en AMOS ! Voici un article qui est dédié aux débutants. Nous allons parler des instructions pour jouer avec du texte à l'écran. Vous allez voir, c'est simple et puissant. Attention toutefois : dans ce premier article, je ne vais pas parler de toutes les instructions qui existent, mais juste d'une petite base pour que vous puissiez faire mumuse. Toutes les instructions qui font intervenir des "variables" ne seront pas traitées ici. Cela sera pour plus tard. 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 AMOS, tapez cette instruction :
![]() ![]() Mais attention :
Un autre nom de vocabulaire : une lettre peut être aussi désignée par le terme caractère. Donc voilà, vous savez placer du texte à l'écran avec Print "Chaîne". Le tutoriel est terminé, à la prochaine... Non, je déconne, il n'y pas que ça. Quand nous utilisons la fonction "Print", les lettres sont affichées sur un curseur qui se déplace à droite automatiquement à chaque fois qu'une lettre est posée. Une fois toutes les lettres de la chaîne posées, le curseur se place au début de la ligne suivante. Faites le test avec ceci par exemple :
Vous pouvez voir une petite ligne clignoter. Par défaut, le curseur est visible. Dans un jeu, ce n'est pas beau, donc nous pouvons rendre le curseur invisible en utilisant cette instruction :
![]()
Magique, non ? Bon, c'est bien beau, mais moi je voudrais placer mon texte où je veux. Le BASIC fait bien les choses. Il est possible de déplacer le curseur. Pour cela, nous avons l'instruction suivante :
Attention, il y a un piège. La "Position X" et la "Position Y" ne sont pas exprimées 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 coordonnées X et Y sont exprimées en case. Et une case représente un caractère. Mais il y a combien de cases de disponibles ? Cela dépend de la taille de votre fenêtre : nous allons faire le calcul ensemble. Au démarrage d'AMOS, si vous ne changez rien en programmant, une fenêtre s'ouvre automatiquement avec comme dimension 320x200 pixels. Un caractère, c'est un bloc de 8x8 pixels (64 points allumés ou non). Nous divisons la longueur de la fenêtre par la taille d'un caractère ce qui nous fait 320/8=40. Nous faisons la même chose avec la hauteur : 200/8=25. Notre fenêtre de 320x200 pixels permet donc d'afficher 40 caractères en longueur sur 25 caractères en hauteur, soit 1000 lettres. Donc, dans notre exemple un...
...devrait positionner le curseur en bas à droite. Faites un test et ajoutez aussi l'instruction "Wait Key" sinon vous n'allez rien voir :
("Wait Key" permet d'attendre de l'utilisateur qu'il enfonce une touche du clavier pour continuer le programme) Lancez le programme et... nous avons encore ce message d'erreur, c'est le second piège de la commande "Locate". Le premier caractère en haut à gauche n'est pas "Locate 1,1" mais "Locate 0,0". Eh oui, en informatique on commence souvent par 0. Donc pour aller en bas à droite dans notre exemple, c'est donc :
Et là, ça fonctionne, vous pouvez voir le curseur en bas à droite nous faire un joli clignotement ! Il y a deux trucs sympathiques avec la commande "Locate". Tapez ce programme et regardez un peu son effet :
Vous pouvez omettre la valeur "X" ou la valeur "Y" (attention, il faut quand même placer la virgule), ce qui a pour effet de déplacer le curseur soit sur sa position "X" ou "Y" et de ne pas modifier la position "X" si c'est "Y" qui est modifiée et l'inverse bien sûr. ![]() 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 carreaux. Il s'agit de :
"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 à la virgule comme avec "Locate", et attention à 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ères affichés dans la (fenêtre-nombre de lettre à afficher)/2. Et nous avons notre Locate X (cela fonctionne aussi avec le Locate Y bien sûr). Par exemple, je veux afficher une chaîne avec quatre caractères dans une fenêtre qui peut afficher 40 cases :
C'est centré, enfin, à condition que le nombre de lettres à afficher soit un nombre pair, sinon cela peut être difficile de réaliser un centrage parfait. Maintenant que vous avez la base du centrage de texte, passons à une commande plus rapide pour centrer notre texte :
Avec cela, plus besoin de réaliser de calculs savants, le tour est joué ! Sympathique, non ? Attention, "Centre" n'est pas un "Print". Le curseur ne va pas au début de la ligne suivante. ![]() AMOS ne gère pas trop mal les tabulations. Une tabulation, c'est laisser un espace vide avant du texte. C'est couramment utilisé pour aérer du texte et pour que cela soit plus lisible. La touche "F3" dans AMOS permet de faire des tabulations automatiques de votre code pour plus de lisibilité. Pour faire une tabulation, c'est simple, nous le faisons avec "Print Tab$". Testez ce petit bout de code :
"Tabulation" débute sur la cinquième case. AMOS de base fait une tabulation de quatre cases. Il est possible de modifier cela en cours de route avec l'instruction "Set Tab valeur_numérique".
Le "T" est posé à la troisième case. Pratique, non ? Réunions de deux chaînes Petite aparté. Vous avez vu plus haut que, 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 simplement un saut de ligne. Les chaînes peuvent être réunies avec le point-virgule. Exemple :
...va réunir les deux ! La sortie sera Hello+World = HelloWorld (n'oubliez pas de mettre un espace après "Hello"). Retour sur le mouvement du curseur : quatre instructions permettent de bouger d'une case seulement le curseur.
Informations pour aller plus loin : "Cleft$" et ses petits frères sont tout simplement des constantes qui appellent une valeur officielle ASCII (28 pour right, 29 pour left, 30 pour up, 31 pour down). Ces valeurs ASCII sont des caractères de contrôle qui permettent de bouger un curseur de texte. Un peu de couleur Bon, c'est bien beau tout ça, mais écrire du blanc sur du rouge, cela va bien cinq minutes. Quand vous écrivez un nouveau programme, il y a des paramètres par défaut qui existent. Nous savons que la fenêtre de base est ouverte en 320x200 pixels. Et je peux vous dire qu'il est possible d'afficher 16 couleurs. Quand vous avez du texte, vous l'écrivez avec un stylo, et celui-ci 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 numéro_du_stylo". Exemple :
Bravo ! Vous avez écrit en rouge sang sur du rouge. Ce n'est pas trop lisible mais ce n'est pas grave, cela va être utile plus tard. Petit piège, une fois que le programme interprète l'instruction "Pen X", il va continuer avec la même couleur après. Mais vous pouvez bien sûr changer le numéro du stylo.
Voici un petit programme pour voir les couleurs. Il y a un peu de variables mais ce n'est pas grave :
Décryptons un peu ses lignes.
![]()
Modifier le fond Maintenant que vous savez écrire dans différentes couleurs, il est peut-être sympa de changer ce fond. Et vous savez quoi ? Il y a une instruction pour cela : "Paper numéros_du_stylo". Faites :
Nous voilà avec un fond noir et un "Bonjour" écrit en vert clair. Maintenant, faites ceci :
Voilà, le fond est maintenant totalement noir. Le "CLS" permet d'effacer l'écran et d'appliquer la couleur sélectionnée du "Paper" (fond). ![]() AMOS permet encore d'autres effets de style simples à mettre en oeuvre. Pour souligner du texte, AMOS sait le faire avec l'instruction :
Un autre effet de style peut être sympathique. Testez cela :
Quand "Shade" est activé, il y a en gros un pixel sur deux qui n'est pas affiché dans le caractère. Cela peut être pratique pour montrer une option non disponible par exemple. Testez aussi "Inverse On" et "Inverse Off". Je vous laisse voir les effets. ![]() Bon, un dernier truc pratique dans cet article. Il est possible d'effacer une ligne de caractères avec l'instruction "CLINE" (oui, vous avez compris mon jeu de mots laids ?). En fait, "CLINE" va effacer la ligne horizontale là où le curseur est positionné.
Ce petit exemple vous montre qu'AMOS applique tout simplement sur la ligne la couleur du "Paper" en effaçant tous sur son passage. Voilà, nous avons fini avec la base pour afficher du texte à l'écran en AMOS. Il y a encore beaucoup de choses à dire comme des instructions pour mémoriser le curseur par exemple, mais ceci, c'est une autre histoire !
|