Por Nacho Cabanes
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.
La apariencia sería:
Y el fuente podría ser:
/** * Juego: Logica 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 08-Sep-2009 Nacho Cabanes Version inicial: muestra una imagen 0.02 07-Oct-2009 Nacho Cabanes Mueve el personaje hacia la derecha hasta llegar al margen 0.03 13-Oct-2009 Nacho Cabanes El personaje se mueve con flechas Un primer enemigo que se mueve a la vez 0.04 16-Oct-2009 Nacho Cabanes Primera pantalla de presentacion El primer enemigo rebota en los lados Un segundo enemigo nos persigue 0.05 20-Oct-2009 Nacho Cabanes Array de enemigos (murcielagos) que rebotan en los lados ---------------------------------------------------- */ public class Juego { private static void Main() { // Variables que usaremos: una imagen y un tipo de letra ElemGrafico imagenPersonaje, imagenEnemigo2, presentacion; ElemGrafico[] imagenesMurcielagos; Fuente fuente18; int i; short x = 100, xEnemigo2 = 50; short[] xMurcielagos; short y = 300, yEnemigo2 = 200; short incremento = 1; int min = 0, max = 730; imagenesMurcielagos = new ElemGrafico[6]; xMurcielagos = new short[6]; // 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"); for (i=0; i<6; i++) imagenesMurcielagos[i] = new ElemGrafico("imagenes/murcielago.png"); for (i=0; i<6; i++) xMurcielagos[i] = 50; imagenEnemigo2 = new ElemGrafico("imagenes/escorpion.png"); fuente18 = new Fuente("FreeSansBold.ttf", 18); presentacion = new ElemGrafico("imagenes/present.png"); //dibujo la presentacion presentacion.DibujarOculta(); // Finalmente, muestro en pantalla Hardware.VisualizarOculta(); //hasta que se pulse espacio do { } while (! Hardware.TeclaPulsada(Hardware.TECLA_ESP) ); //borro la presentacion Hardware.BorrarPantallaOculta(0,0,0); // Y espero a que se pulse ESC do { Hardware.BorrarPantallaOculta(0,0,0); // Dibujo el personaje, el enemigo y un texto en la pantalla oculta imagenPersonaje.MoverA( x ,y); imagenPersonaje.DibujarOculta(); for (i=0; i<6; i++) { imagenesMurcielagos[i].MoverA( xMurcielagos[i] , (short) (100+i*70) ); imagenesMurcielagos[i].DibujarOculta(); } imagenEnemigo2.MoverA( xEnemigo2 ,yEnemigo2); imagenEnemigo2.DibujarOculta(); Hardware.EscribirTextoOculta( "Pulsa ESC para salir", 300, 500, 0xAA, 0xAA, 0xAA, fuente18); // Finalmente, muestro en pantalla Hardware.VisualizarOculta(); // Y lo muevo si se pulsa alguna flecha del teclado if (Hardware.TeclaPulsada(Hardware.TECLA_DER) ) x+=4; if(Hardware.TeclaPulsada(Hardware.TECLA_ARR) ) y-=4; if (Hardware.TeclaPulsada(Hardware.TECLA_IZQ) ) x-=4; if (Hardware.TeclaPulsada(Hardware.TECLA_ABA) ) y+=4; // Y muevo siempre a los enemigos for (i=0; i<6; i++) { xMurcielagos[i] +=incremento; // Los murcielagos rebotan en los lados if ( (xMurcielagos[i] >= max) || (xMurcielagos[i] <= min) ) incremento = (short) -incremento; } // y el segundo me persigue if (x > xEnemigo2 ) xEnemigo2 ++; if (x < xEnemigo2 ) xEnemigo2 --; if( y > yEnemigo2 ) yEnemigo2 ++; if ( y < yEnemigo2 ) yEnemigo2 --; // Pausa para 25 fps Hardware.Pausa( 40 ); } while (! Hardware.TeclaPulsada(Hardware.TECLA_ESC) ); } } /* fin de la clase Juego */Siguiente entrega...