Presentado a Julio Cesar Sierra
Por:
- María José Velandia: 52960713
- Jorge Barrera: 1018413066
Universidad Central 2013
Runnable Jar
Se colocan secciones de código críticas donde se muestra el funcionamiento del algoritmo de MiniMax.
/* Metodo recursivo, que genera los nodos con los movimientos. */ public void movComputadora(NodoG raiz) { /* Numero de movimientos disponibles y sus indices en el tablero. */ int movimientos = movDisponibles(raiz.tablero); int indices[] = posVacias(raiz.tablero); int Max, Min; /* Inicializamos el nodo. */ raiz.nodos = new NodoG[movimientos]; /* Verificamos si hay un ganador. */ int ganador = terminado(raiz.tablero); if (ganador == 1) { ganador = -1; } else if (ganador == 2) { ganador = 1; } if (ganador != 0 || movimientos == 0) { raiz.ganador = ganador; } else { /* Creamos los datos de cada hijo. */ for (int i = 0; i < movimientos; i++) { /* Inicializamos los nodos hijos del arbol. */ raiz.nodos[i] = new NodoG(); /* Les pasamos su tablero. */ for (int j = 0; j < 9; j++) { raiz.nodos[i].tablero[j] = raiz.tablero[j]; } /* Creamos los diferentes movimientos posibles. */ if (raiz.miTurno) { raiz.nodos[i].tablero[indices[i]] = 1; } else { raiz.nodos[i].tablero[indices[i]] = 2; } /* Cambiamos el turno de los hijos */ raiz.nodos[i].miTurno = !raiz.miTurno; /* Guardamos el indice de su movimiento. */ raiz.nodos[i].indice = indices[i]; movComputadora(raiz.nodos[i]); } /* Minimax */ if (!raiz.miTurno) { raiz.ganador = Max(raiz); } else { raiz.ganador = Min(raiz); } } }
No hay comentarios.:
Publicar un comentario