alien-b-s

Descripción del contenido de la página

Programa herramienta escrito en Beta BASIC para crear las cadenas gráficas del juego Alien-B.

Etiquetas:

Beta BASIC permite definir gráficos en cadenas de texto, con resolución de cuadros de caracteres, con o sin información de color, y dibujarlos en cualquier posición de alta resolución. Este pequeño programa prepara en el disco las matrices de texto con los gráficos utilizados por el programa Alien-B, para ahorrar memoria: el juego solo tiene que cargar las matrices del disco.

El procedimiento mkData es interesante. Es un ejemplo de aplicación de uno de los comandos más creativos de Beta BASIC: KEYIN. Este comando ejecuta una cadena como si la introdujéramos por teclado en el intérprete, lo que permite guardar y manipular código en Beta BASIC para ejecutarlo durante el funcionamiento del programa, e incluso hacer que el propio programa se modifique a sí mismo, como en este caso. Escribí el procedimiento mkData para transformar las antiguas líneas DATA, comprimidas para ahorrar memoria cuando formaban parte del programa principal, en otras más legibles, con los octetos en binario.

Pantallazo

Final

Código fuente

  10 REM alien-b-s

  20 REM This tool program creates and saves to disk the sprite data arrays used
      by the program Alien-B.

  30 REM Copyright (C) 2011 Marcos Cruz (programandala.net)

  40 REM Licencia/Permesilo/License
     programandala.net/license

  50 REM 2011-02-02 First version, with code extracted from Alien-B
  60 
     REM ################
     Main

  70 RANDOMIZE USR 58419
     REM Beta BASIC on
  80 LET aliens=4
  90 CLS #
     PRINT INVERSE 1;"alien-b-s"
     PRINT '"Making the arrays..."
     make
 100 LET f$="alien"
     PRINT "Saving array '"+f$+"'..."
     SAVE OVER d*;f$ DATA g$()
 110 LET f$="aim"
     PRINT "Saving array '"+f$+"'..."
     SAVE OVER d*;f$ DATA x$()
 120 show
     PRINT "Done!"
     STOP
 130 
     REM ################
     Make

 140 DEF PROC make
 150   REM Make the sprite data arrays
 160   LOCAL g,s,b
 170   RESTORE
 180   DIM g$(aliens,18)
       FOR g=1 TO aliens
         FOR s=1 TO 18
           READ b
           LET g$(g,s)=CHR$ b
         NEXT s
       NEXT g
 190   DIM x$(9)
       FOR s=1 TO 9
         READ b
         LET x$(s)=CHR$ b
       NEXT s
 200 END PROC

 210 DEF PROC show
 220   REM Show the sprites
 230   LOCAL s
 240   FOR s=1 TO aliens
         PLOT 20*s,20*s;g$(s)
         PLOT 40*s,20*s;x$
       NEXT s
 250 END PROC

 260 
     REM ################
     Data

 270 REM Alien 1, left
 280 DATA 0,
     BIN 00000011,
     BIN 00011111,
     BIN 00111000,
     BIN 01111111,
     BIN 01011111,
     BIN 00000111,
     BIN 00000011,
     BIN 00000001
 290 DATA 0,
     BIN 10000000,
     BIN 11111000,
     BIN 11111100,
     BIN 11111110,
     BIN 11111010,
     BIN 11100000,
     BIN 11000000,
     BIN 10000000
 300 
     REM Alien 2, down
 310 DATA 0,
     BIN 00000011,
     BIN 00011111,
     BIN 01111100,
     BIN 11111111,
     BIN 10011111,
     BIN 00000111,
     BIN 00000011,
     BIN 00000001
 320 DATA 0,
     BIN 11000000,
     BIN 11111000,
     BIN 00111110,
     BIN 11111111,
     BIN 11111001,
     BIN 11100000,
     BIN 11000000,
     BIN 10000000
 330 
     REM Alien 3, right
 340 DATA 0,
     BIN 00000011,
     BIN 00011111,
     BIN 00111111,
     BIN 01111111,
     BIN 01011111,
     BIN 00000111,
     BIN 00000011,
     BIN 00000001
 350 DATA 0,
     BIN 11000000,
     BIN 11111000,
     BIN 00011100,
     BIN 11111110,
     BIN 11111010,
     BIN 11100000,
     BIN 11000000,
     BIN 10000000
 360 
     REM Alien 4, landing
 370 DATA 0,
     BIN 00000011,
     BIN 00011111,
     BIN 01111100,
     BIN 11111111,
     BIN 10011111,
     BIN 10000111,
     BIN 10000011,
     BIN 10000000
 380 DATA 0,
     BIN 11000000,
     BIN 11111000,
     BIN 00111110,
     BIN 11111111,
     BIN 11111001,
     BIN 11100001,
     BIN 11000001,
     BIN 00000001
 390 
     REM Aim
 400 DATA 0,
     BIN 10000001,
     BIN 01000010,
     BIN 00000000,
     BIN 00000000,
     BIN 00000000,
     BIN 00000000,
     BIN 01000010,
     BIN 10000001
 410 
     REM ################
     Meta

 420 DEF PROC s
 430   ERASE d*"alien-b-s~"
 440   ERASE d*"alien-b-s" TO "alien-b-s~"
 450   CLEAR
       SAVE d*"alien-b-s"
       STOP
 460 END PROC

 470 DEF PROC mkDatas
 480   REM Create binary data lines from the old decimal data
 490   LOCAL s,baseLine
 500   RESTORE 630
       REM old data line
 510   LET baseLine=9900
       REM new data line
 520   FOR s=1 TO 2*aliens
         mkData baseLine+s
       NEXT s
 530 END PROC

 540 DEF PROC mkData lineNumber
 550   REM Create one binary data line from the old decimal data
 560   LOCAL d,datum,l$
 570   PRINT lineNumber
       READ datum
       LET l$=STR$ lineNumber+" DATA "+STR$ datum+","+CHR$ 15
 580   FOR d=1 TO 8
         READ datum
         LET l$=l$+"BIN "+BIN$(datum)+((","+CHR$ 15) AND (8>d))
       NEXT d
 590   KEYIN l$
 600 END PROC
 610 
 620 
     REM ################
     Old data

 630 DATA NOT PI,INT PI,VAL "31",CODE "8",VAL "127",VAL "95",n7,INT PI,SGN PI,NOT PI,VAL "128",VAL "248",VAL "252",VAL "254",VAL "250",VAL "224",VAL "192",VAL "128"
     REM Alien 1 (left)
 640 DATA NOT PI,INT PI,VAL "31",CODE "|",VAL "255",VAL "159",n7,INT PI,SGN PI,NOT PI,VAL "192",VAL "248",CODE ">",VAL "255",VAL "249",VAL "224",VAL "192",VAL "128"
     REM Alien 2 (down)
 650 DATA NOT PI,INT PI,VAL "31",CODE "?",VAL "127",CODE "_",n7,INT PI,SGN PI,NOT PI,VAL "192",VAL "248",VAL "28",VAL "254",VAL "250",VAL "224",VAL "192",VAL "128"
     REM Alien 3 (right)
 660 DATA NOT PI,INT PI,VAL "31",CODE "|",VAL "255",VAL "159",VAL "135",VAL "131",VAL "128",NOT PI,VAL "192",VAL "248",VAL "62",VAL "255",VAL "249",VAL "225",VAL "193",SGN PI
     REM Alien 4 (land)
 670 DATA NOT PI,VAL "129",CODE "B",NOT PI,NOT PI,NOT PI,NOT PI,CODE "B",VAL "129"
     REM Aim


Descargas

Este programa está en el disco de Alien-B.

Páginas relacionadas

Alien-B
Juego de invasores escrito en Beta BASIC para ZX Spectrum 128.
alien-b-m
Programa herramienta escrito en Beta BASIC para crear los datos de los mensajes del juego Alien-B.
alien-b-r
Programa herramienta escrito en Beta BASIC para crear la tabla de mejores puntuaciones del juego Alien-B.
alien-b-t
Programa herramienta escrito en Beta BASIC para crear gráficos necesarios para el juego Alien-B.
alien-b-u
Programa herramienta escrito en Beta BASIC para crear los GDU del juego Alien-B.