Obligement - L'Amiga au maximum

Dimanche 24 septembre 2017 - 12:39  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : AMOS - afficher du texte à l'écran
(Article écrit par Jean Monos et extrait de off-soft.com - mai 2016)


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 :

Print "Hello World"

AMOS

Lancez le programme et voilà que "Hello World" apparaît à l'écran. Bravo.

AMOS

Vous pouvez voir que mon texte est encadré par des guillemets droits doubles. Ce qui se trouve entre ces signes, nous appelons ça une chaîne de caractères en français, ou string en anglais.

Mais attention :
  • Quand j'écris "4" avec les guillemets, le 4 dans cet exemple n'est pas une valeur numérique mais bel et bien une chaîne de caractères.
  • Quand j'écris 4 sans les guillemets, le 4 dans cet exemple est bel et bien le chiffre 4.
Gardez cela à l'esprit...

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 on 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é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 :

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, donc nous pouvons rendre le curseur invisible en utilisant cette instruction :

Curs Off

AMOS

Et l'instruction inverse le fait réapparaître :

Curs On

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 :

Locate Position X, Position Y

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). On divise la longueur de la fenêtre par la taille d'un caractère ce qui nous fait 320/8=40. On fait 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...

Locate 40,25

...devrait positionner le curseur en bas à droite.

Faites un test et ajoutez aussi l'instruction "Wait Key" sinon vous n'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... on a 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 :

Locate 39,24

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 :

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 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.

AMOS

Pratique, non ? Mais AMOS a encore d'autres petits tours dans son sac.

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 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 à 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 on a 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 :
  • 40-4=36
  • 36/2=18
Donc :

Locate 18,0
Print "1234"

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 :

Centre "Chaîne de caractères"

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

Les tabulations

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, on le fait avec "Print Tab$".

Testez ce petit bout de code :

Print Tab$ ;"Tabulation"

"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".

Set Tab 2
Print Tab$ ;"Tabulation"

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 :

Print "Hello" ;"World"

...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.
  • Cleft$ pour la gauche.
  • Cright$ pour la droite.
  • Cup$ pour remonter d'une ligne.
  • Cdown$ pour sauter une ligne
Dans cet exemple, on aura bien un espace entre les deux mots :

Print "Hello";Cright$;"World"

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 :

Pen 4
Print "J'ai changé de couleur"
Wait Key

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.

Pen 4
Print "J'ai changé de couleur"
Print "C'est la même couleur"
Wait Key
Pen 8
Print "Oh une autre couleur"

Voici un petit programme pour voir les couleurs. Il y a un peu de variables mais ce n'est pas grave :

For C =0 to 15
Pen C
Print "Voici une couleur ";str$(C)
Next

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 dont le numéro est contenu dans C et comme C est une variable qui gère la boucle, si nous sommes dans cet exemple à la troisième boucle, C vaudra 2 (car 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ée par le "Pen C". Ensuite, on peut voir le point-virgule qui permet de réunir une autre chaîne à la première. Là, je demande d'afficher le contenu de C, donc d'afficher le numéro 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é.
  • Next : permet d'ajouter 1 au contenu 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 en AMOS).
Bon, le résultat est là. Seize phrases affichées avec le numéro du stylo.

AMOS

La deuxième phrase est invisible car elle est de la même couleur que le fond. Nous avons le stylo 3 qui clignote. Ajoutez "Flash Off", et voilà, elle ne clignote plus.

Flash Off
For C =0 to 15
Pen C
Print "Voici une couleur ";str$(C)
Next

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 :

Paper 0
Pen 5
Print "Bonjour"

Nous voilà avec un fond noir et un "Bonjour" écrit en vert clair.

Maintenant, faites ceci :

Paper 0
CLS
Pen 5
Print "Bonjour"

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

D'autres effets de style

AMOS permet encore d'autres effets de style simples à mettre en oeuvre. Pour souligner du texte, 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 cela :

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. 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.

AMOS

Dis-moi Celine, pourquoi ?

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é.

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 qu'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 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 !


[Retour en haut] / [Retour aux articles]