CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/1.2.11 - Instructions graphiquesCoding Classeurs Weka

4/0 - Langages du CPC

4/1 - Locomotive BASIC : Définitions et rappels de base

4/1.2 Version 1.0 sur CPC 464 : Mots clés et leur utilisation

XI. Instructions graphiques 
 

CLG [< couleur d'encre >]

Efface l'écran graphique.

Si l'encre est spécifiée, la couleur d'écran graphique devient cette couleur. La couleur d'encre vaut 0 par défaut.

Pour comprendre la différence existant entre CLS et CLG, faites :

10 LOCATE 1,10           et             10 LOCATE 1,10
20 CLG                                      20 CLS

 

   
 

DRAW < x abs >, < y abs > [,[ < encre > ],[ < mode d'encre > ]] sur 6128
DRAW< x abs>, < y abs>[, < encre>] sur 464 et 664

  • « encre » est un entier compris entre 0 et 15.
  • « mode d'encre » est un entier qui prend les valeurs suivantes : 0 pour le mode normal, 1 pour le mode XOR, 2 pour le mode AND et 3 pour le mode OR.
  • « x abs » est un entier compris entre 0 et 639,
  • « y abs » est un entier compris entre 0 et 399.

Remarque :

Voir l'utilisation du mode d'encre à l'instruction « PLOT ».

L'ordre DRAW dessine une ligne sur l'écran entre la position courante du curseur graphique et la position absolue indiquée par « x abs » et « y abs ».

Utilisation

Traçons le graphe ci-dessous à l'aide de l'instruction « DRAW ».

  • La droite d0 sera tracée par MOVE 0, 330:DRAW 0,0
  • La droite d1 sera tracée par MOVE 0, 300:DRAW 60,0
  • La droite di sera tracée par MOVE 0, 300 - (i * 30) : DRAW (i + 1 ) * 60,0

d'où le programme suivant :

100 CLS
110 FOR I=-1 TO 10
120 MOVE 0,300-I*30
130 DRAW (I+1)*60,0
140 NEXT I

 

 

 

DRAWR < décalage en x >, < décalage en y > [[, < encre > ][, < mode d'encre>]] sur 6128,
DRAWR < décalage en x >, < décalage en y >[, < encre >] sur 464 et 664

  • « décalage en x » est un entier compris entre -639 et 639,
  • « décalage en y » est un entier compris entre -399 et 399,
  • « encre » est un entier compris entre 1 et 15,
  • « mode d'encre » est un entier compris entre 0 et 3 : (0= NORMAL, 1 =XOR, 2 = AND, 3 = OR).

Remarque :

Voir l'utilisation du mode d'encre à l'instruction « PLOTR ».

Dessine une ligne sur l'écran à partir de la position courante du curseur graphique vers une position relative : Si x,y est la position courante du curseur, une ligne sera tracée entre x,y et x + décalage en x,y + décalage en y.

Utilisation

L'instruction de remplissage de surfaces à contour fermé existe dans le BASIC 6128, mais pas dans les BASIC 464 et 664. Nous allons la recréer partiellement :

Soit un rectangle défini par ses coordonnées x1 ,y1 en bas à gauche et x2,y2 en haut à droite.

Pour le remplir, il faudra faire :

  • Curseur en x1, y1.
  • Tracé d'une ligne horizontale de longueur x2-x1.
  • Curseur en x1 ,y1 + 1.
  • Tracé d'une ligne horizontale de longueur x2-x1. et ce n fois jusqu'à ce que y1 + n = y2. d'où le programme suivant :

100 X1 = 100:X2 = 300:Y1 = 100:Y2 = 200
110 FOR I = Y1 TO Y2
120 MOVE X1, I
130 DRAWR X2-X1,0
140 NEXT I

   
 

MOVE< x abs>, < y abs>[, [< encre>][, < mode d'encre >]] sur 6128
MOVE < x abs>, < y abs > sur 464 et 664

  • — « x abs » est compris entre 0 et 639,
  • — « y abs » est compris entre 0 et 399,
  • — « encre » est compris entre 0 et 15,
  • — « mode d'encre » est compris entre 0 et 3. (0= Normal, 1=X0R, 2 = AND, 3 = 0R) 

Remarque :

Voir l'utilisation du mode d'encre à l'instruction « PLOTR »

Positionne le curseur graphique aux coordonnées absolues xabs, yabs spécifiées.

   
 

MOVER < décalage x>, < décalage y>[[, < encre >][, cmode d'encre >]] sur 6128
MOVER < décalage x>, sur 464 et 664

  • « décalage x » est compris entre -639 et 639,
  • « décalage y » est compris entre -399 et 399,
  • « encre » est compris entre 0 et 15,
  • « mode d'encre » est compris entre 0 et 3. (0= Normal, 1 =XOR, 2 = AND, 3 = OR).

Si les coordonnées courantes du curseur sont x,y, les nouvelles coordonnées seront x-t- décalage x, y + décalage y.

   
 

ORIGIN < x >, < y >[, < gauche >, < droite >, < haut >, < bas >]

Permet de définir :

a) Le point d'origine du curseur graphique.

Remarque :

x = 0, y = 0 est le point en bas à gauche de l'écran.

b) Les dimensions de la fenêtre graphique.

Remarque :

Si les coordonnées de la fenêtre dépassent la taille de l'écran, c'est l'écran qui est considéré comme fenêtre graphique.

Exemple de définition de fenêtre :

100 CLS : ORIGIN 0,0,100,540,300,100
110 CLG 3 'Affiche la fenêtre graphique d'une autre couleur que le fond de l'écran.

   
 

PLOT < x abs >,< y abs >,[,[< encre >][, < mode d'écran >]] sur 6128
PLOT < x abs >,< y abs >,[,< encre >] sur 464 et 664.

  • « x abs » est compris entre 0 et 639,
  • « y abs » est compris entre 0 et 399,
  • « encre » est compris entre 0 et 15,
  • « mode d'encre » est compris entre 0 et 3. (0 = Normal, 1=XOR, 2 = AND, 3 = OR)

Utilisation du mode d'encre

Utilisation Lorsque le paramètre mode d'encre est utilisé, l'opération logique est faite entre la couleur du point courant et la couleur du point que l'on veut afficher.

Les tables de vérité au niveau bit des fonctions XOR, AND et OR sont les suivantes :


OR 0 1
0 0 1
1 1 0

AND 0 1
 0

OR 0 1
 0
 1 1

Soient a et b deux bits ; nous aurons pour XOR :

a XOR b = 1 si a = 0 et b = 1 ou a = 1 et b = 0, donc si a < > b (puisque a vaut 0 ou 1 et b également).

De même, nous aurons pour AND :

a AND b = 1sia = b=1,eta AND b = 0 dans les autres cas. et, nous aurons pour OR :

a OR b = 0 si a = b = 0, et a OR b = 1 dans les autres cas.

Nous pouvons étendre les notions binaires XOR, AND et OR à des entiers en considérant leur décomposition en base 2.

Exemple :

Soient les nombres a = 12 0 0 0 0 1 1 0 0
                       et b =  9 0 0 0 0 1 0 0 1

nous aurons a XOR b 0 0 0 0 0 1 0 1 =5 en décimal
                  a AND b 0 0 0 0 1 0 0 0 =8 en décimal
                 a OR b 0 0 0 0 1 1 0 1 =13 en décimal

Utilisation du mode d'encre :

En MODE 0, supposons que nous ayons :

INK 5,1 (bleu), INK 8,2 (bleu vif), INK 9,3 (rouge), INK 12,4 (magenta), INK 13,5 (mauve).

Si nous faisons :

PLOT x,y,12,0 -> un point magenta apparaît

PLOT x,y,9,1 -> un point bleu apparaît
                      mode XOR: 9 XOR 12 = 5 = bleu

PLOT x,y,12,0 -> un point magenta apparaît

PLOT x,y,9,2 -> un point bleu vif apparaît
                      mode AND: 12 AND 9 = 8 = bleu vif

PLOT x,y,12,0 -> un point magenta apparaît

PLOT x,y,9,3 -> un point mauve apparaît
                      mode OR: 12 OR 9 = 13 = magenta

Remarque :

Le mode d'encre peut être activé dans les ordres : DRAW, DRAWR,

PLOT, PLOTR, MOVE, MOVER comme 4e paramètre.

 

Utilisation

Tracé des courbes Y = F(x)

Le programme se décompose en trois phases :

  • saisie de l'équation,
  • saisie du domaine de définition,
  • tracé.

10 REM Trace de courbes d'equations Y = F(x)
20 GOSUB 1000 'Saisie de l'equation
30 STOP
40 GOSUB 2000 'Saisie du domaine
50 GOSUB 3000 'Trace 60 :
70 END
80 REM --------------------------------------------------------------------------------
1000 REM Saisie de l'equation
1010 :
1020 CLS
1030 PRINT "Tapez 2060 DEF FNA(X) = "
1040 PRINT "Suivi de l'equation a etudier."
1050 PRINT.PRINT "Tapez ensuite RUN 40"
1060 :
1070 RETURN
1080 REM -----------------------------------------------------------------------------
2000 REM Saisie du domaine de définition
2010 :
2020 CLS
2030 PRINT "Entrez le domaine d'etude:"
2040 PRINT:INPUT "X min"; X1
2050 PRINT:INPUT "X max"; X2
2060 DEF FNA(X) = SIN(X)
2070 :
2080 RETURN
2090 REM -----------------------------------------------------------------------------
3000 REM Trace de la courbe
3010 :
3020 REM Calcul de l'echelle en Y
3030 :
3035 M1 = -1E + 33:M2 = 1E + 33
3040 FOR X = X1 TO X2 STEP (X2-X1)/100
3050 A = FNA(X)
3060 IF A>M1 THEN M1 =A 3070 IF A3080 NEXT X
3090 EX = 640/(X2 -X1 ):EY = 399/(M 1-M2)
3100 PX = (X2-X1 )/100
3110 :
3120 REM trace 3130:
3140 CLS
3150 FOR X = X1 TO X2 STEP PX
3160 PLOT (X-X1)*EX, (FNA(X)-M2)*EY
3170 NEXT X
3180 :
3190 RETURN

Lignes 20 à 70 : programme principal
Lignes 1000 à 1070 : Saisie de l'équation
Lignes 2000 à 2080 : Saisie du domaine d'étude
Ligne 2060 : Définition de la fonction à étudier
Lignes 3000 à 3100 : Calcul d'échelle
Lignes 3120 à 3190 : Tracé de la courbe

   
 

PLOTR < décalage en x >, < décalage en y >, [, [ < encre > ], [ < mode d'encre >]] sur 6128
PLOTR < décalage en x >, < décalage en y >, [, < encre >] sur 464 et 664

  • « décalage x » est compris entre - 639 et 639,
  • « décalage y » est compris entre - 399 et 399,
  • « encre » est compris entre 0 et 15,
  • « mode d'encre » est compris entre 0 et 3. (0 = Normal, 1=XOR, 2 = AND, 3 = OR)

Si les coordonnées du curseur graphique étaient x,y « PLOTR dec x, dec y » affiche un point aux coordonnées x + dec x, y + dec y.

   
 

TEST(< x >,< y >)

  • x est compris entre 0 et 639,
  • y est compris entre 0 et 399.

Place le curseur graphique à la position absolue x,y et donne la valeur de l'encre à cette position, modulo 16 en MODE 0, modulo 4 en MODE 1 et modulo 2 en MODE 2.

Utilisation

Soient deux points : P1 (x1 ,y1 ) et P2 (x2,y2) appartenant à une ligne horizontale d'ordonnée Y. Nous voulons tracer un trait entre P1 et P2 sachant qu'ils peuvent être n'importe où sur la droite et que leur couleur est PEN 1 en MODE 2. (Evidemment, la droite n'a pas la couleur PEN 1.)

100 FOR I = 0 TO 639
110 IF TEST (I,Y) = 1 THEN IF X1=0 THEN XI = I ELSE X2 = l 'Recherche de points
120 NEXT I
130 PLOT X1,Y
140 DRAW X2,Y

   
 

TESTR (< décalage x >, < décalage y >)

  • « décalage x » est compris entre - 639 et 639
  • « décalage y » est compris entre - 399 et 399.

Si le curseur graphique était en x,y, il sera positionné en x +décalage x,y +décalage y après cette commande, et TESTR donnera la couleur de ce point, modulo 16 en MODE 0, modulo 4 en MODE 1 et modulo 2 en MODE 2.

   
 

VPOS

Donne la position verticale du curseur texte par rapport à la position d'origine dans la fenêtre courante.

   
 

XPOS

Donne la position horizontale du curseur graphique.

La position renvoyée est comprise entre 0 et 639.

   
 

YPOS

Donne la position verticale du curseur graphique.

La position renvoyée est comprise entre 0 et 399.

Page précédente : 4/1.2.10 - Instructions musicales

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 110 millisecondes et consultée 330 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.