Esempio n. 1
0
    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
Esempio n. 2
0
    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)
Esempio n. 3
0
    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
Esempio n. 4
0
 def getExMoves(self):
     return LCEngine.getExMoves()