if e[3 * i] != 0 and e[3 * i] == e[3 * i + 1] == e[3 * i + 2]:
                return e[3 * i]
        if 0 not in e:
            return 0
        return None

    def hacer_jugada(self, estado, jugada, jugador):
        e = list(estado)
        e[jugada[1]] = jugador
        return tuple(e)


if __name__ == '__main__':

    # Ejemplo donde empieza el jugador humano
    #juego = juegos_cuadricula.InterfaseTK(Gato(),
    #                                       juegos_cuadricula.JugadorHumano(),
    #                                       juegos_cuadricula.JugadorNegamax(),
    #                                       2)

    # Ejemplo donde empieza el jugador Negamax
    juego = juegos_cuadricula.InterfaseTK(Gato(),
                                          juegos_cuadricula.JugadorNegamax(),
                                          juegos_cuadricula.JugadorHumano(), 2)

    #juego = juegos_cuadricula.InterfaseTK(Gato(),
    #                                      juegos_cuadricula.JugadorNegamax(),
    #                                      juegos_cuadricula.JugadorNegamax(),
    #                                      2)
    juego.arranca()
        if val is None:
            return 0
        return val

    def decide_jugada(self, juego, estado, jugador, tablero):
        self.dmax = 0
        t_ini = time.time()
        while time.time() - t_ini < self.tiempo and self.dmax < self.maxima_d:
            jugada = max(
                self.ordena(juego, estado, jugador,
                            juego.jugadas_legales(estado, jugador)),
                key=lambda jugada: -self.negamax(juego,
                                                 estado=juego.hacer_jugada(
                                                     estado, jugada, jugador),
                                                 jugador=-jugador,
                                                 alpha=-1e10,
                                                 beta=1e10,
                                                 profundidad=self.dmax))
            # print "A profundad ", self.dmax, " la mejor jugada es ", jugada
            self.dmax += 1
        return jugada


if __name__ == '__main__':

    # Ejemplo donde empieza el jugador humano
    juego = juegos_cuadricula.InterfaseTK(Conecta4(),
                                          juegos_cuadricula.JugadorHumano(),
                                          JugadorConecta4_orig(1), 2)
    juego.arranca()
        return val

    def decide_jugada(self, juego, estado, jugador, tablero):
        self.dmax = 0
        t_ini = time.time()
        while time.time() - t_ini < self.tiempo and self.dmax < self.maxima_d:
            jugada = max(self.ordena(juego, estado, jugador, juego.jugadas_legales(estado, jugador)),
                         key=lambda jugada: -self.negamax(juego,
                                                    estado=juego.hacer_jugada(estado, jugada, jugador),
                                                    jugador=-jugador,
                                                    alpha=-1e10,
                                                    beta=1e10,
                                                    profundidad=self.dmax))
            #print "A profundad ", self.dmax, " la mejor jugada es ", jugada
            self.dmax += 1
        print "Se llego al nivel ", self.dmax
        return jugada

if __name__ == '__main__':

    # Ejemplo donde empieza el jugador humano
    juego = juegos_cuadricula.InterfaseTK(Conecta4(),
                                          JugadorConecta4(1),
                                          #juegos_cuadricula.JugadorHumano(), #JugadorConecta4(1),#juegos_cuadricula.JugadorHumano(), #JugadorConecta4(1), #
                                          #juegos_cuadricula.JugadorHumano(), #JugadorConecta4(1),#juegos_cuadricula.JugadorHumano(), #JugadorConecta4(1), #
                                          JugadorConecta4_original(5),
                                          2)
    juego.arranca()
    # REVISAR COMO AGREGAR UN JugadorConecta4_orig AL JUEGO (PARA COMPARAR)

Example #4
0
    def decide_jugada(self, juego, estado, jugador, tablero):
        self.dmax = 0
        t_ini = time.time()
        while time.time() - t_ini < self.tiempo and self.dmax < self.maxima_d:
            jugada = max(
                self.ordena(juego, estado, jugador,
                            juego.jugadas_legales(estado, jugador)),
                key=lambda jugada: -self.negamax(juego,
                                                 estado=juego.hacer_jugada(
                                                     estado, jugada, jugador),
                                                 jugador=-jugador,
                                                 alpha=float("-inf"),
                                                 beta=float("inf"),
                                                 profundidad=self.dmax))
            #print "A profundad ", self.dmax, " la mejor jugada es ", jugada
            self.dmax += 1
        print "Se llego al nivel ", self.dmax
        return jugada


if __name__ == '__main__':
    # Ejemplo donde empieza el jugador humano
    juego = juegos_cuadricula.InterfaseTK(
        Othello(),
        #JugadorOthello_basico(1),
        juegos_cuadricula.JugadorHumano(),  #JugadorOthello(1),
        JugadorOthello(1),
        #juegos_cuadricula.JugadorHumano(), #JugadorOthello(1),
        1)
    juego.arranca()