lunes, 8 de enero de 2018

C++ Snake Dev Guide Part 1


Primera parte: Estructura de la serpiente




Lo primero que vamos a hacer es pensar cómo va a ser la estructura que va a representar a la serpiente y que funcionalidad va a tener, eso nos va a dar una idea de como deberían funcionar las demás cosas:

El juego de Snake tiene una mecánica simple que se puede reducir en 3 reglas:
  • Para agrandar la serpiente hay que comer la comida del mapa.
  • El cuerpo debe seguir la trayectoria de la cabeza
  • Hay que evitar que la serpiente muerda su propio cuerpo
Esto ya nos da una idea general de como armar la serpiente. Por un lado, tenemos que el cuerpo tiene que "seguir" a la cabeza siguiendo la trayectoria que el jugador le indique. Esto nos da un indicio de que podemos subdividir el cuerpo de la serpiente en Cabeza y Cuerpo.

La pregunta ahora sería: ¿Cómo hacer para que el cuerpo pueda seguir la trayectoria?

Podemos pensarlo de la siguiente manera:

Podríamos dejar en el tablero "direcciones" que tiene que seguir el cuerpo, por ejemplo que en la casilla [2][3] del tablero haya algo que diga "ARRIBA" así el cuerpo sabe hacia donde tiene que ir.

Si queremos hacerlo de esta manera, nuestro tablero tiene que poder guardar las direcciones que el jugador le va asignando.

Por lo tanto, podemos crear una estructura auxiliar para las casillas del tablero. Una estructura que guarde la posición x e y de la casilla y la dirección que puede tener. Luego, el tablero va a estar compuesto de casillas. Para las distintas direcciones es recomendable utilizar un enum, ya que facilita el uso general.

Lo último que falta es borrar las direcciones cuando la última parte del cuerpo (la cola de la serpiente) ya pasó por ella. Para esto podríamos distinguir la serpiente entre Cabeza-Cuerpo-Cola o dejarlo como Cabeza-Cuerpo.

La gran ventaja que tiene esta forma es que podemos también saber cuando la serpiente se muerde a sí misma! Como la cabeza es la que marca las direcciones, siempre debería entrar a casillas que no tengan dirección (o tengan dirección "NONE"). Por lo tanto, si la cabeza entra en una casilla que ya tenía asignada una dirección, significa que la cola todavía no pasó por ahí y no borró esa dirección. Entonces, significa que la serpiente se mordió a si misma.

Así que de esta manera podemos hacer que el cuerpo siga una trayectoria y tenemos también una forma de saber si el jugador perdió o no.

En la próxima parte vamos a ver cómo hacer el movimiento y cómo crear la comida y hacer que la serpiente crezca.

Hasta la próxima.

-L






No hay comentarios.:

Publicar un comentario