Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: toomi.143 en 27 Marzo 2017, 04:33 am



Título: AYUDA. Comparar vectores de chars.
Publicado por: toomi.143 en 27 Marzo 2017, 04:33 am
Buenas gente, estoy haciendo un 4 en línea, el cual el tablero contenía enteros, luego decidí pasarlo a Chars para que sea más legible.

El jugador 1 utiliza las 'X'
El Jugador 2 utiliza los 'O' como fichas respectivamente

Estoy teniendo un problema al comparar el valor de estos chars cuando tengo que hacer un IF de 4 condiciones para verificar si hay 4 en línea diagonal, ya sea diagonal invertida o normal. Es decir, había hecho el MISMO código en enteros, pero ahora cuando lo paso a CHAR No me está funcionando, es decir el algoritmo está bien hecho, pero hay algo que me está fallando en alguna condición.

A continuación les dejo el código de la función donde estaría teniendo problemas y no me estaría funcionando.
Solo adjunto esa parte del código.

Es un tablero de 10x10
donde ultimaPosicion =3
DESDE YA MUCHAS GRACIAS A LOS QUE TOMAN SU TIEMPO PARA INTENTAR AYUDARME, SE AGRADECE.

Código
  1. void diagonal(char cuadro[][numeroDeColumnas]) // 4 en linea diagonal
  2. {
  3. int filasARecorrer = numeroDeFilas - ultimaPosicion;
  4. int i,j;
  5. for (i=0;i<filasARecorrer;i++)
  6. {
  7. for(j=numeroDeColumnas;j>ultimaPosicion;j--)
  8. {
  9. if (cuadro[i][j]=='X' && cuadro[i+1][j-1]=='X' && cuadro[i+2][j-2]=='X' && cuadro[i+3][j-3]=='X') // Si el Jugador 1 hace 4 en linea diagonal
  10. {
  11. cout << "El jugador 1 gana!" << endl;
  12. ganador=true;
  13. }
  14. if (cuadro[i][j]=='O' && cuadro[i+1][j-1]=='O' && cuadro[i+2][j-2]=='O' && cuadro[i+3][j-3]=='O') // Si el Jugador 2 hace 4 en linea Diagonal
  15. {
  16. cout << "El jugador 2 gana!" << endl;
  17. ganador=true;
  18. }
  19. }
  20. }
  21. }


Título: Re: AYUDA. Comparar vectores de chars.
Publicado por: Kenji-chan en 27 Marzo 2017, 23:17 pm
puede que tengas el mismo problema que yo en el que el tablero estaba girado 90° ya que al usar el siclo for anidado las j serán las (X) y las i las (Y) te dejo la liga a mi post para que lo entiendas mejor
http://foro.elhacker.net/programacion_cc/error_logico_c-t462008.0.html;msg2100162#msg2100162