El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de Java
Foros del Guru > Java
Usuario Problema de rangos
Desconocido
Enviado - 21/7/2004
 
Hola estoy programando un 3 en raya...y os explico:

Es un programa que te pide por pantalla que metas la casilla donde kieres poner una X y el ordenador, mediante un algoritmo, pone una O. El algoritmo es: mira las casillas vecinas con X + nº de X de la misma fila + nº de X de la misma columna - nº de casillas vecinas con O - nº de O de la misma fila - nº de O de la misma columna

Mi problema es el siguiente, que no controlo que no se me salga de rangos...porque cuando (x ej) meto la casilla 0,0 que seria la 1º fila, 1º columna, me mira las casillas vecinas por tanto, me mira tambien casillas que no forman parte de la matriz...no se si me explico...os pongo el bucle:

for(int i=fila; i==fila;i++){
for(int j=columna; j==columna;j++){
for(int f = (i - 1) ; f<=(i+1);f++){
for(int c = (j-1) ; c<=(j+1);c++){
if (matriz[f][c] == true) {
vecinosX++;
matrizAux[i][j]++;

}
}
}
}
ese bucle me mira los vecinos con X, tengo otro análogo para las O, y los correspondientes para misma fila y misma columna... Os agradecería que me contestarais.

Gracias, Un saludo.

JAVI
 
mercuccio
7 Mensaje(s)
Enviado - 7/8/2004
 
creo que debes usar un swich para hacer una secuencia de preguntas del estilo casilla donde empiezo a mirar - nºcasillas donde mirar > 0 y eso lo preguntas para no salirte por la izq, por la drch, por arriba y por abajo
 
coolrisk
5 Mensaje(s)
Enviado - 12/8/2004
 
Solamente debes verificar si las coordenadas estan en el rabgo permitido antes de intentar acceder al elemento de la matriz.
En tu codigo:

for(int i=fila; i==fila;i++){
for(int j=columna; j==columna;j++){
for(int f = (i - 1) ; f<=(i+1);f++){
for(int c = (j-1) ; c<=(j+1);c++){
/*aumentas unas restricciones */
if (f>=0 && f<=maxFil && c>=0 && c<=maxCol && matriz[f][c] == true) {
vecinosX++;
matrizAux[i][j]++;
}
}
}
}

Con esto verificas si estas en el rango (0..MaxFil o maxCol) y evitas el acceder a un elemento fuera de lo permitido en tu matriz.


 
 

 

Contactos myStudio Network