CODINGPROGRAMMATION INITIATION ALIGATOR ★ LES MODES GRAPHIQUES ★

Ali Gator - 02. Les Modes Graphiques (Micro-Mag)

Outre les trois modes texte 0, 1 et 2 qu'on lui connaît, le CPC dispose de modes graphiques très intéressants méritant une étude approfondie.
Effleurés lors de la précédente leçon sur les caractères de contrôle, examinons plus en détail les possibilités qu'ils nous offrent.

I - L'inversion vidéo

Permet de faire ressortir un mot ou une phrase dans un texte par permutation de PEN avec PAPER. Le texte à afficher s'écrit avec la couleur du fond et le cadre dans lequel il se trouve prend la couleur du stylo en cours. On obtient cet effet en faisant précéder la variable à écrire d'un CHRS(24) ; exemple :

MODE 0 : PEN 3 : PRINT CHR$(24) + "MICRO MAG" +CHR$(24)

Le retour à la normale s'obtient par le deuxième CHR$(24) annulant l'effet de vidéo inverse.

II - Le mode transparent

S'obtient avec la commande PRINT CHR$(22) + CHR$(1). L'annulation se fait avec PRINT CHR$(22) + CHR$(0). Ce mode autorise la superposition de plusieurs caractères sans effacer le précédent. Dans la mesure où ces derniers sont affichés dans des couleurs différentes, on peut rivaliser avec les fameux sprites du langage machine.

Pour ce qui est de les déplacer c'est une autre histoire, mais la création de décors fixes s'y prête fort bien. Après l'utilisation du mode transparent, ne pas oublier de revenir à la normale car celui-ci reste actif, même à la reprise du listing Sous mode transparent, la modification d'une ligne en utilisant la touche COPY relève dès lors de la haute voltige.

Comme il est fastidieux d'écrire plusieurs fois ces commandes. une bonne habitude consiste à les définir en début de programme. Les deux variables suivantes figurent dans la plupart des listings de votre serviteur :

TR$ = CHR$(22) + CHRS( 1 ) : NR$ = CHR$(22) + CHR$(0)

Autre chose Avant de commencer tout nouveau programme, il est judicieux de taper les deux lignes suivantes :

1 ON BREAK GOSUB 30000
30000 MODE 2 :PEN 1 PRINT NR$ :END

Ainsi, il est permis de revenir au listing sans se soucier du mode transparent, le PRINT NR$ ramenant automatiquement à la normale. A noter pour clore ce chapitre, que le mode transparent ne peut être utilisé lors d'un affichage avec TAG. Cette commande le rend en effet inopérant.

III - Le mode XOR

Ici, une incursion dans le langage machine s'avérerait nécessaire, mais les colonnes réservées ne le permettent pas. Sachez tout de même que lors de l'affichage d'un caractère en mode XOR, les pixels dudit caractère s'additionnent avec les pixels du fond Si ce caractère est sur fond uni (PAPER 0), il s'affiche tel quel dans la couleur choisie. S'il se trouve sur une partie d'un décor (genre île sous le vent avec palmiers et soleil couchant), chaque pixel s'additionne avec celui qui se trouve sous lui, pour donner un troisième pixel de couleur différente.

Jusqu'à présent, rien de très enthousiasmant. Mais voici le miracle : en mode XOR. lorsque l'on réaffiche au même endroit un caractère, il s'efface.....et restitue le décor tel quel. Moralité, le mode XOR permet de déplacer un caractère à l'écran sans en altérer le fond.

On obtient ce fameux mode XOR avec CHR$(23) + CHR$(1) et le retour à la normale par CHR$(23) + CHR$(0). Maintenant, rentrez ces quelques lignes et faites RUN :

10 MODE 1 PRINT CHRS(23) + CHRS(1)
20 FOR H = 11 TO 30:FOR G = 1 TO 5:LOCATE H , G : PRINT CHR$(143):NEXT G,H
30 PEN 2 :FOR H = 2 TO 38 :LOCATE H,4 :PRINT CHR$(251)
40 LOCATE H,4 :PRINT CHR$(251) :NEXT

Fatalitas, ça ne marche pas !

Pourtant en mode XOR, notre petit personnage affiché deux fois de suite au même endroit est resté visible sur toute la ligne et a en outre effacé le décor sur son passage. Il faut en effet savoir qu'en Basic, le mode XOR ne fonctionne qu'associé au mode graphique, alors que nous sommes ici en mode texte. Pour remédier à ce problème, il est nécessaire d'utiliser la commande TAG et TAG OFF. Remplacez les lignes 30 et 40 par ce qui suit et faites à nouveau RUN.

30 PLOT 700,700,2 :TAG : FOR H=32 TO 618 STEP 16
40 MOVE H,336 :PRINT CHR$(251);:FOR T=1 TO 100 :NEXT
50 MOVE H,336 :PRINT CHR$(251);:NEXT :TAGOFF

Cette fois-ci le résultat escompté est au rendez-vous. Notre petit homme est passé devant le mur sans l'effacer. Remarquez que durant ce passage, sa couleur s'est transformée sous l'effet de l'addition des pixels évoquée plus haut. Ce petit listing mérite quelques commentaires.

  • Ligne 10 : passage en XOR. Ligne 20 : création du décor (très stylisé).
  • Ligne 30 : le PLOT définit la couleur. TAG assure le passage en mode graphique. La boucle délimite un déplacement équivalent à une case en mode 1.
  • Ligne 40 : premier affichage du personnage plus tempo d'attente.
  • Ligne 50 : deuxième affichage qui a pour effet d'effacer le personnage, puis bouclage vers une nouvelle position.

A noter que ce listing, bien que réalisé pour un 464, tourne très bien sur 6128. Néanmoins, sur ce dernier, la commande MOVE admet quatre paramètres ; le troisième étant la couleur et le quatrième le mode graphique. Ainsi nous aurions pu, sur 6128, nous passer du PLOT et du passage en XOR en écrivant MOVE X,Y, 2,1 Restons-en là pour aujourd'hui, mais reste encore à étudier les modes spéciaux AND et OR. De plus, TAG et TAG OFF sont des commandes très importantes qui méritent d'être développées bien plus que nous l avons fait Le sujet est donc tout trouvé pour notre prochain rendez-vous.

MICROMAG n°2

★ EDITEUR: MICROMAG
★ ANNÉE: 1989
★ AUTEUR: CLAUDE LE MOULLEC
 

Page précédente : Ali Gator - 01 les Caracteres de Controle

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Ali Gator - 10. Le nouveau discours de la méthode (Micro-Mag)
» Coding » La page pédagogique d'hebdogiciel 082: Generalite sur les Routines
» Coding » Ali Gator - 08. La mémoire écran (Micro-Mag)
» Coding » Ali Gator - 05. Les Fichiers Binaires
» Coding » Ali Gator - 03. TAG et les Modes Graphiques (Micro-Mag)
» Coding » Clefs1 14 - Logiciel Interne Generalites
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 485 millisecondes et consultée 892 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.