ola necesito que si me pueden ayudar con ese codigo: la parte que no entiendo es este: cuando yo pongo fila y columna 0 el valor =0 entonces lo que hace que entra a ponerficha pero luego busca que si no hay un valor pone entonces 1 entonces quedaria asi: fila=0 y columna=0 el valor =0
ponerFichaOrdenador(){ luego entra en el if y queda asi
if (nTablero[n>[m>==-1){ haora nTablero tiene almacenado en la fila 0 y columna 0=el valor 0 en la fila 0 y columna 1= el valor 1 ahora es la parte que no entiendo cuando entra en la funcion min y luego la funcion min tiene la funcion max como se llama por si mismo como hace no se si puedan ponerme por medio de dibujos o por pseudocodigo se lo agradeceria mi correo es:matyac_24[@]hotmail.com
}
}
public class TresEnRaya {
private static int TAM=3;
private static int nTablero[>[>=new int[TAM>[TAM>;
private static int nGanador=-1;
// private static int nContar=0;
public static void main(String[> args){
int fi=0;
int co=0;
empezarPartida();
pulsaBoton(fi,co);
//ponerFichaOrdenador();
}
/** Creates a new instance of TresEnRaya */
public TresEnRaya() {
empezarPartida();
// nContar=0;
}
public static int[>[> getTablero(){
return nTablero;
}
public static void empezarPartida(){
for (int n=0;n<TAM;n++)
for (int m=0;m<TAM;m++)
nTablero[n>[m>=-1;
nGanador=-1;
}
public static void pulsaBoton(int n, int m){
if (n>=0 && m>=0 && n<TAM && m<TAM && nTablero[n>[m>==-1){
if (nGanador==-1){
nTablero[n>[m>=0;
nGanador = ganaPartida();
ponerFichaOrdenador();
}
}
}
public static int ganaPartida(){
if (nTablero[0>[0> != -1 && nTablero[0>[0> == nTablero[1>[1>
&& nTablero[0>[0> == nTablero[2>[2>)
return nTablero[0>[0>;
if (nTablero[0>[2> != -1 && nTablero[0>[2> == nTablero[1>[1>
&& nTablero[0>[2> == nTablero[2>[0>)
return nTablero[0>[2>;
for (int n=0;n<TAM;n++){
if (nTablero[n>[0> != -1 && nTablero[n>[0> == nTablero[n>[1>
&& nTablero[n>[0> == nTablero[n>[2>)
return nTablero[n>[0>;
if (nTablero[0>[n> != -1 && nTablero[0>[n> == nTablero[1>[n>
&& nTablero[0>[n> == nTablero[2>[n>)
return nTablero[0>[n>;
}
return -1;
}
public int getGanador(){
return nGanador;
}
//Algoritmo minimax
private static boolean tableroCompleto(){
for (int n=0;n<TAM;n++)
for (int m=0;m<TAM;m++)
if (nTablero[n>[m>==-1)
return false;
return true;
}
private static boolean finPartida(){
return tableroCompleto() || ganaPartida()!=-1;
}
private static void ponerFichaOrdenador(){
if (!finPartida()){
int f=0, c=0;
int v=Integer.MIN_VALUE;
int aux;
for (int n=1;n<=1;n++){
for (int m=1;m<=1;m++){
if (nTablero[n>[m>==-1){//2if
nTablero[n>[m>=1;
aux=min();
if (aux>v) {//1if
v=aux;
f=n;
c=m;
}//1if
nTablero[n>[m>=-1;
}//if
}
}
nTablero[f>[c>=1;
}
nGanador=ganaPartida();
}
private static int max(){
if (finPartida()){
if (ganaPartida()!=-1) return -1;
else return 0;
}
int v=Integer.MIN_VALUE;
int aux;
for (int n=0;n<TAM;n++){
for (int m=0;m<TAM;m++){
if (nTablero[n>[m>==-1){
nTablero[n>[m>=1;
aux=min();
if (aux>v) v=aux;
nTablero[n>[m>=-1;
}
}
}
return v;
}
private static int min(){
if (finPartida()){
if (ganaPartida()!=-1) return 1;
else return 0;
}
int v=Integer.MAX_VALUE;
int aux;
for (int n=0;n<TAM;n++){
for (int m=0;m<TAM;m++){
if (nTablero[n>[m>==-1){
nTablero[n>[m>=0;
aux=max();
if (aux<v) v=aux;
nTablero[n>[m>=-1;
}
}
}
return v;
}
}