Get et Put : l'affichage est allé dans ce tableau

GW-BASIC  (PC-BASIC)

Initiation au langage Basic

Dans les sections précédentes, vous avez appris quelques façons de déplacer des personnages d'un écran à un autre, mais aucune n'est très efficace. N'ayez pas peur; il y a un meilleur tableau. Cela a à voir avec GET et PUT.

En utilisant ces instructions, vous pouvez "obtenir" une zone rectangulaire de l'écran, stocker son contenu dans un "tableau" (une zone de mémoire), puis le "remettre" où vous voulez sur l'écran. C'est la meilleure méthode pour simuler le mouvement.

Un qui ? Un quoi? Les tableaux sont couverts dans la section Passer aux affaires, plus loin.

Nous utilisons le terme "rectangle" pour désigner la zone qui contient l'affichage graphique_ ou le parcours, vous ne pouvez pas réellement voir le rectangle. Il va falloir le visualiser.

Les formats pour GET et PUT sont :

GET (x1,y1)-(x2,y2),tableau

x1,y1 est le coin supérieur gauche du rectangle.

x2,y2 est le coin inférieur droit du rectangle.

tableau est une zone en mémoire qui stocke le rectangle.

PUT(x,y),tableau,[,action]

x,y est le coin supérieur gauche du rectangle.

action peut être PSET, PRESET, AND, OR, XOR.

Le verbe d'action est utilisé pour interagir avec l'image transférée avec l'image déjà à l'écran. PSET transfère les données sur l'écran textuellement.

PRESET est identique à PSET sauf qu'une image inversée (noir sur blanc) est produite.

AND transfère l'image uniquement si une image existe déjà sous l'image transférée.

OR superpose que l'image existe.

XOR est un mode spécial souvent utilisé pour l'animation. XOR provoque l'inversion des points sur l'écran là où un point existe dans l'image du tableau. Ce comportement est exactement comme le curseur à l'écran. XOR est particulièrement utile pour l'animation. Lorsqu'une image est placée deux fois sur un arrière-plan complexe, l'arrière-plan est restauré tel quel. Un objet peut être déplacé sur l'écran sans effacer l'arrière-plan. Le mode d'action par défaut est XOR.

Pour plus d'informations sur les effets dans les différents modes, consultez les instructions SCREEN, COLOR, PALETTE.

L'animation d'un objet est généralement effectuée comme suit :

Placez le ou les objets sur l'écran.

Recalculez la nouvelle position du ou des objets.

Placez le(s) objet(s) sur l'écran une deuxième fois à l'ancien(s) emplacement(s) pour supprimer l'ancienne image(s).
Retournez à l'étape 1, cette fois en plaçant le ou les objets au nouvel emplacement.

Le mouvement effectué de cette manière laisse l'arrière-plan inchangé. Le scintillement peut être réduit en minimisant le temps entre les étapes 4 et 1, et en s'assurant qu'il y a suffisamment de temps entre les étapes 1 et 3. Si plus d'un objet est animé, traitez chaque objet à la fois, une étape à la fois.

S'il n'est pas important de préserver l'arrière-plan, l'animation peut être réalisée à l'aide du verbe d'action PSET.

Laissez une bordure autour de l'image (lorsqu'elle est obtenue pour la première fois) aussi grande ou plus grande que la distance maximale sur laquelle l'objet se déplacera.

Ainsi, lorsqu'un objet est déplacé, cette bordure efface effectivement tous les points. Cette méthode peut être un peu plus rapide que la méthode utilisant XOR décrite ci-dessus puisqu'un seul PUT est nécessaire pour déplacer un objet. Cependant, l'image à PUT doit être plus grande que l'image existante.

Tapez et exécutez ce programme pour voir comment fonctionnent GET et PUT :

