Run Away / Belén Iniesta

Título Pantalla Partida en juego Pantalla Partida en juego Pantalla Partida en juego
Run Away

  • Grupo: Belén Iniesta (Belén Iniesta López)
  • Presentado: #CPCRetroDev 2014
  • Clasificación: 15 / 16
  • Plataforma: Amstrad CPC 464
  • Lenguaje: Basic
  • Tamaño: 5 KBs
  • Controles: Cursores Izquierda y derecha: moverse en esas direcciones
Descargar Juego Descargar Código Fuente

Descripción

Runaway se trata de un juego de laberintos, donde el personaje se encuentra en una parte alejado de la salida y tiene que recorrer la pantalla en busca de la puerta que lo llevará a la salida. Para ello tendrá que esquivar a enemigos y recoger los premios para abrir éstas puertas. Los enemigos que se encontrará en las distintas habitaciones tendrán un movimiento constante en el mismo eje, rebotando contra las paredes. Si alguno de éstos colisiona contra el personaje,
éste morirá y el videojuego habrá acabado. El personaje tendrá que escaparse de dos habitaciones para que finalmente, pueda conseguir salir vivo del laberinto.

Los controles son sencillos, la tecla izquierda para moverse una casilla la izquierda, y la tecla derecha para moverse una casilla a la derecha

Características

Lo que caracteriza a Runaway es su estilo retro y sencillo, donde la complejidad se encuentra en la distribución de los laberintos y los abundantes enemigos. Cada vez que pasas una pantalla, ésta en más difícil, ya que contiene más enemigos que te impedirán el paso y tendrás que esquivarlos; teniendo que esperar y medir tus pasos.

Así se hizo

Las primeras 3 semanas estuve estudiando el lenguaje Basic, haciendo pequeñas pruebas en el propio simulador de Amstrad. Al trabajar con Mavericks utilicé el emulador CPC++ y TextWrangler para escribir las líneas de código Basic. El material para comenzar a aprender Basic lo saqué de: http://www.nachocabanes.com/amstrad/curso/ y http://www.aprendeaprogramar.com//course/view.php?id=6

En estos cursos encontré prácticamente todo lo necesario. En concreto aprendí bastante con un pequeño ejemplo: hhttp://www.nachocabanes.com/amstrad/curso/cpc_e00.php

En éste, lo copiaba y analizaba línea por línea el significado, y más tarde realicé por mí sola el ejercicio propuesto.

Al tener unas nociones básica de BASIC ya empecé a programar el videojuego.

El planning a seguir sería algo así:

  1. Dibujar 1 sala sencilla, sólo con borde, no con paredes por en medio.
  2. Dibujar el muñeco y que se pueda mover con la sala y no sobrepasar las paredes, que tenga un efecto de choque.
  3. Pasar de pantalla1 a pantalla2.
  4. IA enemigo. Una IA totalmente sencilla. Moverse linealmente por la sala a una velocidad constante, y si el muñeco se choca con él, el juego se termina.
    1. Para ello tuve que estudiar los arrays en Basic (MID), y leer datos (DATA,READ), y rellenar las matrices con los caracteres que lee de DATA. En este ejemplo se puede ver que el programa es bastante lento al dibujar la pantalla. Al principio, vacía la matriz para futuros usos. Si no se vacía la matriz, al dibujar una supuesta pantalla 2 saldría un error diciendo “Array already created”.
Sala sencilla

Dibujo de Sala sencilla

  • Ahora llegaba el momento de calcular que el muñeco no sobrepasa los bordes, y se moviera perfectamente por la sala. Uno de los grandes problemas que me he encontrado en programar en BASIC ha sido la identificación de “los fallos tontos”: líneas con el mismo número, posiciones que no deberías ser esas, líneas que nunca llegan a ser ejecutadas, … Por ello siempre he tenido una versión Debugger. En el cual veía las posiciones de enemigos y personaje, y los umbrales de los enemigos.

 

Error control personaje

Error al controlar los bordes para el el personaje

  • Para pasar de una pantalla a otra sólo puntuaré algo y es el READ y apuntar bien a la DATA que se está leyendo. Para eso utilicé el “RESTORE nºlinea”, para apuntar a la DATA que queramos leer.
  • IA Enemigo: Como he comentado, la IA del enemigo es bastante sencilla. Simplemente ve si hay un borde en su trayectoria lineal con velocidad constante, si hay un borde la velocidad cambia de signo. Esto lo conseguir con un solo IF.

 

Intenté implementar una IA más compleja, pero no tuve tiempo. Ésta consistiría en que si el personaje entra en el umbral de un enemigo, éste le perseguiría.

IA sencilla IA compleja
Diseño IA sencilla Diseño IA compleja

Ficha Técnica

Lenguaje de programación utilizado: Basic
Tamaño: 5KB
IA: Sencilla, movimiento lineal uniforme con detección de colisiones

Leave A Reply

Your email address will not be published. Required fields are marked *