Programando NUCLEAR INVADERS para DRAGON

dancresp
Mensajes: 5366
Registrado: 13 Nov 2010 02:08
Agradecido : 167 veces
Agradecimiento recibido: 296 veces

Programando NUCLEAR INVADERS para DRAGON

Mensajepor dancresp » 06 Nov 2011 21:11

NUCLEAR INVADERS para DRAGON-32

Imagen

EL JUEGO
Vuelven los Invasores del Espacio !!!
Los invasores del espacio vuelven a atacar la tierra con un malvado plan: destruir sus centrales nucleares.
Controlaremos a nuestro tanque para mantenerlos a raya.

Utiliza los cursores para mover tu tanque a derecha e izquierda, y la barra espaciadora para disparar.

Descargar fichero WAV: Nuclear Invaders


BLOQUES
El listado se divide en los siguientes bloques:

- Inicialización del juego. Lineas 10 a 30.
- Nudo principal de desarrollo. Lineas 100 a 300.
- Fin de partida. Lineas 500 a 520.
- Inicialización de variables. Linea 1000.
- Pantalla de presentación. Lineas 1500-1510.
- Pantalla de juego. 2000-2170.
- Lectura de los gráficos del juego. Lineas 3000-3060.
- Volcado de gráficos. Lineas 4000-4020.
- Rutina de control de pulsación de tecla "RETURN". Linea 5000.
- Datos de los gráficos. Lineas 9000-9030.


COMO FUNCIONA
10 - Se crean las matriz que guardan la posición horizontal (X) y vertical (Y) de los invasores, y su velocidad (S).
20 - Llamada a la rutina que se encarga de cargar los gráficos del juego.
30 - Llamada a la rutina que inicializa las variables, muestra la presentación y muestra la pantalla de juego.

100 - Inicio del bucle que controla el lado del invasor a mover. (1- izquierda, 2 - derecha).
110 - Si el invasor tiene el movimiento activo, salta a la linea 130.
120 - Si un número aleatorio entre 1 y 20 es mayor de 18, activo al invasor una velocidad (8). Si el invasor está a la derecha, su velocidad es negativa.
130 - Si el invasor tiene movimiento, se borra de la pantalla.
140 - Sumamos a su posición horizontal su velocidad. Si A=1 se imprime al invasor con una animación y saltamos a 150.
145 - Imprimimos la segunda animación del invasor.
150 - Si el invasor llega a la central nuclear saltamos a la linea 500.
160 - Fin del bucle de movimiento de los invasores.
180 - Si pulsamos "Cursor Izquierdo" y posición mayor de 8, se borra el tanque y se resta posición.
190 - Si pulsamos "Cursor Derecho" y posición menos de 232, se borra el tanque y se suma posición.
200 - Imprimimos el tanque en la posición correspondiente.
210 - La variable (N) se usa para controlar la fila de invasores a mover. Si es menor de 9 se incrementa, sino se pone a 1. Se modifica la variable (A) usada como control de la animación de los invasores.
220 - Si no se pulsa la tecla espacio (disparo), se va a la linea 100. Sino, se controla la posición del tanque para ver que fila de invasores puede tocar. Se guarda en la variable (U).
240 - Inicio de bucle que controla si se toca algún invasor. Empieza de abajo a arriba.
250 - Si la posición de un invasor es igual al del tanque, se guarda la posición del invasor en (Z) y se pone el valor del bucle a 0 para salir de el.
260 - Final del bucle.
270 - Si Z es igual a 0 (no se ha tocado a ningún invasor) salta a la linea 100. Sino, se guarda en (F) la posición vertical del invasor + 4 pixels y se suman los puntos en función de su posición.
280 - Imprimimos una linea desde el tanque hasta el invasor, y se hace desaparecer el invasor de la pantalla.
290 - Ponemos al invasor en su posición inicial, Z igual a 0, sonido del disparo y se borra el disparo.
300 - Volvemos a la linea 100.

500 - Bucle de sonido de final de partida, y salto a subrutina que detecta pulsación de tecla "RETURN" (GOSUB 5000).
510 - Se borra la pantalla y se muestran los puntos y texto de final de juego.
520 - Salto a subrutina de pulsación de "RETURN".

1000 - Se inicializan las variables de Puntos (P), fila invasores a mover (N), Animación invasores (A), Posición del tanque (T), Destrucción de invasor (Z).

1500 - Se borra la pantalla y se muestran los textos de la presentación.
1510 - Salto a subrutina de pulsación de "RETURN".

2000 - Se activa modo gráfico y se borra la pantalla.
2110 - Inicio de bucle.
2120 - Se inicializa las posiciones horizontales (X) y verticales (Y) de los invasores, y se imprime el gráfico de "Radiactivo".
2130 - Inicio de un segundo bucle.
2140 - Se pone la velocidad de los invasores a 0 (S) y se les imprime en la posición correspondiente.
2150 - Final de los dos bucles.
2160 - Se dibuja el cuadrado del centro de la pantalla y la linea inferior y los topes.
2170 - Se vuelve al bucle principal de desarrollo para iniciar la partida.

3000 - Se activa el modo gráfico.
3010 - Se borra la pantalla, se va a rutina de impresión de un gráfico y se guarda en la matriz la animación del invasor.
3020 - Se borra la pantalla, llamada a rutina de impresión de un gráfico y se guarda en la matriz la segunda animación del invasor.
3030 - Se borra la pantalla, llamada a rutina de impresión de un gráfico y se guarda en la matriz el tanque.
3040 - Se borra la pantalla, llamada a rutina de impresión de un gráfico y se guarda en la matriz el simbolo de radioactividad.
3050 - Se borra la pantalla y se guarda un grafico en blanco. Usado posteriormente para hacer desaparecer a los invasores y el tanque al moverse.
3060 - Final de rutina de carga de gráficos.

4000 - Se guarda en (D) la primera posición de la memoria de pantalla en modo gráfico.
4010 - Bucle que lee dos valores del DATA, los pone en la pantalla y suma la posición vertical. Así 8 veces por gráfico.
4020 - Final de rutina.

5000 - Rutina que controla si se pulsa la tecla "RETURN".

9000 - Datos del gráfico del invasor, animación 1.
9010 - Datos del gráfico del invasor, animación 2.
9020 - Datos del gráfico del tanque.
9030 - Datos del gráfico simbolo de radioactividad.

Imagen

APUNTES FINALES
La velocidad del juego es aceptable. Para ello se ha dividido el movimiento de los invasores por filas, de dos en dos.

Por la peculiar gestión del modo de alta resolución en el DRAGON, no se permite visualizar gráficos y caracteres simultáneamente. Por ello, la puntuación solo se muestra al final. El tema del colorido también es muy limitado.

Para la carga de gráficos he diseñado una rutina que los muestra en pantalla y usa el comando GET para guardarlo en una matriz. Desgraciadamente, el movimiento se ha de hacer de 8 en 8 pixels, horizontalmente, cosa que hace al movimiento más brusco. En principio estaba contemplado que los invasores tuvieran distintas velocidades. Este método solo permite el uso pixel a pixel verticalmente.

En las linea 180 y 190 uso un PEEK para controlar si hay pulsadas las teclas cursoras, ya que por defecto el DRAGON no tiene autorepetición. De esta forma se consigue.

Y para terminar, el programa ocupa 52 lineas. Se podría haber dejado en 50 o menos, pero habría dejado el listado menos claro.

Os invito a probarlo.

Imagen

dancresp
Mensajes: 5366
Registrado: 13 Nov 2010 02:08
Agradecido : 167 veces
Agradecimiento recibido: 296 veces

Re: Programando NUCLEAR INVADERS para DRAGON

Mensajepor dancresp » 06 Nov 2011 21:20

Mañana subiré el fichero WAV para el que lo quiera probar en el aparato original. 15 segundos... y a matar marcianitos !!!

