Crea tus Juegos con 8BPCursos

Tu primer juego con 8BP

4.8
(17)

Hola de nuevo amigo de 8 Bits de Poder. Ya tienes los conocimientos para intentar un primer paso en la creación de videojuegos. Para ello, vamos a ver un sencillo ejemplo de un soldado al que vas a controlar, haciéndole caminar a derecha e izquierda por la pantalla, en lo que va a ser ¡¡¡tu primer juego con 8BP!!!

Supongamos que hemos editado a un soldado, gracias a SPEDIT, y hemos construido sus secuencias de animación, las cuales han sido definidas en el fichero “sequences_mygame.asm”, y han quedado con el identificador 9 y 10 para las direcciones de movimiento derecha e izquierda respectivamente.

rutas avanzadas

Pero espera… ¿Es posible que no sepas nada de 8 Bits de Poder? Puedes leer el primer artículo del curso de programación en Amstrad CPC de 8BP.

Las dos secuencias de animación las hemos creado desde el fichero de secuencias.asm

10 MEMORY 23999
20 MODE 0: DEFINT A-Z: CALL &6B78:' install RSX
25 call &bc02:'restaura paleta por defecto por si acaso
26 ink 0,0:'fondo negro
30 FOR j=0 TO 31:|SETUPSP,j,0,&X0:NEXT:'reset sprites
40 |SETLIMITS,12,80,0,186: ' establecemos los limites de la pantalla de juego
50 x=40:y=100:' coordenadas del personaje
51|SETUPSP,0,0,1:' status del personaje
52|SETUPSP,0,7,9:'secuencia de animacion asignada al empezar
53|LOCATESP,0,y,x:'colocamos al sprite (sin imprimirlo aun)

60 'ciclo de juego
70 gosub 100
80 |PRINTSPALL,0,0
90 goto 60

99 ' rutina movimiento personaje – -----------
100 IF INKEY(27)=0 THEN IF dir<>0 THEN |SETUPSP,0,7,9:dir=0:return ELSE |ANIMA,0:x=x+1:GOTO 120
110 IF INKEY(34)=0 THEN IF dir<>1 THEN |SETUPSP,0,7,10:dir=1:return ELSE |ANIMA,0:x=x-1
120 |LOCATESP,0,y,x
130 RETURN

Con este listado ya tienes un minijuego, que te permite controlar un soldado y hacerlo corretear horizontalmente. Fíjate que, si al caminar hacia la izquierda sobrepasas el valor mínimo del límite establecido con |SETLIMITS, se producirá el “clipping” del personaje, mostrándose tan solo la parte que queda dentro del área de juego permitida.

Tu primer juego con 8BP

Tu primer juego

En el ejemplo anterior nuestro personaje sólo se mueve de izquierda a derecha. Si queremos programar un salto, podemos hacerlo almacenando la trayectoria vertical en un array de BASIC.

Más adelante veremos una forma mejor de hacerlo (con rutas de 8BP), pero de momento servirá como ejemplo.

Y ahora, ¡¡¡A saltar!!!

Tu primer juego con 8bp

La trayectoria de salto se define para la coordenada Y. Primero sube 5 líneas de golpe, luego sube 4, luego sube 3, etc. hasta llegar a cero. En ese momento se invierte la dirección de movimiento y comenzamos a bajar 1 línea, luego 2, luego 3, etc. hasta 5.

Para que cuando suba y baje el muñeco no deje rastro, tendremos que tener un dibujo del muñeco subiendo con 5 líneas negras por debajo para borrarse a sí mismo al subir, y del mismo modo otra imagen con 5 líneas negras por encima para bajar. En este caso son las imágenes 22 y 23 para saltar a la derecha, 24 y 25 para la izquierda.

Tu primer juego con 8bp

En el punto cenital del salto se debe cambiar la imagen de subida por la de bajada, pero antes debemos subir de golpe 5 líneas, pues si comparas ambas imágenes te darás cuenta de que si pasas de una a otra directamente es como bajar 5 líneas.

10 MEMORY 23999
20 MODE 0: DEFINT A-Z: CALL &6B78:' install RSX
25 ON BREAK GOSUB 2800
30 CALL &BC02:'restaura paleta por defecto por si acaso
40 INK 0,0:'fondo negro
50 FOR j=0 TO 31:|SETUPSP,j,0,&X0:NEXT:'reset sprites
80 |SETLIMITS,12,80,0,186: ' establecemos los limites de la pantalla 
90 x=40:y=100:' coordenadas del personaje
100 |SETUPSP,0,0,1:' status del personaje
110 |SETUPSP,0,7,9:'secuencia de animacion asignada al empezar
120 |LOCATESP,0,y,x:'colocamos al sprite (sin imprimirlo aun)
121 DIM salto(24):' datos del salto
122 for i=-5 to 5: k=k+1:salto(k)=i: k=k+1: salto(k)=i: next: salto(11)=-5: salto(23)=5
125 PLOT 1,150:DRAW 640,150: plot 92,150:draw 92,400:'suelo y pared
126 |MUSIC,0,5: 'comienza a sonar la musica
130 'ciclo de juego – ----
150 |LOCATESP,0,y,x:|PRINTSPALL,0,0
151 GOSUB 170
160 GOTO 130:' fin ciclo juego
170 ' rutina movimiento personaje – -----------
171 IF jump =0 THEN IF INKEY(67)=0 THEN jump=1:|SETUPSP,0,9,DIR*2+22
180 IF INKEY(27)=0 THEN x=x+1:if jump=0 then IF dir<>0 THEN |SETUPSP,0,7,9:dir=0:x=x-1:RETURN ELSE |ANIMA,0:GOTO 210
190 IF INKEY(34)=0 THEN x=x-1:if jump=0 then IF dir<>1 THEN |SETUPSP,0,7,10:dir=1:x=x+1:RETURN ELSE |ANIMA,0
210 if jump=0 then RETURN
260 'rutina de salto – ----------
270 IF jump=11 THEN |SETUPSP,0,9,DIR*2+23 ELSE IF jump=23 THEN y=y+salto(jump):jump=0:|SETUPSP,0,7,DIR+9:return
280 y=y+salto(jump)
300 jump=jump+1
310 return
2800 |MUSICOFF:MODE 1: INK 0,0:PEN 1

Como ves en el listado, si pulsas la tecla “Q” la variable jump se iguala a 1, y en ese momento la lógica del muñeco se complica, pues requiere ejecutar una sentencia IF para cambiar la imagen al llegar al punto cenital, y además es necesario actualizar la coordenada Y del muñeco y la variable jump.

Más adelante veremos cómo hacer esto mismo con una técnica más avanzada, usando “rutas” de sprites. Las rutas programables de 8BP proporcionan un método más eficiente de hacer este tipo de cosas, por lo que verás como tu personaje salta mucho más rápido.

Las rutas te van a permitir ejecutar una trayectoria (un salto, un círculo, etc.), sin necesidad de controlar en cada instante las coordenadas. Y además, podrás cambiar el estado de un sprite en mitad de una ruta, o cambiarle su imagen asociada, su secuencia o incluso cambiarle de ruta, concatenando diferentes rutas.

En el próximo capítulo hablaremos de los juegos de pantallas, layouts o «tile maps», y aprenderemos a hacer uso de los mismos mediante nuestra librería 8 Bits de Poder.

Hasta aquí hemos llegado por hoy con el curso de programación en Amstrad CPC de 8 bits de poder Si tienes alguna duda puedes escribir en comentarios y te contestaré lo antes posible.

Todos los recursos, como manuales, ejemplos y juegos compilados de este curso los puedes encontrar en el repositorio Github de 8BP.

Hasta la semana que viene amigos 😄

¿Te ha Resultado útil este artículo?

Ayúdanos a mejorar y danos tu opinión:

Mostrar más

3 comentarios

  1. Como siempre muy interesante. Sobre todo la parte detallando el salto del personaje.
    Sería genial si el próximo videotutorial con los layouts también se basara en ese primer juego con el soldadito saltador para modificar las direcciones de saltos durante un mismo salto, por ejemplo, o para permitir que el sprite del personaje repose encima de los tiles sin comérselos.
    Muy interesante desde luego.

    1. Es «fácil» gracias a la librería 8bp que tenemos de base. Sin ella, algo tan sencillo como ese primer juego sería imposible para mí. Por eso, el programar desde mi pc para luego ejecutarlo en mi 6128+ se convierte en una auténtica pasada.

Deja una respuesta

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

Publicaciones relacionadas

Mira también
Cerrar
Botón volver arriba