Encontre hace tiempo el juego del 3 en raya o Gato implementado con el algoritmo MiniMAx.
Aqui sus créditos del autor del Gato con Minimax
* Autor: Francisco I. Leyva
* Página web: http://www.panchosoft.com
Indagando con google logré implementar la Poda Alfa-Beta a este juego, y
la opción de cambiar la apariencia con LookAndFeel dejo los créditos
del autor inicial por supuesto.
Sobre Poda Alfa-Beta hay mucho material en la web, pero no muchos ejemplos concretos dejo el proyecto completo =).
Capturas:
(http://i1093.photobucket.com/albums/i439/maurice_lupin/cap11.png)
(http://i1093.photobucket.com/albums/i439/maurice_lupin/cap22.png)
// Poda Alfa-Beta con profundidad
private Movement MiniMaxAlphaBetaDepth(Board board,int player,int depth,int alpha,int beta)
{ if (board.GameEnded() || depth==6)
{ Movement mov = new Movement();
//mov.Value = board.Winner();
mov.Value = Utilidad(board.iTablero);
return mov;
}
else
{ Vector successors = board.GetAllowedMovements(true);
Movement best = null;
for ( Iterator ite = successors.iterator(); ite.hasNext(); )
{ int successor = (Integer)(ite.next());
Board successorBoard = (Board)board.Clone();
successorBoard.ApplyMovement(successor);
Movement tmp = MiniMaxAlphaBetaDepth(successorBoard, -player, depth+1, alpha, beta);
if (best == null || (player == -1 && tmp.Value < best.Value) ||
(player == 1 && tmp.Value > best.Value))
{ tmp.Position = successor;
best = tmp;
}
if (player == -1 && best.Value < beta)
{ beta = best.Value; }
if (player == 1 && best.Value > alpha) alpha = best.Value;
if (alpha > beta) return best;
}
return best;
}
}
Proyecto en google docs (https://docs.google.com/file/d/0B_IPc-jU-prBYzNEOU9GM25pYm8/edit)
Gracias!
Lo revisaré a ver qué tal.
Saludos.
Me parece un tema interesante, asi q lo revivo.
;D
son muchas clases para descargar... sera k lo puedes subir lo k ya descargaste tu_? porfaaaa
Hola bjpenn no pesa nada, sólo haz click Aquí (https://docs.google.com/file/d/0B_IPc-jU-prBYzNEOU9GM25pYm8/edit?pli=1) y en la parte superior izquierda esta: Archivo -> Descargar
Y listo se descargará el comprimido.
Saludos.
gracias por todo lo revisare... ;D
He echado un ojo al proyecto pero depende de una librería gráfica que no logro encontrar por internet.
Sabéis algo?
Cita de: Proteus1989 en 4 Octubre 2012, 22:01 PM
He echado un ojo al proyecto pero depende de una librería gráfica que no logro encontrar por internet.
Sabéis algo?
El proyecto es de Netbeans, requiere tenerlo bien instalado y el jdk obviamente.
Aqui el link de Netbeans incluido el jdk: http://www.oracle.com/technetwork/java/javase/downloads/jdk-7-netbeans-download-432126.html
Amiiiiiiiiiigo. Yo estaba abriendolo desde eclipse y no encontraba librerías que supongo ya vendrán por defecto solo en el Netbean.
Gracias por la aclaración, voy a testearlo un rato porque este año doy IA y tengo que hacer un 4 en linea para la carrera y este puede ser un buen apoyo en mi tarea.
Buenas alguien me puede ayudar con la explicación de todas las funciones, necesito portar la poda alfa beta a un proyecto propio y no entiendo un par de cosillas del código posteado.