• Jueves 14 de Noviembre de 2024, 17:07

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - chin13

Páginas: [1]
1
C/C++ / Implementacion de algoritmo minimax en Othello (Reversi) 2
« en: Miércoles 15 de Junio de 2016, 18:47 »
Buenas tardes,
Estoy programando el juego Othello en c++, hasta el momento todo me funciona perfectamente, todas las funciones creadas y clases estan testeadas y funcionan a la perfeccion.

El problema viene cuando me he puesto a implementar el algoritmo MINIMAX que os paso a continuacion:

Código: C++
  1. int minimax(taulell &t, int color, nat prof, nat metode, coord &cmillor)
  2. {
  3.   int eval, milloreval_negre=-1000, milloreval_blanc=1000, milloreval;
  4.   coord c,caux;
  5.   queue<coord> cua = t.coord_pot_jugar(color);
  6.     if (prof >= 1){
  7.       for (int i=0;i<cua.size();++i){
  8.         c = cua.front();
  9.         cua.pop();
  10.         taulell t2(t);
  11.         t2.posa_fitxa(c,color);
  12.         eval = t2.avalua_posicio();
  13.         if (eval > milloreval) {
  14.           milloreval = eval;
  15.           caux = c;
  16.         }
  17.       }
  18.     }
  19.     else {
  20.       for (int i=0; i<cua.size();i++){
  21.         c = cua.front();
  22.         cua.pop();
  23.         taulell t2(t);
  24.         t2.posa_fitxa(c,color);
  25.         color = -color;
  26.         if (t2.pot_jugar(color)) eval = minimax(t2,color,prof-1,metode,c);
  27.         else eval = minimax(t2,-color,prof-1,metode,c);
  28.         if (eval > milloreval){
  29.           milloreval = eval;
  30.           caux = c;
  31.         }
  32.       }
  33.     }
  34.   //}
  35.   cmillor = caux;
  36.   return milloreval;
  37. }
  38.  

Me funciona, tanto como para profundidad 1 i 2, el problema viene que llega un momento en que los movimientos que va realizando las fichas negras son correctos hasta cierta jugada en la que coloca la ficha en una posición en la que no come nada (algo que no es permitido en el juego). Sin embargo, la función que corrobora si una posición es válida para que juegue un determinado color esta comprobado que anda correctamente, lo que concluye a que en realidad ese movimiento es uno que debió realizar el jugador blanco, o el mismo negro en una jugada más a futuro.

Si alguien echandole un vistazo al codigo sabe de que se puede tratar, le estaría muy agradecido.

Gracias de antemano !

2
C/C++ / Re:Implementación de algoritmo MINIMAX en Othello (Reversi)
« en: Miércoles 15 de Junio de 2016, 18:38 »
Se que el mensaje es muy viejo... pero por probar.... me podrias decir como lo solucionaste ? Tengo exactamente el mismo problema, aunque mi algoritmo es algo diferente podría serme muy util tu ayuda !

Páginas: [1]