10 SCREEN 7
15 CLS
25 DIM V(20,20)
30 CLS:CIRCLE (20,20),10
32 FOR DLAY = 1 TO 600: NEXT DLAY
35 GET (10,10)-(30,30),V
40 CLS
42 FOR DLAY = 1 TO 600: NEXT DLAY
45 PUT (110,110),V
50 FOR DLAY = 1 TO 600: NEXT DLAY
60 GOTO 30

Le programme dessine un cercle sur une partie de l'écran puis le déplace vers une autre. Pour ce faire, l'ordinateur :

1. Crée un tableau nommé V en mémoire (Ligne 25). Le tableau V est assez grand pour stocker un rectangle de 20 X 20.
2. Dessine un cercle sur l'écran (ligne 30).
3. Obtient un rectangle 20 X 20 contenant le cercle et le stocke dans le tableau V (ligne 35).
4. Efface l'écran (Ligne 40),
5. Affiche le rectangle 20 X 20 (stocké dans le tableau V) à l'écran.

Stockage du rectangle

Comme vous pouvez le voir dans le programme ci-dessus, GET et PUT utilisent un tableau pour stocker le rectangle. Donc, avant d'utiliser GET ou PUT, vous devez créer ce tableau.

L'instruction DIM vous permet de faire.

Pour spécifier les valeurs maximales des indices de variable de tableau et allouer le stockage en conséquence.

Syntaxe:

DIM variable(subscripts)[,variable(subscripts)]...

EX. DIM A(12) une dimension, B(5,6) deux diamantions, C(3,8,5) trois démentions ...etc.

Commentaires:

Si un nom de variable de tableau est utilisé sans instruction DIM, la valeur maximale de son ou ses indices est supposée être 10. Si un indice supérieur au maximum spécifié est utilisé, une erreur "Subscript out of range " se produit.

Le nombre maximal de dimensions pour un tableau est de 255.

La valeur minimale d'un indice est toujours 0, sauf indication contraire avec l'instruction OPTION BASE.

Un tableau, une fois dimensionné, ne peut pas être redimensionné dans le programme sans d'abord exécuter une instruction CLEAR ou ERASE.

L'instruction DIM définit tous les éléments des tableaux spécifiés sur une valeur initiale de zéro et doit être mis avant l'utilisation du tableau.

OPTION BASE

Pour déclarer la valeur minimale des indices de tableau.

Syntaxe:

OPTION BASE n

Commentaires:

n est 1 ou 0. La base par défaut est 0.

Si l'instruction OPTION BASE 1 est exécutée, la valeur la plus basse qu'un indice de tableau peut avoir est 1.

Un indice de tableau ne peut jamais avoir une valeur négative.

OPTION BASE génère une erreur uniquement si vous modifiez la valeur de base. Cela permet aux programmes chainés d'avoir des instructions OPTION BASE tant que la valeur n'est pas modifiée par rapport au paramètre initial.

Note

Vous devez coder l'instruction OPTION BASE avant de pouvoir définir ou utiliser des tableaux. Si une tentative est faite pour modifier la valeur de base de l'option après l'utilisation d'un tableau, une erreur se produit.

Les erreurs

n n'est pas un chiffre 0 ou 1 : Syntax error.

L'OPTION BASE 1 est appelée mais un tableau a déjà été alloué auparavant : Duplicate definition.

OPTION BASE est appelée plus d'une fois avec un index de départ différent : Duplicate definition.

Quelle doit être la taille du tableau ?

Cela dépend de la taille d'un rectangle que vous voulez "obtenir" ou "mettre":

Largeur = y1 - x1
longueur = y2 - x2

Par exemple, l'instruction GET du programme ci-dessus utilise (10,10) et (30,30) pour spécifier un rectangle. Ainsi, le rectangle est de 20 X 20 : Il a une largeur et une longueur de 20. L'instruction PUT utilise le même rectangle de taille : 20 X 20.

La taille d'un rectangle que vous pouvez stocker dans un tableau dépend de la quantité de mémoire dont vous disposez.

 Chaque point, lorsqu'il est stocké dans un tableau, consomme 5 octets de mémoire. Dans un système de 16K RAM, vous ne pouvez pas stocker plus de 1400 points dans un tableau. Si votre programme est long, vous devrez peut-être le réduire.

