Snake
Un poco sobre esta aplicación
Este es el clásico juego de la serpiente. También lo hice de manera independiente al curso por el que aprendí a programar, aunque cabe mencionar que revisando posteriormente los vídeos del curso, pude ver que se realizó también este juego aunque, con prácticas algo diferentes y un poco insuficientes (pero esa es mi subjetiva opinión personal). El juego está hecho en C y debería funcionar sin problema en un sistema Windows.
Detalles más técnicos
Sobre el juego puedo decir que descarté hacerlo funcionar de manera automática, para evitar darle demasiada dificultad. El cuerpo de la serpiente está formado por un array que sigue un sistema de coordenadas para posicionarse. El array de la serpiente aumenta de forma dinámica y en tiempo real siempre que haya espacio suficiente en la memoria RAM.
Como decidí no darle un movimiento automático, para que la serpiente sigua una misma dirección debe pulsarse cualquier tecla excepto la de las direcciones perpendiculares a donde se está mirando. Cada movimiento genera uno de 3 posibles estados que será comprobado y se ejecutará una u otra cosa en consecuencia. Los estados que genera cada movimiento dependerá de lo que pueda ocurrir una vez se haya realizado el movimiento, estos estados pueden ser:
Nada: donde el movimiento realizado no ha causado ningún tipo de
interacción.
Choque: Donde ya sea contra el marco del tablero o la misma serpiente, te
habrás chocado contra algo y en consecuencia el juego terminará con una derrota.
Comida encontrada: Donde el juego detectará que la serpiente ha encontrado
comida, y procederá a recalcular en tiempo real el array correspondiente al cuerpo de la serpiente para
aumentarlo, y lo posicionará según corresponda.
Además, esta última condición genera un evento más que consiste en buscar nuevas zonas libres en el tablero. Si encuentra que hay por lo menos una zona libre, procederá a crear una nueva comida en un punto aleatorio del tablero siempre que esté libre. Si no encuentra ninguna zona libre, se procederá a terminar el juego con una victoria.
Ejemplo de la ejecución del programa