Death Pit Remake
Un remake parcial de un juego... paso a paso
15.- Pantalla de créditos
El trabajo propuesto
A partir de la entrega 14 de Death Pit, añadir una clase "Creditos" que represente una pantalla de créditos (nombres de los autores del programa).
Esta clase debe tener un método Ejecutar, que borrará la pantalla, escribirá los nombres de los autores y mostrará hasta que se pulse una tecla una animación, en la que el escorpión perseguirá al personaje de derecha a izquierda de la pantalla, desapareciendo por el extremo izquierdo y volviendo a aparecer por el extremo derecho.
Se debe llamar desde "Juego", cuando en la "Presentación" se pulse la tecla "C".
La apariencia podría ser:

Forma de conseguirlo
Nuestro diagrama de clases ahora incluye una nueva clase, "Créditos":

En la "Presentación", habrá que avisar de que se puede pulsar una nueva tecla, y comprobar si efectivamente se pulsa dicha tecla:
public class Presentacion { // Opciones posibles public const byte OPC_PARTIDA = 0; public const byte OPC_SALIR = 1; public const byte OPC_CREDITOS = 2; ... public void Ejecutar() { //dibujo la imagen de la presentacion imagen.DibujarOculta(); // Esscribo avisos de las teclas utilizables Hardware.EscribirTextoOculta( "Pulsa Espacio para jugar, pulsa T para terminar", 175, 550, 0xAA, 0xAA, 0xAA, fuenteSans18); Hardware.EscribirTextoOculta( "o pulsa C para créditos.", 300, 575, 0xAA, 0xAA, 0xAA, fuenteSans18); // Finalmente, muestro en pantalla Hardware.VisualizarOculta(); //hasta que se pulse espacio do { } while ((! Hardware.TeclaPulsada(Hardware.TECLA_ESP) ) && (! Hardware.TeclaPulsada(Hardware.TECLA_T)) && (! Hardware.TeclaPulsada(Hardware.TECLA_C))); opcionEscogida = OPC_PARTIDA; if (Hardware.TeclaPulsada(Hardware.TECLA_T)) opcionEscogida = OPC_SALIR; if (Hardware.TeclaPulsada(Hardware.TECLA_C)) opcionEscogida = OPC_CREDITOS; //borro la presentacion Hardware.BorrarPantallaOculta(0,0,0); } ...
La clase "Juego" ahora tendrá que preguntar a la Presentación si se ha esogido esa nueva opción:
public class Juego { private Presentacion presentacion; private Partida partida; private Creditos creditos; // Inicialización al comenzar la sesión de juego public Juego() { // Inicializo modo grafico 800x600 puntos, 24 bits de color Hardware.Inicializar(800, 600, 24); // Inicializo componentes del juego presentacion = new Presentacion(); partida = new Partida(); creditos = new Creditos(); } // --- Comienzo de un nueva partida: reiniciar variables --- public void Ejecutar() { do { presentacion.Ejecutar(); switch( presentacion.GetOpcionEscogida() ) { case Presentacion.OPC_PARTIDA: partida.BuclePrincipal(); break; case Presentacion.OPC_CREDITOS: creditos.Ejecutar(); break; } } while (presentacion.GetOpcionEscogida() != Presentacion.OPC_SALIR ); } ...
Y la clase "Créditos", tendría simplemente un constructor para cargar las imágenes y tipos de letra, y un método "Ejecutar", que mostrara los nombres de los autores y la animación:
/* -------------------------------------------------- Parte de Death Pit - Remake Versiones hasta la fecha: Num. Fecha Por / Cambios --------------------------------------------------- 0.15 28-Ene-2010 Estibaliz Garcia y Nacho Cabanes Aparece una pantalla de creditos ---------------------------------------------------- */ public class Creditos { // Atributos private Fuente fuenteSans18; protected short coordenadax, coordenaday; protected string[] lineas = { "PROGRAMA REALIZADO POR:", " ", " Helios Pastor Aracil", " José Manuel Rizo Alonso", " José Javier Perez Perez", " Alejandro Ferrandiz Lillo", " Joaquín Montoya Ruiz", " Gemma Vicedo Jover", " Estibaliz García Diego", " Sacha Van de Sijpe Bueno", " Mario Matas Adé", " Juan Antonio Domenech Rubio", " Jose Carlos Rabasco", " Fran Asensi", " Diego Ibañez Ortuño", " Ignacio Botte García", " Miguel Rosario Salinas", " Nacho Cabanes" }; private ElemGrafico personaje, enemigo; private short xPersonaje, yPersonaje, xEnemigo, yEnemigo; public Creditos() // Constructor { fuenteSans18 = new Fuente("FreeSansBold.ttf", 18); coordenadax = 200; coordenaday = 50; personaje = new ElemGrafico("imagenes/personajei1.png" ); xPersonaje = 800; yPersonaje = 450; enemigo = new ElemGrafico("imagenes/aranya1.png"); xEnemigo = 880; yEnemigo = 450; } /// Lanza la pantalla de creditos public void Ejecutar() { //que borrará la pantalla, escribirá los nombres de los autores /*y mostrará hasta que se pulse una tecla una animación, * en la que el escorpión perseguirá al personaje de derecha a * izquierda de la pantalla, desapareciendo por el extremo izquierdo * y volviendo a aparecer por el extremo derecho.*/ bool salir = false; // Muestra los nombres y la animacion hasta que se pulse una tecla de ESC while (! salir ) { Hardware.BorrarPantallaOculta(0,0,0); // Borro en negro Hardware.EscribirTextoOculta( "Pulsa ESC para volver...", 100,550,0xAA, 0xAA, 0xAA, fuenteSans18); // Son varias líneas for(int i = 0; i < lineas.Length; i++) { Hardware.EscribirTextoOculta( lineas[i], coordenadax, (short) (coordenaday + i*20), (byte) (200 - i*8), (byte) (200 - i*8), (byte) (200 - i*8), fuenteSans18); } //Dibuja al personaje y el enemigo siguiendole personaje.DibujarOculta(xPersonaje, yPersonaje); enemigo.DibujarOculta(xEnemigo, yEnemigo); xPersonaje -= 5; if (xPersonaje < -50) xPersonaje = 800; xEnemigo -= 5; if (xEnemigo < -50) xEnemigo = 800; Hardware.VisualizarOculta(); Hardware.Pausa(40); salir = Hardware.TeclaPulsada (Hardware.TECLA_ESC); } } } /* fin de la clase Creditos */
Esta vez los cambios son muy sencillos, así que para esta entrega no hay fichero ZIP.
Siguiente entrega...Acceso rápido
- 00.- Motivo
- 01.- Esqueleto vacío
- 02.- Un personaje que se mueve solo
- 03.- Personaje que se mueve con teclado. Enemigo simultáneo
- 04.- Presentación. Dos enemigos con distinto comportamiento
- 05.- Varios enemigos iguales
- 06.- Un fondo formado por "casillas" repetitivas (tiles)
- 07.- El personaje se mueve por el laberinto
- 08.- Un fuente más modular
- 09.- Varias pantallas conectadas
- 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.
- 14.- Rediseño usando objetos
- 15.- Pantalla de créditos
- 16.- Movimiento suave del personaje
- 17.- Personaje "animado"
- 18.- Leyendo el mapa desde fichero
- 19.- Animación al morir un enemigo (Aún no)
- 20.- Varios tipos de enemigos (Aún no)
- 21.- Un mapa más grande (Aún no)
- 22.- Tabla de records (Aún no)
- 23.- Recoger "premios" (Aún no)
- 24.- Gastar aire y "energía" (Aún no)
- Orig.- Algunos datos sobre el juego original