Beispiel #1
0
    def tw_utilidades(self):
        menu = QTVarios.LCMenu(self)

        ico = Iconos.PuntoAzul()
        icoT = Iconos.Tacticas()

        menu.separador()
        menu1 = menu.submenu(_("Polyglot book"), ico)

        menu1.opcion("crear", _("Create a new book"), ico)
        menu1.separador()
        menu1.opcion("unir", _("Merge two books in one"), ico)

        menu.separador()
        menu.opcion("crearTactic", _("Create tactics training"),
                    icoT)  # Genera fichero de tacticas con todos los movimientos incluso desde el principio

        # menu.separador()
        # menu.opcion( "masivo", _( "Mass analysis" ), icoN )

        # menu.separador()
        # eti  = _( "Play like a grandmaster" )
        # menu.opcion( "gm", _X( _('Create training to %1'), eti ), Iconos.GranMaestro() )

        resp = menu.lanza()
        if resp:
            if resp == "crear":
                PantallaBooks.polyglotCrear(self)
            elif resp == "unir":
                PantallaBooks.polyglotUnir(self)
            elif resp == "crearTactic":
                self.crearTactic()
Beispiel #2
0
    def eligeJugadaRival(self):

        if self.jugContrario == "su":
            resp = PantallaBooks.eligeJugadaBooks(
                self.pantalla, self.listaJugadas,
                self.partida.ultPosicion.siBlancas)
        elif self.jugContrario == "mp":
            resp = self.listaJugadas[0][0], self.listaJugadas[0][
                1], self.listaJugadas[0][2]
            nmax = self.listaJugadas[0][4]
            for desde, hasta, coronacion, pgn, peso in self.listaJugadas:
                if peso > nmax:
                    resp = desde, hasta, coronacion
                    nmax = peso
        elif self.jugContrario == "au":
            pos = random.randint(0, len(self.listaJugadas) - 1)
            resp = self.listaJugadas[pos][0], self.listaJugadas[pos][
                1], self.listaJugadas[pos][2]
        else:
            li = [int(x[4] * 100000) for x in self.listaJugadas]
            t = sum(li)
            num = random.randint(1, t)
            pos = 0
            t = 0
            for n, x in enumerate(li):
                t += x
                if num <= t:
                    pos = n
                    break
            resp = self.listaJugadas[pos][0], self.listaJugadas[pos][
                1], self.listaJugadas[pos][2]

        return resp
Beispiel #3
0
    def eligeJugadaRival(self):

        if self.jugContrario == "su":
            resp = PantallaBooks.eligeJugadaBooks(self.pantalla, self.listaJugadas, self.partida.ultPosicion.siBlancas)
        elif self.jugContrario == "mp":
            resp = self.listaJugadas[0][0], self.listaJugadas[0][1], self.listaJugadas[0][2]
            nmax = self.listaJugadas[0][4]
            for desde, hasta, coronacion, pgn, peso in self.listaJugadas:
                if peso > nmax:
                    resp = desde, hasta, coronacion
                    nmax = peso
        elif self.jugContrario == "au":
            pos = random.randint(0, len(self.listaJugadas) - 1)
            resp = self.listaJugadas[pos][0], self.listaJugadas[pos][1], self.listaJugadas[pos][2]
        else:
            li = [int(x[4] * 100000) for x in self.listaJugadas]
            t = sum(li)
            num = random.randint(1, t)
            pos = 0
            t = 0
            for n, x in enumerate(li):
                t += x
                if num <= t:
                    pos = n
                    break
            resp = self.listaJugadas[pos][0], self.listaJugadas[pos][1], self.listaJugadas[pos][2]

        return resp
Beispiel #4
0
 def entrenaBooks(self):
     w = PantallaBooks.WBooks(self.procesador)
     if w.exec_() and w.libro:
         self.procesador.tipoJuego = kJugBooks
         self.procesador.estado = kJugando
         self.procesador.gestor = GestorBooks.GestorBooks(self.procesador)
         self.procesador.gestor.inicio(w.libro, w.siBlancas, w.jugContrario, w.jugJugador)
