martes, 31 de diciembre de 2019

Programa 13 - Objeto rebotando en los bordes - AMSTRAD

A pocas horas para despedir el año 2019, publico un código en BASIC para AMSTRAD que dibuja un objeto en pantalla que va rebotando por los bordes.





Código BASIC
10 ' Sprites, primera aproximacion
100 ' Figuras que forman el sprite
110 s1$=chr$(150)
120 s2$=chr$(156)
130 s3$=chr$(147)
140 s4$=chr$(153)
300 ' Resto de inicializacion
310 mode 0
320 x = 100
330 y = 100
340 incrX = 4
350 incrY = 4
360 tag
500 ' Parte repetitiva
510 while inkey$ = ""
520   ' Dibujar figura
530   frame
540   move x,y
550   print s1$;s2$;
560   move x,y-8
570   print s3$;s4$;
580   ' Pausa entre fotogramas
590   for i = 1 to 10: next
600   ' Calcular prox posicion
610   x = x + incrX
620   y = y + incrY
630   if (x > 580) or (x < 8) then incrX = -incrX
640   if (y > 340) or (y < 24) then incrY = -incrY
700 wend
2000 ' Finalizacion
2010 tagoff
2020 mode 1

domingo, 29 de diciembre de 2019

Programa 12 - Dibujar un círculo utilizando "raro" - AMSTRAD

Otra forma de dibujar un círculo "rato" hecho con líneas rectas.




Código BASIC

10 MODE 1
20 ORIGIN 320,200
40 MOVE 0,190
50 FOR a=0 TO 360 STEP 10
60 DRAW 190*SIN(a),190*COS(a)
70 NEXT

sábado, 28 de diciembre de 2019

Programa 11 - Dibujar un círculo utilizando DRAW - AMSTRAD

En esta nueva entrada os muestro el código para dibujar un círculo pero esta vez utilizando la función DRAW en lugar de la función PLOT.




Código BASIC

10 MODE 1
20 ORIGIN 320,200
30 DEG
40 MOVE 0,190
50 FOR a=0 TO 360 STEP 10
60 DRAW 190*SIN(a),190*COS(a)
70 NEXT

viernes, 27 de diciembre de 2019

Programa 10 - Dibujar un círculo (2) - AMSTRAD

Otro código alternativo para dibujar un sencillo círculo por pantalla





Código BASIC

10 CLS
20 FOR a = 1 TO 360
30 PLOT 320+190*COS(a),200+190*SIN(a)
40 NEXT

jueves, 26 de diciembre de 2019

Programa 9 - Dibujar un círculo - AMSTRAD

Código para dibujar un sencillo círculo por pantalla





Código BASIC

10 CLS
20 DEG
30 FOR a = 1 TO 360
40 MOVE 320,200
50 PLOT 320+190*COS(a),200+190*SIN(a)
60 NEXT

miércoles, 25 de diciembre de 2019

Programa 8 - Cuatro Círculos

Un código sencillito, con apenas 11 líneas de código.





Código BASIC
10 CLS
20 FOR a=1 TO 360
30 ORIGIN 196,282
40 PLOT 50*COS(a),50*SIN(a)
50 ORIGIN 442,282
60 PLOT 50*COS(a),50*SIN(a)
70 ORIGIN 196,116
80 PLOT 50*COS(a),50*SIN(a)
90 ORIGIN 442,116
100 PLOT 50*COS(a),50*SIN(a)
110 NEXT

martes, 24 de diciembre de 2019

Programa 7 - Feliz Navidad

Feliz Navidad !!!!

Hoy os traigo un código un poco más complejo y extenso, para que podáis estudiarlo y modificarlo.

Es un código muy navideño y colorido para un día tan especial como hoy.






Código BASIC

