Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Firefoxes

#1
Buenas estoy haciendo una función para un programa que resuelve un laberinto, la función en concreto lo que hace es ya con el laberinto resuelto cambia los caracteres que marcan el camino por '-', '|' o '+' para que sea mas visual.

Acabo de empezar a escribir el código de dicha función e intentando hacer pruebas me sale violación de segmento que ocurre en esa función en concreto (el resto del código está bien)

Me gustaría saber que es lo que falla en la condición para que de fallo.
Creo que el problema es que se sale de la tabla pero no se solucionarlo

*En la función todavía faltan muchas cosas*
void camino(char **tabla, int tamv, int tamh)
{
  int i;
  int j;

  for(i=0; i<tamv; i++)
    {
      for(j=0; j<tamh; j++)
{
  //Para colocar '-' no debe haber ni arriba ni abajo '#', 'o' o '|'
  if(tabla[i+1][j]!='o' && tabla[i+1][j]!='#' && tabla[i+1][j]!='|' && tabla[i-1][j]!='o' && tabla[i-1][j]!='#' && tabla[i-1][j]!='|')
    tabla[i][j]='-';
}
    }
}
#2
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 :)