Vamos a crear un RogueLike parte 2, movimientos

Publicado el 11 noviembre 2013 por Dracux @isladelmono

Lo primero que tenemos que lograr es que el personaje (mi amiga la arroba) se mueva. En principo definí 5 teclas, las cuatro de movimiento (izquierda, derecha, arriba y abajo) y F1 para que salga del juego. Le hice también una pequeña presentación para que muestre a modo de título.

Les muestro algo de código, de cualquier manera el SVN de Google Code está acá, pero para cuando lo lean, seguramente el código tiene mucho más código que el que muestro aca.

Veamos el tema de los personajes, el código (no exactamente lo que hay) es:

while(codigoComando!=0){
            perso.dibujarPersonaje();
            tecla=getch();
            switch(tecla){
                case KEY_UP:
                    perso.moverPersonaje(perso.getPosx(),perso.getPosy()-1);
                    codigoComando=1;
                    break;
                case KEY_DOWN:
                    perso.moverPersonaje(perso.getPosx(),perso.getPosy()+1);
                    codigoComando=2;
                    break;
                case KEY_LEFT:
                    perso.moverPersonaje(perso.getPosx()-1,perso.getPosy());
                    codigoComando=3;
                    break;
                case KEY_RIGHT:
                    perso.moverPersonaje(perso.getPosx()+1,perso.getPosy());
                    codigoComando=4;
                    break;
                case KEY_F(1):
                    codigoComando=0;
                    break;
            }
            refresh();
}

Definimos que cada tecla tiene un código de comando, y que el juego va a seguir hasta que ese código valga 0. Este valor cero se lo asigné a la tecla F1 (no es lo ideal, ya que F1 suele ser para ayuda, pero bueno, cualquier cosa cambiarlo es muy sencillo).

Como verán, las teclas de dirección llaman al objeto perso, método mover personaje, que simplemente dibuja un espacio adonde estaba el personaje, graba sus nuevas coordenadas y lo dibuja ahí. Y finalmente cuando termina el ciclo refresca la pantalla.

Les dejo un video que grabé mostrando el comportamiento que obtuvo mi “personaje”: