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)
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()