/** * Crea un arbol de TODOS los posibles movimientos a partir de una jugada. Este metodo puede ser * bastantee pesado ya que puede crear un arbol de varios miles de nodos al menos para la primera * jugada. Alternativamente luego de cada jugada cambia de jugador para simular TODAS las posibles * jugadas. * * @param movida * @param jugador * @return */ public Arbol<Jugada> crearArbol(Jugada movida, int jugador) { Arbol<Jugada> result = new Arbol<Jugada>(); Arbol.Nodo<Jugada> nodoRaiz = result.insertarHijo(null, movida); Cadena<Jugada> posiblesJugadas = movida.getPosiblesJugadas(jugador); int otroJugador = (jugador == JUGADOR ? COMPUTADORA : JUGADOR); Iterator<Jugada> iter = posiblesJugadas.iterator(); while (iter.hasNext()) { Jugada hijo = iter.next(); Arbol.Nodo<Jugada> nodoHijo = result.insertarHijo(nodoRaiz, hijo); Arbol<Jugada> arbolHijo = crearArbol(hijo, otroJugador); nodoHijo.colocarHijosDeRaizDeArbol(arbolHijo); } return result; }