24 octubre 2008

Remake (parcial) de Fruity Frank... 08 - Comprobando colisiones con el mapa

Ahora que tenemos la estructura de la pantalla de nuestro juego (fondo, enemigos, "premios") diseñada usando un mapa, es fácil comprobar colisiones entre nuestro personaje y otros elementos.

En este primer acercamiento a las colisiones, nuestro personaje podrá recoger frutas de la pantalla.

Para ello, basta con varios pequeños detalles:


  • La posición inicial de nuestro personaje ya no será un punto de la pantalla gráfica, como el (100,300), sino un punto del mapa, como el (1,1).

  • Ya no se moverá saltando varios píxeles (xPersonaje += 4), sino de una casilla en una casilla (xPersonaje ++).

  • Cuando se mueva, no comprobaremos si ha llegado al final de la pantalla gráfica, sino al final del mapa: if ( SDLA_teclaPulsada (TECLA_DER) ) { xPersonaje ++; if (xPersonaje > MAXCOLS-1) xPersonaje --; }

  • No lo dibujaremos en coordenadas de la pantalla gráfica, sino de la misma forma que dibujamos todos los elementos del fondo: SDLA_dibujarImagenOculta(personaje, xIniPantalla + xPersonaje * anchoCasilla, yIniPantalla + yPersonaje * altoCasilla);

  • Antes de redibujar la pantalla, podemos comprobar si existe alguna fruta en la posición que ahora ocupará el personaje, y, si es así, podemos borrarla (en una etapa más avanzada del juego, no sólo haríamos eso, también aumentaríamos los puntos, etc.): if (mapa1[yPersonaje][xPersonaje] == 'C') mapa1[yPersonaje][xPersonaje] = ' ';



Apenas con esos cambios, nuestro personaje ya puede "comer frutas" del recorrido. El movimiento es más brusco que antes (avanzamos de "casilla" en "casilla"), pero de momento hemos ganado en versatilidad. Más adelante comentaremos cómo hacer que el movimiento vuelva a ser suave.

Como siempre, puedes ver todo el proyecto en: code.google.com/p/fruityfrank