Gràfics

El programa que explicaré aquí ZX Spectrum, perquè em basaré en les seves pròpies característiques.

Els programes que he explicat fins ara, encara que siguin per al ZX Spectrum, podríem obrir-los en qualsevol màquina sense realitzar canvis de gran importància.

Aquesta vegada, perdonaràs al lector, però el programa que explicaré aquí cal expressar-lo en el ZX Spectrum, perquè em basaré en les seves pròpies característiques.

Aquest programa no té per si mateix un gran valor, però algunes de les instruccions que s'utilitzen en el mateix poden resultar de gran interès per a l'elaboració o elegància de qualsevol programa.

La màquina, concretament l'Spectrum, guarda una sèrie de posicions memorístiques per a controlar el seu sistema intern. En ell es recull la tecla que finalment s'ha premut, quina serà la següent línia d'instrucció, els colors, el tractament de la pantalla per a saber si la impressora està utilitzant, etc. (un total de 71 variables de sistema).

Entre aquestes 71 variables de sistema hi ha dos molt interessants en el nostre cas: Posicions 23677 i 23678.

En aquestes posicions es recullen les coordenades del punt final dibuixat. És a dir: Si fas PRINT PEEK 23677, la coordenada x del punt t'apareixerà
en la pantalla i si fas PRINT PEEK 23678 et donarà la coordenada i del punt.

Això ens ajuda molt en el disseny dels programes.

El programa que exposo a continuació es basa en les següents variables de sistema. El programa realitza dibuixos aleatoris i il·limitats.

Abans d'executar la instrucció DRAW x1,y1 obté els valors correctes de x1 e y1 en les línies 205 i 230, utilitzant les línies 210 i 240 per a la seva verificació. Les instruccions REM no tenen cap efecte sobre el programa, per la qual cosa si es desitja es pot deixar de teclejar.

ESBORRANY

10 PRINT #0; "TECLA DE PARADA"
20 LET I=0:REM "Defineix el color de la tinta"
30 LET x=0:REM x definir
40 LET i=0:REM i definir
50 GOSUB 200
60 INK I
70 DRAW
x1,y1 I+1 LET: IF I=7 THEN LET I=0:REM
90 IF INKEY $=" Números aleatoris THEN GO TO 50:REM,
100 INK 0 (Aquí no hi ha espai)
110 STOP
200 REM X1 i Y1
Subrutines 55-NINT* Números aleatoris REM, positius o negatius, per a l'obtenció de 210
LET x=PEEK 23677+x1
220 IF 0 x OR x 255 THEN GO TO 200:REM
230 LET Y1= Int (Rnd*-175)+85:REM per a l'obtenció de 250
GO i
240
TEP

Babesleak
Eusko Jaurlaritzako Industria, Merkataritza eta Turismo Saila