Beispiel #5
0
    def utilidades(self):
        menu = QTVarios.LCMenu(self)

        ico = Iconos.PuntoAzul()
        icoV = Iconos.PuntoVerde()
        icoN = Iconos.PuntoNaranja()
        icoT = Iconos.Tacticas()

        menu1 = menu.submenu(_("Polyglot book"), ico)

        menu1.opcion("crear", _("Create a new book"), ico)
        menu1.opcion("unir", _("Merge two books in one"), ico)

        menu.separador()
        menu.opcion(
            "crearTactic", _("Create tactics training"), icoT
        )  # Genera fichero de tacticas con todos los movimientos incluso desde el principio

        if "FEN" in self.liOrdenClaves:
            menu.separador()
            menu.opcion("crearFNS", _("List of FENs"), icoV)

        menu.separador()
        menu.opcion("masivo", _("Mass analysis"), icoN)

        menu.separador()
        eti = _("Play like a grandmaster")
        menu.opcion("gm", _X(_('Create training to %1'), eti),
                    Iconos.GranMaestro())

        resp = menu.lanza()
        if resp:
            if resp == "crear":
                PantallaBooks.polyglotCrear(self)
            elif resp == "unir":
                PantallaBooks.polyglotUnir(self)
            elif resp == "crearFNS":
                self.crearFNS()
            elif resp == "crearTactic":
                self.crearTactic()
            elif resp == "masivo":
                self.masivo()
            elif resp == "gm":
                self.gm()
Beispiel #6
0
    def pgnInformacion(self):
        posJugada, jg = self.jugadaActiva()
        if jg:
            fen = jg.posicionBase.fen()
            lista = self.libro.miraListaJugadas(fen)

            siEditar = True
            if len(lista) > 0:
                resp = PantallaBooks.saltaJugadaBooks(self, lista, jg)
                if resp is None:
                    return
                siEditar = resp[0] is None
            if siEditar:
                Gestor.Gestor.pgnInformacion(self)
            else:
                # Eliminamos todas las jugadas desde esta hasta el final
                numpos = jg.numpos
                self.partida.liJugadas = self.partida.liJugadas[:numpos]
                if self.partida.numJugadas() == 0:
                    self.aciertos = 0
                    self.movimientos = 0
                    self.partida.ultPosicion = self.partida.iniPosicion
                else:
                    jg = self.partida.last_jg()
                    self.aciertos = jg.aciertos
                    self.movimientos = jg.movimientos
                    self.partida.ultPosicion = jg.posicion
                self.ponRotulo2(self.txtAciertos())
                self.partida.pendienteApertura = True

                # realizamos el movimiento
                desde, hasta, coronacion = resp
                siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion,
                                                     desde, hasta, coronacion)
                self.movimientosPiezas(jg.liMovs, False)
                self.partida.ultPosicion = jg.posicion
                self.tablero.ponPosicion(jg.posicion)
                self.pantalla.base.pgnRefresh()
                self.ponRevision(False)

                self.listaJugadas = lista

                self.ponVariantes(jg)

                self.masJugada(jg, True)

                # refrescamos
                self.refresh()

                # siguienteJugada
                self.estado = kJugando
                self.siguienteJugada()
Beispiel #7
0
    def pgnInformacion(self, fila, clave):
        posJugada, jg = self.pgn.jugada(fila, clave)
        if jg:
            fen = jg.posicionBase.fen()
            lista = self.libro.miraListaJugadas(fen)

            siEditar = True
            if len(lista) > 0:
                resp = PantallaBooks.saltaJugadaBooks(self, lista, jg)
                if resp is None:
                    return
                siEditar = resp[0] is None
            if siEditar:
                Gestor.Gestor.pgnInformacion(self, fila, clave)
            else:
                # Eliminamos todas las jugadas desde esta hasta el final
                numpos = jg.numpos
                self.partida.liJugadas = self.partida.liJugadas[:numpos]
                if self.partida.numJugadas() == 0:
                    self.aciertos = 0
                    self.movimientos = 0
                    self.partida.ultPosicion = self.partida.iniPosicion
                else:
                    jg = self.partida.liJugadas[-1]
                    self.aciertos = jg.aciertos
                    self.movimientos = jg.movimientos
                    self.partida.ultPosicion = jg.posicion
                self.ponRotulo2(self.txtAciertos())
                self.partida.pendienteApertura = True

                # realizamos el movimiento
                desde, hasta, coronacion = resp
                siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde, hasta, coronacion)
                self.movimientosPiezas(jg.liMovs, False)
                self.partida.ultPosicion = jg.posicion
                self.tablero.ponPosicion(jg.posicion)
                self.pantalla.base.pgnRefresh()
                self.ponRevision(False)

                self.listaJugadas = lista

                self.ponVariantes(jg)

                self.masJugada(jg, True)

                # refrescamos
                self.refresh()

                # siguienteJugada
                self.estado = kJugando
                self.siguienteJugada()
Beispiel #8
0
    def ayuda(self):
        if self.siJuegaHumano:
            self.paraHumano()
        else:
            return
        self.tablero.ponPosicion(self.partida.ultPosicion)

        main = self.listaJugadas[0][4]
        saux = False
        paux = 0

        for n, jug in enumerate(self.listaJugadas):
            opacity = p = jug[4]
            simain = p == main
            if not simain:
                if not saux:
                    paux = p
                    saux = True
                opacity = 1.0 if p == paux else max(p, 0.25)
            self.tablero.creaFlechaMulti(jug[0] + jug[1],
                                         siMain=simain,
                                         opacidad=opacity)

        resp = PantallaBooks.eligeJugadaBooks(self.pantalla,
                                              self.listaJugadas,
                                              self.siJugamosConBlancas,
                                              siSelectSiempre=False)
        self.tablero.quitaFlechas()
        if resp is None:
            self.sumar_aciertos = False
            self.sigueHumano()
            return

        desde, hasta, coronacion = resp
        siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde,
                                             hasta, coronacion)
        self.movimientos += 1

        self.ponRotulo2(self.txtAciertos())

        self.movimientosPiezas(jg.liMovs)

        self.partida.ultPosicion = jg.posicion
        self.masJugada(jg, True)
        self.error = ""
        self.sumar_aciertos = True
        self.siguienteJugada()
Beispiel #9
0
    def eligeJugadaBookBase(self, book, bookRR):
        jugadas = self.partida.ultPosicion.jugadas
        if self.maxMoveBook:
            if self.maxMoveBook <= jugadas:
                return False, None, None, None
        fen = self.fenUltimo()

        if bookRR == "su":
            listaJugadas = book.miraListaJugadas(fen)
            if listaJugadas:
                resp = PantallaBooks.eligeJugadaBooks(self.pantalla, listaJugadas, self.partida.ultPosicion.siBlancas)
                return True, resp[0], resp[1], resp[2]
        else:
            pv = book.eligeJugadaTipo(fen, bookRR)
            if pv:
                return True, pv[:2], pv[2:4], pv[4:]

        return False, None, None, None
Beispiel #10
0
    def eligeJugadaBookBase(self, book, bookRR):
        jugadas = self.partida.ultPosicion.jugadas
        if self.maxMoveBook:
            if self.maxMoveBook <= jugadas:
                return False, None, None, None
        fen = self.fenUltimo()

        if bookRR == "su":
            listaJugadas = book.miraListaJugadas(fen)
            if listaJugadas:
                resp = PantallaBooks.eligeJugadaBooks(self.pantalla, listaJugadas, self.partida.ultPosicion.siBlancas)
                return True, resp[0], resp[1], resp[2]
        else:
            pv = book.eligeJugadaTipo(fen, bookRR)
            if pv:
                return True, pv[:2], pv[2:4], pv[4:]

        return False, None, None, None
Beispiel #11
0
 def tw_uti_pmerge(self):
     PantallaBooks.polyglotUnir(self)
Beispiel #12
0
 def tw_uti_pcreate(self):
     PantallaBooks.polyglotCrear(self)
Beispiel #13
0
    def mueveHumano(self, desde, hasta, coronacion=None):
        jg = self.checkMueveHumano(desde, hasta, coronacion)
        if not jg:
            return False

        siEncontrado = False
        actpeso = 0
        for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
            if desde == jdesde and hasta == jhasta and jg.coronacion == jcoronacion:
                siEncontrado = True
                actpeso = peso
                break

        if siEncontrado and self.jugJugador:  # si el jugador busca elegir el maximo
            maxpeso = 0.0
            for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
                if peso > maxpeso:
                    maxpeso = peso
            if actpeso < maxpeso:
                siEncontrado = False

        if not siEncontrado:
            self.tablero.ponPosicion(self.partida.ultPosicion)

            main = self.listaJugadas[0][4]
            saux = False
            paux = 0

            for n, jug in enumerate(self.listaJugadas):
                opacity = p = jug[4]
                simain = p == main
                if not simain:
                    if not saux:
                        paux = p
                        saux = True
                    opacity = 1.0 if p == paux else max(p, 0.25)
                self.tablero.creaFlechaMulti(jug[0] + jug[1],
                                             siMain=simain,
                                             opacidad=opacity)

            resp = PantallaBooks.eligeJugadaBooks(self.pantalla,
                                                  self.listaJugadas,
                                                  self.siJugamosConBlancas,
                                                  siSelectSiempre=False)
            self.tablero.quitaFlechas()
            if resp is None:
                self.sumar_aciertos = False
                self.sigueHumano()
                return False

            desde, hasta, coronacion = resp
            siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion,
                                                 desde, hasta, coronacion)
        else:
            if self.sumar_aciertos:
                self.aciertos += actpeso
        self.movimientos += 1

        self.ponRotulo2(self.txtAciertos())

        self.movimientosPiezas(jg.liMovs)

        self.partida.ultPosicion = jg.posicion
        self.masJugada(jg, True)
        self.error = ""
        self.sumar_aciertos = True
        self.siguienteJugada()
        return True
