Buenas, este es mi primer post en este foro. Llevo muy poco programando y me propuse hacer un juego simple como el mítico snake por simple satisfacción personal y prácticar un poco.
Debido a mi poca experiencia quizás he planteado el problema de una manera un tanto enrevesada y farragosa aunque parece que le concepto funciona.
Mi problema comienza en la función que he creado para detectar si ha comido una fruta o no la serpiente, en dicha función siempre entra en el segundo bloque 'if' aunque no cumpla la condición lo cual no tiene sentido aparente.
Lo más seguro es que esté pasando por alto algún error obvio en el código que tras tanto tiempo delante del ordenador ya me es incapaz de detectarlo.
Os dejo aquí el código : https://pastebin.com/p86TDXiP
Por haceros un breve resumen de la utilidad de cada función:
imprimeCampo - Imprime la matriz del campo y limpia el terminal
moveCabeza - Mueve las coordenadas x e y dependiendo de la dirección y devuelve si se ha movido hacía un obstaculo o una casilla libre (obstáculo devuelve 1, libre devuelve 0)
borraCola - borra el ultimo componente de la serpiente cuando la cabeza avanza
comp - comprueba que la dirección introducida no va en sentido contrario a la dirección en la que se mueve la serpiente (sentido contrario devuelve 2, sentido correcto devuelve 0)
fruta - genera una fruta de forma aleatoria en el campo
comefruta - detecta si en la coordenada a donde dispone moverse la cabeza hay una fruta o no (en caso positivo devuelve 1, caso negativo devuelve 0)
Como información adicional estoy usando Code::Blocks y el compilador GNU GCC
Gracias