Cómo programar un videojuego en ZX Spectrum

El ZX Spectrum fue mi primer ordenador, y mi primer dispositivo de jugar videojuegos en casa cuando tenía unos 9 años. A pesar de ser de la década de los 80 todavía tiene una gran comunidad de aficionados y desarrolladores, y programar un juego para él puede ser una experiencia divertida y educativa, aunque sea a modo de hobbie, ya que sus juegos ya no se comercializan en grandes cantidades, lógicamente (poca gente tiene ya un Spectrum en casa, y menos, que sigan usándolo de forma regular). En este artículo, te explicaremos los conceptos básicos que necesitas saber para programar un videojuego en ZX Spectrum.

El lenguaje de programación utilizado en el ZX Spectrum es el BASIC (Beginner’s All-purpose Symbolic Instruction Code). Este lenguaje de programación se utiliza para crear aplicaciones y juegos sencillos. El BASIC del ZX Spectrum es un poco diferente al BASIC que se encuentra en otros ordenadores, por lo que es importante conocer las peculiaridades de este dialecto.

Antes de empezar a programar, necesitarás algunas herramientas. La más importante es (sorpresa) un ZX Spectrum. Si no tienes uno, no te preocupes, existen emuladores gratuitos que puedes utilizar para empezar. Yo no conservé el mío, desgraciadamente. También necesitarás un cable de audio para conectar el ordenador a un altavoz o a un dispositivo de grabación.

Una vez que tengas tu ZX Spectrum, necesitarás un programa para escribir y guardar tu código. El programa más popular para programar en BASIC en el ZX Spectrum es el Sinclair BASIC. Este programa viene incluido en la ROM del ordenador y se carga automáticamente al encender el Spectrum. También hay otros editores de texto que puedes utilizar, como el Notepad.

Ahora que tienes todo lo que necesitas, es hora de empezar a programar. Para ello, te proporcionamos un ejemplo sencillo de código para un juego que podríamos llamar «Saltador» que puedes escribir tú mismo en el ZX Spectrum:

10 REM SALTADOR
20 INK 0,0: PAPER 7,7: BORDER 7
30 CLS
40 LET X=128: LET Y=175
50 LET DX=0: LET DY=0
60 LET G=0
70 LET A=0: LET B=0
80 LET C=0
90 LET P=INT(RND256) 100 LET Q=INT(RND192)
110 PLOT P,Q: G=0
120 IF INKEY$="o" THEN DX=-2: DY=-2
130 IF INKEY$="p" THEN DX=2: DY=-2
140 IF INKEY$="q" THEN DX=-2: DY=2
150 IF INKEY$="a" THEN DX=2: DY=2
160 LET X=X+DX: LET Y=Y+DY
170 IF X<0 THEN X=0: DX=-DX 180 IF X>255 THEN X=255: DX=-DX
190 IF Y<0 THEN Y=0: DY=-DY 200 IF Y>191 THEN Y=191: DY=-DY
210 LET E=POINT(X,Y)
220 IF E<>0 THEN DY=-DY
230 IF E=0 AND G=0 THEN G=1: LET A=X: LET B=Y: LET C=C+1
240 IF C>9 THEN CLS: PRINT "FIN DEL JUEGO": STOP
250 IF G=1 THEN CIRCLE A,B,15,1: CIRCLE A,B,14,1: CIRCLE A,B,13,1
260 IF G=0 THEN CIRCLE X,Y,2,1
270 GOTO 90

Este juego utiliza los comandos BASIC para dibujar una pelota en la pantalla que puede rebotar y colisionar con objetos. Si bien este es un juego muy básico, es un buen punto de partida para aprender a programar en el ZX Spectrum.

El código comienza definiendo los colores para el texto, el fondo y el borde del juego. Luego, se limpia la pantalla (CLS) y se definen las variables necesarias para el juego, como la posición de la pelota (X e Y), la dirección de la pelota (DX y DY), y las variables de control para el juego (G, A, B y C).

El juego utiliza la función INT(RND) para generar posiciones aleatorias para el objeto que se mueve por la pantalla, y el comando PLOT para dibujarlo. Luego, el juego comprueba si el jugador ha pulsado una de las teclas de dirección para mover la pelota.

El código también comprueba los límites de la pantalla para asegurarse de que la pelota no se salga de la pantalla. Si la pelota choca con un objeto, cambia de dirección y se produce una animación.

Finalmente, el juego se repite constantemente hasta que el jugador pierde o presiona la tecla ESC para salir del juego.

Este es solo un ejemplo básico de lo que puedes hacer en el ZX Spectrum. Con práctica y paciencia, puedes crear juegos más complejos y divertidos.

Published by

One thought on “Cómo programar un videojuego en ZX Spectrum

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *