Remake parcial de Death Pit

Nuevas versiones para juegos legendarios.
Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Remake parcial de Death Pit

Mensajepor nacho » Mar 13 Oct , 2009 12:10 pm

Buenassss

El curso está en marcha, y llega el momento de que mis alumnos demuestren que van entendiendo cosas como el "do..while". ;-)

La idea para este primer trimestre (de aquí a finales de diciembre) es que hagan un remake parcial de un juego, y a este nivel va a ser el mismo juego para todos. En este juego me interesa que haya (por orden de creación):
  • Un personaje que controlar, para empezar con cosas como "si se pulsa la tecla a la derecha..."
  • Un enemigo que se mueva solo (y con el que más adelante habrá que comprobar colisiones, etc).
  • Después, varios enemigos, para empezar a utilizar arrays.
  • Más adelante, un "mapa" (de tiles para una pantalla, de pantallas para todo el juego) para usar arrays bidimensionales y registros (structs).
  • La lectura de ficheros (para records, mapa, etc) posiblemente no se implementaría hasta enero, así que quizás no se llegue a usar en este juego. Lo mismo pasaría con la descomposición del problema en varias "clases" que interaccionan.
Por eso, quiero que sea un juego de plataformas sencillito, y por supuesto, lo he elegido entre el catálogo de CPC. El ¿afortunado? para este curso ha sido Death Pit.

Lo haremos en C#, usando Tao.SDL como librería gráfica. He creado un esqueleto de juego, capaz simplemente de entrar a modo gráfico, mostrar una imagen y esperar a que se pulse ESC, y a partir de ahí iremos ampliando.

Como es el primer trimestre, no haremos grandes cosas, pero si aun así hay gente del foro interesada, puedo crear un apartado en mi web, dejar allí las descargas e ir publicando aquí las novedades, los enlaces a los ficheros ZIP, e ir respondiendo dudas.

Avatar de Usuario
Mochilote
Keeper of The Forum
Keeper of The Forum
Mensajes: 903
Registrado: Sab 08 Oct , 2005 4:26 pm
Contactar:

Re: Remake parcial de Death Pit

Mensajepor Mochilote » Mar 13 Oct , 2009 3:48 pm

Como es el primer trimestre, no haremos grandes cosas, pero si aun así hay gente del foro interesada, puedo crear un apartado en mi web, dejar allí las descargas e ir publicando aquí las novedades, los enlaces a los ficheros ZIP, e ir respondiendo dudas.
Tu publica todo hombre :mrgreen: Esto son profesores y no los que yo tuve ](*,)


Saludos.

Avatar de Usuario
Mode 2
I am The Forum
I am The Forum
Mensajes: 2068
Registrado: Lun 10 Oct , 2005 8:01 pm
Ubicación: Sevilla, años 80.
Contactar:

Re: Remake parcial de Death Pit

Mensajepor Mode 2 » Mar 13 Oct , 2009 6:26 pm

Yo estoy interesado Nacho aunque vaya a ralentí. :(

Muchas gracias!! =D>
BUSCO: VideoPac+, Jaguar Saturn, Micromanía 1, Amstrad Semanal, MicroHobby, juegos especialmente CPC y Vectrex, Aquarius, Sam Copé, 520 ST, manual +3, manual CPC664.

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Jue 15 Oct , 2009 2:23 am

Venga, pues vamos con ello...

Teneis publicada la primera entrega, un esqueleto vacío que entra a modo gráfico y muestra una imagen. Copio y pego la "explicación" (demasiado breve, pero el tiempo libre escasea) y al final teneis el enlace para más detalles y para la información más actualizada...

---

Algunas ideas sobre el esqueleto del juego

Para no necesitar conocer demasiado los detalles internos de SDL y de su adaptación como parte del "Tao Framework", el esqueleto incluye varias clases auxiliares, como:

El "Hardware", para poder mostrar cosas en pantalla y leer de teclado.

Un "Elemento Gráfico", que representa a una imagen en el juego (o incluso a un personaje que está representado por una secuencia de imágenes).

Una "Fuente" (un tipo de letra), que nos permitirá escribir textos en pantalla.

Para evitar parpadeos, las imágenes y los textos se dibujan en una pantalla oculta (un "doble buffer"), que se muestra cuando todos los elementos están preparados.

Primeras órdenes empleadas

Algunas de las órdenes básicas existentes en esas tres clases, y que usaremos en este priemr acercamiento:

Un Elemento Gráfico se declara (ElemGrafico imagenPersonaje;), se carga de disco con "new" (imagenPersonaje = new ElemGrafico( "imagenes/personaje.png" );), se coloca en cualquier posición con MoverA (imagenPersonaje. MoverA( 380, 300);) y se dibuja en la pantalla oculta (imagenPersonaje. DibujarOculta();).

Una Fuente (tipo de letra) también se declara (Fuente fuente18;), se carga de disco con "new" (fuente18 = new Fuente("FreeSansBold.ttf", 18);), y el texto se esrcribe en pantalla oculta en ciertas coordenadas (por ejemplo 300,500) y con cierto color, expresado como componentes RBG -Rojo, Verde, Azul- (Hardware. EscribirTextoOculta( "Pulsa ESC para salir", 300, 500, 0xAA, 0xAA, 0xAA, fuente18);) .

El modo gráfico se inicializa con "Hardware. Inicializar(800, 600, 24);", la pantalla oculta se puede visualizar cuando esté totalmente preparada, usando "Hardware. VisualizarOculta();", y se puede comprobar si una cierta tecla está pulsada, haciendo cosas como "if ( Hardware.TeclaPulsada(Hardware.TECLA_ESC) ) ..."

Compiladores y otras herramientas necesarias

Para no necesitar usar Visual Studio, que es de gran tamaño y relativamente lento (incluso en su versión Express), se puede emplear como compilador Mono, que se puede descargar libremente de http://www.mono-project.com.

En un fuente sencillo, para compilar con Mono bastaría teclear "mcs fuente.cs"; como en este caso se trata de varios fuentes, de un fichero DLL, etc., se puede usar el fichero COMPILA.BAT. Si no hay problemas en la compilación, se puede usar EJECUTA.BAT para copiar el ejectuable a su carpeta y lanzarlo.

El resto de ficheros necesarios (DLL, tipos de letra, imágenes) se encuentran formando parte del fichero ZIP que contiene todo lo necesario para compilar y probar el juego.

Fuente del fichero "Juego.cs" para esta primera entrega

Código: Seleccionar todo

/**
* Juego: Lógica de juego
*
* @see Hardware
* @author 1-DAI IES San Vicente 2009/10
*/

/* --------------------------------------------------
Parte de Death Pit - Remake
Versiones hasta la fecha:

Num. Fecha Por / Cambios
---------------------------------------------------
0.01 xx-Oct-2009 Nacho Cabanes
Versión inicial: muestra una imagen

---------------------------------------------------- */

public class Juego
{

private static void Main()
{
// Variables que usaremos: una imagen y un tipo de letra
ElemGrafico imagenPersonaje;
Fuente fuente18;

// Inicializo modo grafico 800x600 puntos, 24 bits de color
Hardware.Inicializar(800, 600, 24);

// Cargo imagenes y tipos de letra
imagenPersonaje = new ElemGrafico("imagenes/personaje.png");
fuente18 = new Fuente("FreeSansBold.ttf", 18);

// Dibujo el personaje y un texto en la pantalla oculta
imagenPersonaje.MoverA(380,300);
imagenPersonaje.DibujarOculta();

Hardware.EscribirTextoOculta(
"Pulsa ESC para salir",
300, 500, 0xAA, 0xAA, 0xAA, fuente18);


// Finalmente, muestro en pantalla
Hardware.VisualizarOculta();


// Y espero a que se pulse ESC
do {
// No hacer nada, solo esperar
} while (! Hardware.TeclaPulsada(Hardware.TECLA_ESC) );

}


} /* fin de la clase Juego */

---

Para más detalles, ver el fuente con colores, o descargar el fichero ZIP que contiene todo, podeis hacerlo desde aquí:

http://www.nachocabanes.com/videojuegos ... hpit01.php

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Jue 15 Oct , 2009 3:12 am

Por cierto, por si alguien se aburre, también aparece ya el trabajo propuesto para las siguientes entregas (2 y 3). Doy por sentado que casi nadie tendrá tiempo de intentarlo (además de que es exageradamente fácil todavía), así que dentro de poco iré poniendo soluciones... ;-)

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Vie 16 Oct , 2009 1:17 am

Segunda entrega (facilita) disponible.

El trabajo propuesto

Hacer que el personaje se mueva solo, desde las coordenadas (100,300) hasta tocar el borde derecho de la pantalla de juego. En ese momento, deberá quedarse parado.

Forma de conseguirlo

Debería ser sencillo:

Para que la posición del personaje cambie, no lo "moveremos" siempre a las mismas coordenadas, sino que jugaremos con una variable "x": imagenPersonaje. MoverA( x ,300);

Para que se aprecien cambios en pantalla, y así se pueda dar sensación de movimiento, la parte de programa que se encarga de dibujar al personaje, de escribir el texto y de visualizar la pantalla oculta debe repetirse dentro del "do..while", mientras que se espera a que el usuario pulse ESC

Para que el personaje se mueva a la derecha, basta con aumentar su coordenada x: x++; Si queremos que no se salga de la pantalla, deberemos limitar el valor de x, no dejando que pase de 730 (los 800 de ancho de nuestro modo gráfico menos los 70 de ancho de nuestras imágenes): if (x<730) x++;

Más detalles, y el fuente con esos pequeños cambios, en:

http://www.nachocabanes.com/videojuegos ... hpit02.php

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Dom 18 Oct , 2009 2:22 am

Tercera entrega (todavía muy fácil) disponible: Personaje que se mueve con teclado. Enemigo simultáneo

El trabajo propuesto

Hacer que el personaje se mueva a derecha o izquierda cuando se pulsen la flecha derecha y la izquierda del teclado, respectivamente. Deberá avanzar o retroceder 4 píxeles cada vez. También aparecerá un primer enemigo, el "escorpión", que se moverá solo, hacia la derecha, incluso aunque se salga por el borde derecho de la pantalla de juego. Para que la velocidad de juego no sea exageradamente alta en ordenadores rápidos, lo limitaremos a 25 fotogramas por segundo, haciendo una pausa de 40 ms al final de cada pasada del "bucle de juego" (y supondremos que el tiempo de cálculo y dibujado de cada fotograma es tan pequeño que se puede despreciar).

Forma de conseguirlo

Para comprobar si se pulsa la tecla de la derecha o la izquierda, usaremos una construcción parecida a la que ahora comprueba si se pulsa ESC: if ( Hardware. TeclaPulsada( Hardware. TECLA_DER) ) x+=4;

Para que el enemigo se mueva a la derecha, haremos lo que antes hacíamos en el personaje: dejar que su coordenada X sea variable, y aumentarla en cada "pasada" por el bucle principal del juego.

Lo de la pausa de 40 ms es muy sencillo, pero es una posibilidad de la clase Hardware que aún no habíamos usado: Hardware.Pausa( 40 ); Esta orden la usaremos cuando ya hemos dibujado todo en pantalla y hemos mostrado esta pantalla oculta.


Más detalles, fuente y descargas en

http://www.nachocabanes.com/videojuegos ... hpit03.php

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Jue 22 Oct , 2009 1:47 am

Cuarta entrega disponible, también fácil: Presentación. Dos enemigos con distinto comportamiento

El trabajo propuesto

Mostrar la pantalla de presentación hasta que se pulse la tecla de ESPACIO. Cuando se pulse esa tecla, deberá entrarse al juego propiamente dicho. El personaje deberá poder moverse también hacia arriba y hacia abajo. Deberá haber dos enemigos: ambos tendrán la imagen del escorpión, pero uno se moverá a derecha a izquierda, "rebotando" cada vez que llegue a un extremo de la pantalla, y el otro deberá perseguir al personaje.

Forma de conseguirlo
  • Lo de la pantalla de presentación es sencillo: creamos un nuevo "ElemGrafico", lo dibujamos en la pantalla oculta, visualizamos dicha pantalla oculta y esperamos con un do..while hasta que se pulse la tecla Espacio (TECLA_ESP)
  • Cuando se pulse esta tecla, podemos borrar la pantalla con Hardware.BorrarPantallaOculta(0,0,0); (esos tres números representan la cantidad de Rojo, Verde y Azul que tendrá el color con el que se borra; (0,0,0) indica el color negro.
  • Mover arriba y abajo nuestro personaje es igual de fácil que moverlo hacia los lados, pero comprobaremos las teclas Arriba (TECLA_ARR) y Abajo (TECLA_ABA) y modificaremos la coordenada "y".
  • Para que el enemigo se mueva a derecha e izquierda, rebotando en los extremos, en vez de aumentar su posición siempre con "x++", podemos sumarle una variable "incremento", que inicialmente valga 1, y cuando llegue a un borde le cambiaremos el sigo, de forma que se convierta en -1 (por lo que retrocederá), luego en +1 (y volverá a avanzar) y así sucesivamente: if ( (xEnemigo >= max) || (xEnemigo <= min) ) incremento = (short) -incremento;
  • Y que el otro enemigo nos persiga tampoco debería ser difícil: comparamos su "x" con la de nuestro personaje, y la aumentamos si es menor, o la disminuimos si es mayor (y lo mismo para la "y"): if (x > xEnemigo2 ) xEnemigo2 ++;
Fuente y propuesta para la siguiente entrega (primer ejemplo de uso de arrays), en:

http://www.nachocabanes.com/videojuegos ... hpit04.php

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Sab 24 Oct , 2009 9:37 pm

Quinta entrega, para empezar a jugar con arrays: Varios enemigos iguales

El trabajo propuesto

Seis enemigos (murcielagos) deben moverse de lado a lado a distintas alturas, usando arrays. Borrar la pantalla de juego en cada "pasada" por el bucle principal, para que los personajes no dejen "rastro" al moverse.

Forma de conseguirlo

Para tener varios enemigos iguales, basta crear un array de "elementos gráficos": ElemGrafico[] imagenesMurcielagos; que luego inicializaremos con imagenesMurcielagos = new ElemGrafico[6];

Cada uno de esos elementos gráficos los inicializamos a partir de su imagen, como hacíamos con el personaje y el otro enemigo: for (i=0; i<6; i++) imagenesMurcielagos = new ElemGrafico("imagenes/murcielago.png");

De igual modo, podemos crear una coordenada "x" distinta para cada enemigo, aunque de momento les daremos a todas el mismo valor: short[] xMurcielagos;

Usaremos "for" para dibujar todos los murciélagos, para aumentar su coordenada x, etc:for (i=0; i<6; i++) { imagenesMurcielagos.MoverA( xMurcielagos , (short) (100+i*70) ); imagenesMurcielagos.DibujarOculta(); }

Y lo de borrar pantalla ya lo hemos visto antes...


Fuente y propuesta para la siguiente entrega (arrays bidimensionales, para dibujar la pantalla de fondo a partir de imágenes repetitivas), en:

http://www.nachocabanes.com/videojuegos ... hpit05.php

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Mar 03 Nov , 2009 12:38 am

Sexta entrega disponible, usando arrays de dos dimensiones para dibujar las "casillas de fondo" de una pantalla de juego.

Detalles, captura de pantalla y fuente en:

http://www.nachocabanes.com/videojuegos ... hpit06.php

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Vie 13 Nov , 2009 1:46 pm

Séptima entrega disponible, en la que el personaje sólo se puede mover por los "huecos" de la pantalla (todavía a saltos).

http://www.nachocabanes.com/videojuegos ... hpit07.php

Realmente, esta entrega es de hace más de una semana, pero no había tenido tiempo de publicarla. La octava entrega, usando "funciones" para hacer el fuente un poco más modular, ya está creada... pero no está redactado el resumen, así que estará disponible pronto.

Próximas tareas previstas:

- Varias pantallas "conectadas".
- Un enemigo que se mueve por el laberinto.
- Varias vidas.
- ...

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Mié 25 Nov , 2009 1:39 am

Octava entrega disponible, usando "funciones" para que el fuente sea más modular.

http://www.nachocabanes.com/videojuegos ... hpit08.php

Nuevamente, esta entrega es antigua, pero no había podido sacar el tiempo para publicarla. La novena entrega (varias pantallas "conectadas") ya está hecha, y hoy hemos hecho la décima (un enemigo que se mueve por el laberinto). Espero poder sacar algún otro rato para redactar al menos un breve resumen y publicarlas pronto.

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Vie 27 Nov , 2009 11:18 pm

Novena entrega disponible, con varias pantallas conectadas (de momento 4, en una matriz de 2x2, no tomadas exactamente del juego original).

http://www.nachocabanes.com/videojuegos ... hpit09.php

De paso, he capturado unas cuantas pantallas del juego original, para recrear parte del mapa de juego, de forma que más adelante se pueda imitar su estructura (cuando los datos de niveles estén en ficheros, y sea un poco menos lento y trabajoso el crear nuevas pantallas). Parece que el juego original partía de un mapa de (al menos) 10x15 = 150 pantallas (de las que he capturado algo más de 50), aunque al tener sólo 7x7 tiles de fondo cada pantalla, el gasto de memoria en el mapa debía ser inferior a los 8 Kb.

http://www.nachocabanes.com/videojuegos ... it_org.php

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Jue 03 Dic , 2009 12:29 am

Décima entrega publicada, con un enemigo que se mueve por el laberinto (todavía sin "matarnos"):

http://www.nachocabanes.com/videojuegos ... hpit10.php

En clase ya hemos hecho también la entrega 11, en la que tenemos 5 vidas y perdemos una cada vez que el enemigo nos toca. De momento en la web se puede ver la propuesta para esta entrega pero no la solución. ;-)

De paso, el mapa del juego original incluye ahora cerca de 80 pantallas.

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: Remake parcial de Death Pit

Mensajepor nacho » Lun 21 Dic , 2009 8:35 pm

Varias entradas más publicadas:
  • 10.- Un enemigo que se mueve por el laberinto
  • 11.- Varias vidas
  • 12.- Distintas imágenes según la dirección. Matar enemigos y obtener puntos.
  • 13.- Volver a empezar una partida.
La última está en:

http://www.nachocabanes.com/videojuegos ... hpit13.php

Después de la pausa navideña lo desglosaremos en varias clases (personaje, enemigo, etc) como introducción a la Programación Orientada a Objetos, pero a partir de aquí ya lo avanzaremos poco, porque durante la segunda evaluación cada uno se centrará en su propio juego, que ya han escogido, y a éste le haremos sólo algunas mejoras puntuales.


¡¡¡ Felices fiestas !!!


¿Quién está conectado?

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


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic