AYUDA. Comparar vectores de chars.

Iniciado por toomi.143, 27 Marzo 2017, 04:33 AM

0 Miembros y 1 Visitante están viendo este tema.

toomi.143

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 (cpp) [Seleccionar]
void diagonal(char cuadro[][numeroDeColumnas]) // 4 en linea diagonal
{
int filasARecorrer = numeroDeFilas - ultimaPosicion;
int i,j;
for (i=0;i<filasARecorrer;i++)
{
for(j=numeroDeColumnas;j>ultimaPosicion;j--)
{
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
{
cout << "El jugador 1 gana!" << endl;
ganador=true;
}
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
{
cout << "El jugador 2 gana!" << endl;
ganador=true;
}
}
}
}

Kenji-chan

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