def calculaSolucion(self): fenMB = self.cp.fen() fenOB = fenMB.replace(" w ", " b ") if "w" in fenMB else fenMB.replace( " b ", " w ") stAttacKing = set() stAttacKed = set() for fen in (fenMB, fenOB): LCEngine.setFen(fen) liMV = LCEngine.getExMoves() for mv in liMV: if mv.captura(): stAttacKing.add(mv.desde()) stAttacKed.add(mv.hasta()) liSolucion = [] for posicion, pieza in self.cp.casillas.iteritems(): if pieza: reg = Util.Almacen() reg.pieza = pieza reg.posicion = posicion lt = posicion[0] nm = int(posicion[1]) iswhite = nm % 2 == 0 if lt in "bdfh": iswhite = not iswhite reg.color = iswhite reg.atacante = posicion in stAttacKing reg.atacada = posicion in stAttacKed reg.comprobada = False liSolucion.append(reg) return liSolucion
def __init__(self, procesador): self.pantalla = procesador.pantalla self.tablero = self.pantalla.tablero self.procesador = procesador fmt = "./IntFiles/Mate/mate1.lst" with open(fmt) as f: li = [linea for linea in f.read().split("\n") if linea.strip()] linea = random.choice(li) li = linea.split("|") uno = random.choice(li) fen, mv0 = uno.split(",") fen += " w - - 1 1" LCEngine.setFen(fen) liMv = LCEngine.getExMoves() self.liMovs = [] for mv in liMv: if mv.mate(): self.liMovs.append(mv.movimiento()) self.cp = ControlPosicion.ControlPosicion() self.cp.leeFen(fen) self.iniTime = time.time() self.siBlancas = " w " in fen self.tablero.bloqueaRotacion(False) self.tablero.ponMensajero(self.mueveHumano) self.tablero.ponPosicion(self.cp) self.tablero.ponerPiezasAbajo(self.siBlancas) self.tablero.activaColor(self.siBlancas) self.tablero.ponIndicador(self.siBlancas)
def ajustaPlayer(self, mrm): posicion = self.partida.ultPosicion LCEngine.setFen(posicion.fen()) li = LCEngine.getExMoves() liOpciones = [] for rm in mrm.liMultiPV: liOpciones.append((rm, "%s (%s)" % (posicion.pgnSP( rm.desde, rm.hasta, rm.coronacion), rm.abrTexto()))) mv = rm.movimiento() for x in range(len(li)): if li[x].movimiento() == mv: del li[x] break for mj in li: rm = XMotorRespuesta.RespuestaMotor("", posicion.siBlancas) rm.desde = mj.desde() rm.hasta = mj.hasta() rm.coronacion = mj.coronacion() rm.puntos = None liOpciones.append( (rm, posicion.pgnSP(rm.desde, rm.hasta, rm.coronacion))) if len(liOpciones) == 1: return liOpciones[0][0] menu = QTVarios.LCMenu(self.pantalla) titulo = _("White") if posicion.siBlancas else _("Black") icono = Iconos.Carpeta() self.pantalla.cursorFueraTablero() menu.opcion(None, titulo, icono) menu.separador() icono = Iconos.PuntoNaranja( ) if posicion.siBlancas else Iconos.PuntoNegro() for rm, txt in liOpciones: menu.opcion(rm, txt, icono) while True: resp = menu.lanza() if resp: return resp
def getExMoves(self): return LCEngine.getExMoves()