Beispiel #14
0
    def mueveHumano(self, desde, hasta, coronacion=None):

        if self.siJuegaHumano:
            self.paraHumano()
        else:
            self.sigueHumano()
            return False

        # Peon coronando
        if not coronacion and self.partida.ultPosicion.siPeonCoronando(desde, hasta):
            coronacion = self.tablero.peonCoronando(self.partida.ultPosicion.siBlancas)
            if coronacion is None:
                self.sigueHumano()
                return False

        siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde, hasta, coronacion)

        if not siBien:
            self.sigueHumano()
            self.error = mens
            return False

        siEncontrado = False
        actpeso = 0
        if coronacion is None:
            coronacion = ""
        for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
            if desde == jdesde and hasta == jhasta and coronacion == jcoronacion:
                siEncontrado = True
                actpeso = peso
                break

        if siEncontrado and self.jugJugador:  # si el jugador busca elegir el maximo
            maxpeso = 0.0
            for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
                if peso > maxpeso:
                    maxpeso = peso
            if actpeso < maxpeso:
                siEncontrado = False

        if not siEncontrado:
            self.tablero.ponPosicion(self.partida.ultPosicion)
            self.tablero.activaColor(self.siJugamosConBlancas)
            resp = PantallaBooks.eligeJugadaBooks(self.pantalla, self.listaJugadas, self.siJugamosConBlancas)
            if resp is None:
                resp = self.listaJugadas[0][:3]

            desde, hasta, coronacion = resp

            siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde, hasta, coronacion)
        else:
            self.aciertos += actpeso
        self.movimientos += 1

        self.ponRotulo2(self.txtAciertos())

        self.movimientosPiezas(jg.liMovs)

        self.partida.ultPosicion = jg.posicion
        self.masJugada(jg, True)
        self.error = ""
        self.siguienteJugada()
        return True
Beispiel #15
0
    def mueveHumano(self, desde, hasta, coronacion=None):

        if self.siJuegaHumano:
            self.paraHumano()
        else:
            self.sigueHumano()
            return False

        # Peon coronando
        if not coronacion and self.partida.ultPosicion.siPeonCoronando(
                desde, hasta):
            coronacion = self.tablero.peonCoronando(
                self.partida.ultPosicion.siBlancas)
            if coronacion is None:
                self.sigueHumano()
                return False

        siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde,
                                             hasta, coronacion)

        if not siBien:
            self.sigueHumano()
            self.error = mens
            return False

        siEncontrado = False
        actpeso = 0
        if coronacion is None:
            coronacion = ""
        for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
            if desde == jdesde and hasta == jhasta and coronacion == jcoronacion:
                siEncontrado = True
                actpeso = peso
                break

        if siEncontrado and self.jugJugador:  # si el jugador busca elegir el maximo
            maxpeso = 0.0
            for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
                if peso > maxpeso:
                    maxpeso = peso
            if actpeso < maxpeso:
                siEncontrado = False

        if not siEncontrado:
            self.tablero.ponPosicion(self.partida.ultPosicion)
            self.tablero.activaColor(self.siJugamosConBlancas)
            resp = PantallaBooks.eligeJugadaBooks(self.pantalla,
                                                  self.listaJugadas,
                                                  self.siJugamosConBlancas)
            if resp is None:
                resp = self.listaJugadas[0][:3]

            desde, hasta, coronacion = resp

            siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion,
                                                 desde, hasta, coronacion)
        else:
            self.aciertos += actpeso
        self.movimientos += 1

        self.ponRotulo2(self.txtAciertos())

        self.movimientosPiezas(jg.liMovs)

        self.partida.ultPosicion = jg.posicion
        self.masJugada(jg, True)
        self.error = ""
        self.siguienteJugada()
        return True