Ne mettez pas ce que vous voyez

Vous avez maintenant mis un rectangle sur l'écran dans un sens avec l'action PSET. (Lorsque vous ne spécifiez pas d'autre action, l'ordinateur utilise PSET).

Il y a plus d'une façon, cependant, de mettre des rectangles sur l'écran.

Pour voir comment fonctionnent les autres actions. commencez par exécuter ce programme. Il met 15 rectangles sur l'écran avec l'action P5ET.

10 DIM V (30,30)
20 SCREEN 7
25 CLS
30 CIRCLE (128 ,86),30,4
35 PAINT (128,85),2,4
40 PAINT (128,97),3,4
45 GET(98,81)-(128,100),V
50 CLS
55 FOR I = 150 TO 1 STEP -10
60 PUT (I,81-I/5),V,PSET
65 NEXT I
70 GOTO 70

PSET définit et réinitialise chaque point tel qu'il se trouve dans le rectangle du tableau. Chaque rectangle qu'il place à l'écran est le même que celui stocké dans le tableau.

Modifiez maintenant la ligne 60 de différentes manières pour essayer d'autres actions. Essayez d'abord PRESET.

60 PUT (I,81-I/5),V,PRESET

PRESET définit et réinitialise l'inverse de chaque point dans le rectangle du tableau. Chaque rectangle qu'il place à l'écran est l'inverse de celui stocké dans le tableau.

Essayez l'action OR :

60 PUT (I,81-I/5),V,OR

OR définit chaque point qui est soit

(1) défini dans le rectangle arrière ou

(2) déjà défini dans la position où il tire le rectangle d'écran.

Chaque rectangle qu'il place sur l'écran a tous les points définis qui sont stockés dans le tableau plus ce qui est actuellement à l'écran.

Pour un effet étrange, essayez l'action XOR.

60 PUT (I,81-I/5),V,XOR

XOR est un mode spécial souvent utilisé pour l'animation. XOR provoque l'inversion des points sur l'écran là où un point existe dans l'image du tableau. Ce comportement est exactement comme le curseur à l'écran. XOR est particulièrement utile pour l'animation. Lorsqu'une image est placée deux fois sur un arrière-plan complexe, l'arrière-plan est restauré tel quel. Un objet peut être déplacé sur l'écran sans effacer l'arrière-plan. Le mode d'action par défaut est XOR.

Essayez l'option AND avec ce programme, et vous ne verrez rien :

60 PUT (I,81-I/5),V,AND

AND définit chaque point qui

(1) est défini dans le tableau et

(2) est déjà défini sur l'écran à la position où il place le rectangle.

Tous les points qui ne remplissent pas ces deux conditions sont réinitialisés. Dans ce cas, chaque rectangle AND mis à l'écran a tous les points réinitialisés - vous ne voyez rien.

Programme faites-le vous même

Utilisez GET et PUT pour envoyer un vaisseau spatial sur l'écran et à travers ses "limites extérieures". Vous voudrez peut-être ajouter un quelques astéroïdes et extraterrestres pour rendre le voyage plus excitant !

15 SCREEN 7
20 CLS
25 DIM V(35,35)
30 X=10: Y=10
35 DRAW "BM10,10;S2;H10;R15;F10;R20;F10;G10;L20;G10;L15;E10;U20;D4;NL8;D4;NL12;D4NL16;D4;NL12D4;NL8;"
40 GET (X-X,Y-Y)-(X*3.5,Y*3.5),V
45 A$=INKEY$: IF A$="" THEN 45 'APPUYEZ SUR N'IMPORTE QUELLE TOUCHE POUR COMMENCER
50 CLS
55 FOR A = 10 TO 200 STEP 5
60 PUT (X+A,Y),V,PSET
65 NEXT A
70 CLS
75 GOTO 55

 

 

 

 

 

 

 

Recherche personnalisée