10 MODE 1:BORDER 0: DEG
20 PRINT "Por favor, espere"
30 FOR n=1 TO 3
40 INK 0,0:INK 1,26:INK 2,6:INK 3,18
50 IF n=1 THEN sa=120
60 IF n=2 THEN sa=135
70 IF n=3 THEN sa=150
80 IF n=1 THEN ORIGIN 0,-50,0,640,0,400 ELSE ORIGIN 0,0,0,640,0,400
90 DIM cx(5),cy(5),r(5),lc(5)
100 DIM np(5)
110 DIM px%(5,81),py%(5,81)
120 st=1:cx(1)=320:cy(1)=200:r(1)=80
130 FOR st=1 TO 4
140 r(st+1)=r(st)/2
150 NEXT st
160 FOR st=1 TO 5
170 lc(st)=0:np(st)=0
180 np(st)=np(st)+1
190 px%(st,np(st))=r(st)*SIN(lc(st))
200 py%(st,np(st))=r(st)*COS(lc(st))
210 lc(st)=lc(st)+360/r(st)
220 IF lc(st)<360 THEN 180
230 px%(st,np(st)+1)=px%(st,1)
240 py%(st,np(st)+1)=py%(st,1)
250 NEXT st
260 CLS:cj=REMAIN(1):cj=REMAIN(2)
270 cj=REMAIN(3):INK 1,2:st=1
280 GOSUB 350
290 LOCATE 1,1
300 EVERY 25,1 GOSUB 510
310 EVERY 15,2 GOSUB 550
320 EVERY 5,3 GOSUB 590
330 ERASE cx,cy,r,lc,np,px%,py%:NEXT
340 GOTO 340
350 cx%=cx(st):cy%=cy(st):lc(st)=0
360 FOR x%=1 TO np(st)
370 MOVE cx%,cy%
380 DRAW cx%+px%(st,x%),cy%+py%(st,x%),1+(st MOD 3)
390 DRAW cx%+px%(st,x%+1),cy%+py%(st,x%+1),1+(st MOD 3)
400 NEXT x%
410 IF st=5 THEN RETURN
420 lc(st)=0
430 cx(st+1)=cx(st)+1.5*r(st)*SIN(sa+lc(st))
440 cy(st+1)=cy(st)+1.5*r(st)*COS(sa+lc(st))
450 st=st+1
460 GOSUB 350
470 st=st-1
480 lc(st)=lc(st)+2*sa
490 IF (lc(st) MOD 360) <> 0 THEN 430
500 RETURN
510 ik(1)=1+RND*25
520 IF ik(1)=ik(2) OR ik(1)=ik(3) THEN 510
530 INK 1,ik(1)
540 RETURN
550 ik(2)=1+RND*25
560 IF ik(2)=ik(1) OR ik(2)=ik(3) THEN 550
570 INK 2,ik(2)
580 RETURN
590 ik(3)=1+RND*25
600 IF ik(3)=ik(1) OR ik(3)=ik(2) THEN 590
610 INK 3,ik(3)
620 RETURN

lunes, 16 de diciembre de 2019

Programa 6 - Otro método para dibujar círculos en BASIC AMSTRAD

Otro método, sencillo también, para dibujar círculos con radios.






Código BASIC

10 CLS
30 FOR a = 1 TO 360
40 MOVE 320,200
50 DRAW 320+190*COS(a),200+190*SIN(a)
60 NEXT

domingo, 15 de diciembre de 2019

Programa 5 - Dibujar un circulo con relleno

De nuevo un sencillo código que dibuja un circulo, con líneas de radio, por lo que tiene "relleno".





Código BASIC
10 CLS
20 DEG
30 FOR a = 1 TO 360
40 MOVE 320,200
50 DRAW 320+190*COS(a),200+190*SIN(a)
60 NEXT

sábado, 14 de diciembre de 2019

Programa 4 - Dibujar rectángulos

Programa con el que dibujaremos dos rectangulos, uno dentro del otro.








Código BASIC
5 CLS
10 PLOT 10,10
20 DRAW 10,390
30 DRAW 630,390
40 DRAW 630,10
50 DRAW 10,10
60 PLOT 20,20
70 DRAW 20,380
80 DRAW 620,380
90 DRAW 620,20
100 DRAW 20,20
110 GOTO 110

Programa 3 - Mover un personaje por pantalla

Otro sencillo programa que mueve un personaje de izquierda a derecha y viceversa teniendo en cuenta, también, su rotación.







Código BASIC

10 CLS
20 FOR x=1 TO 39
30 LOCATE x,20
40 CALL &BD19
50 PRINT " ";CHR$(250)
60 NEXT x
70 FOR n=1 TO 300:NEXT n
80 FOR x=39 TO 1 STEP -1
90 LOCATE x,20
100 FRAME
110 PRINT CHR$(251);" "
120 NEXT x
130 FOR n=1 TO 300:NEXT n
140 GOTO 20

viernes, 13 de diciembre de 2019

Programa 2 - Mostrar carácteres imprimibles

Sencillo programa que muestra por pantalla los códigos ASCII imprimibles.





Códgo BASIC

10 FOR n=32 TO 255
20 PRINT n;CHR$(n);
30 NEXT n

Programa 1 - Colores en pantalla

Sencillo programa que juega con los colores en pantalla del Amstrad. 










10 MODE 0
20 velocidad=600 : REM establece velocidad del programa
30 FOR b=0 TO 26
40 LOCATE 1,12
50 BORDER b
60 PRINT "color del borde:";b
70 FOR t=1 TO velocidad
80 NEXT t,b
90 CLG
100 FOR p=0 TO 15
110 PAPER p
120 PRINT "papel:";p
130 FOR n=0 TO 15
140 PEN n
150 PRINT "pluma:";n
160 NEXT n
170 FOR t=1 TO velocidad*2
180 NEXT t,p
190 MODE 1
200 BORDER 1
210 PAPER 0
220 PEN 1
230 INK 0,1
240 INK 1,24