Remarcar que no recordaba lo duro del editor del DRAGON, aunque al final te acostumbras.

Y terminar dejando constancia de lo bien que me lo he pasado las dos noches que he tardado en hacerlo y pulirlo. No programaba nada en el desde el año 1993.

Próximamente el SCAINKANOID para el ORIC. 255 niveles distintos con 50 lineas de código.



Avatar de Usuario
ron
Mensajes: 18440
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1610 veces
Agradecimiento recibido: 1337 veces

Re: Programando NUCLEAR INVADERS para DRAGON

Mensajepor ron » 06 Nov 2011 22:09

Bravo Wally Dancresp.

Llevas un año tentándome y es que no me puedo resistir, pero de momento no me puedo poner a hacer estas cositas que tanto me gustan.

Si quieres podemos pasar los CAS / WAV a DSK.

!plax !plax !plax !plax !plax !plax !plax !plax !plax

manologarcia56
Mensajes: 219
Registrado: 03 May 2011 09:47

Re: Programando NUCLEAR INVADERS para DRAGON

Mensajepor manologarcia56 » 06 Nov 2011 23:08

Me has hecho soltar una lagrimita viendo la pantallita verde del dragón... y mucho más que hayas programado un jueguecito, eres una joya! !plax
P.D: Apoyo la moción de ron, pasadlo a formato compatible para el emulador (que por cierto, he podido probar gracias al comprimido que subiste hace tiempo, ya que no conseguía echarlo a andar ni a tiros!)

Avatar de Usuario
amakuja
Mensajes: 259
Registrado: 01 Nov 2010 14:42

Re: Programando NUCLEAR INVADERS para DRAGON

Mensajepor amakuja » 06 Nov 2011 23:26

Tiene buena pinta, pero creo que lo usaré en emulador.
¿Sería complicado portar estos juegos a otros sistemas?
Saludos

Avatar de Usuario
lafumat
Mensajes: 580
Registrado: 08 Jul 2011 07:52

Re: Programando NUCLEAR INVADERS para DRAGON

Mensajepor lafumat » 07 Nov 2011 07:45

vaya que si lo probare...

jaja.

que ilusion ver que se programan cosas para el dragon

ehorabuena

dancresp
Mensajes: 5366
Registrado: 13 Nov 2010 02:08
Agradecido : 167 veces
Agradecimiento recibido: 296 veces

Re: Programando NUCLEAR INVADERS para DRAGON

Mensajepor dancresp » 07 Nov 2011 10:15

Estos programitas los podéis pasar a lo que queráis.
Faltaría más !!!

Respecto al juego, es simple pero tiene su encanto, pero tengo pensado hacer una versión, con más de 50 lineas, para el MSX. El uso de los SPRITES va a hacer que funcione más rápido y suave, a parte de incorporar cosas que se han quedado en el tintero, como sus bombas y el UFO, entre otras.

De todas formas, estos programas son una toma de contacto con estos sistemas, que o bien en su día no programé, o hacía años que no programaba. De todo esto espero sacar proyectos más grandes y complejos, tanto en BASIC como en CM.

dancresp
Mensajes: 5366
Registrado: 13 Nov 2010 02:08
Agradecido : 167 veces
Agradecimiento recibido: 296 veces

Re: Programando NUCLEAR INVADERS para DRAGON

Mensajepor dancresp » 07 Nov 2011 10:45

Añadido el LINK para descargar el fichero WAV.

Avatar de Usuario
DyLucke
Mensajes: 4440
Registrado: 30 Oct 2010 12:52
Ubicación: Pompaela vieja
Agradecido : 100 veces
Agradecimiento recibido: 101 veces

Re: Programando NUCLEAR INVADERS para DRAGON

Mensajepor DyLucke » 07 Nov 2011 10:51

Se sale
"I'm playing games.
You've nowhere to run,
I'm a piece of the sun,
i'm an army of one...
I'm the man with the gun".


Volver a “Lenguajes de Programación y herramientas Dev”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados