示例#1
0
 def importar(self):
     if importarGM(self):
         liC = GM.listaGM()
         self.cbGM.clear()
         for tp in liC:
             self.cbGM.addItem(tp[0], tp[1])
         self.cbGM.setCurrentIndex(0)
示例#2
0
    def __init__(self, wgm, ogm):
        self.liRegs = ogm.genToSelect()

        dgm = GM.dicGM()
        nombre = dgm.get(ogm.gm, ogm.gm)
        titulo = "%s - %s" % (_("One game"), nombre)
        icono = Iconos.Uno()
        extparam = "gm1g"
        QTVarios.WDialogo.__init__(self, wgm, titulo, icono, extparam)

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NOMBRE", _("Opponent"), 180)
        oColumnas.nueva("FECHA", _("Date"), 90, siCentrado=True)
        oColumnas.nueva("ECO", _("ECO"), 40, siCentrado=True)
        oColumnas.nueva("RESULT", _("Result"), 64, siCentrado=True)
        self.grid = grid = Grid.Grid(self, oColumnas, siSelecFilas=True)
        self.grid.coloresAlternados()
        self.registrarGrid(grid)

        liAcciones = [
            (_("Accept"), Iconos.Aceptar(), "aceptar"),
            None,
            (_("Cancel"), Iconos.Cancelar(), "cancelar"),
            None,
        ]
        tb = Controles.TB(self, liAcciones)

        layout = Colocacion.V().control(tb).control(grid).margen(3)
        self.setLayout(layout)

        self.recuperarVideo(anchoDefecto=400)
        self.partidaElegida = None
示例#3
0
    def __init__(self, wgm, ogm):
        self.liRegs = ogm.genToSelect()

        dgm = GM.dicGM()
        nombre = dgm.get(ogm.gm, ogm.gm)
        titulo = "%s - %s" % (_("One game"), nombre)
        icono = Iconos.Uno()
        extparam = "gm1g"
        QTVarios.WDialogo.__init__(self, wgm, titulo, icono, extparam)

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NOMBRE", _("Opponent"), 180)
        oColumnas.nueva("FECHA", _("Date"), 90, siCentrado=True)
        oColumnas.nueva("ECO", _("ECO"), 40, siCentrado=True)
        oColumnas.nueva("RESULT", _("Result"), 64, siCentrado=True)
        self.grid = grid = Grid.Grid(self, oColumnas, siSelecFilas=True)
        self.grid.coloresAlternados()
        self.registrarGrid(grid)

        liAcciones = [( _("Accept"), Iconos.Aceptar(), "aceptar" ), None,
                      ( _("Cancel"), Iconos.Cancelar(), "cancelar" ), None,
        ]
        tb = Controles.TB(self, liAcciones)

        layout = Colocacion.V().control(tb).control(grid).margen(3)
        self.setLayout(layout)

        self.recuperarVideo(anchoDefecto=400)
        self.partidaElegida = None
示例#4
0
 def importar(self):
     if importarGM(self):
         liC = GM.listaGM()
         self.cbGM.clear()
         for tp in liC:
             self.cbGM.addItem(tp[0], tp[1])
         self.cbGM.setCurrentIndex(0)
    def grabaDic(self):
        rk = Util.Record()
        rk.gm = self.cbGM.valor()
        if rk.gm is None:
            rk.modo = "personal"
            rk.gm = self.cbPersonal.valor()
            if rk.gm is None:
                return False
        else:
            rk.modo = "estandar"
        rk.partidaElegida = None
        rk.siBlancas = self.rbBlancas.isChecked()
        rk.siJuez = self.gbJ.isChecked()
        rk.showevals = self.chbEvals.valor()
        rk.motor = self.cbJmotor.valor()
        rk.tiempo = int(self.edJtiempo.textoFloat() * 10)
        rk.mostrar = self.cbJshow.valor()
        rk.depth = self.cbJdepth.valor()
        rk.multiPV = self.cbJmultiPV.valor()
        rk.jugContrario = self.chContrario.isChecked()
        rk.jugInicial = self.edJugInicial.valor()
        if rk.siJuez and rk.tiempo <= 0 and rk.depth == 0:
            rk.siJuez = False
        rk.bypassBook = self.cbBooks.valor()
        rk.apertura = self.bloqueApertura

        default = "WGM" if self.siWoman else "GM"

        carpeta = default if rk.modo == "estandar" else self.configuracion.dirPersonalTraining
        self.ogm = GM.GM(carpeta, rk.gm)
        self.ogm.colorFilter(rk.siBlancas)
        if not len(self.ogm):
            QTUtil2.mensError(self,
                              _("There are no games to play with this color"))
            return False

        self.ogm.isErasable = rk.modo == "personal"  # para saber si se puede borrar
        self.record = rk
        self.record.siWoman = self.siWoman
        dic = {}

        for atr in dir(self.record):
            if not atr.startswith("_"):
                dic[atr.upper()] = getattr(self.record, atr)
        dic["APERTURASFAVORITAS"] = self.liAperturasFavoritas

        Util.guardaDIC(dic, self.configuracion.ficheroGM)

        return True
示例#6
0
    def __init__(self, wgm, ogm):
        self.ogm = ogm
        self.liRegs = ogm.genToSelect()
        self.siReverse = False
        self.claveSort = None

        dgm = GM.dicGM()
        nombre = dgm.get(ogm.gm, ogm.gm)
        titulo = "%s - %s" % (_("One game"), nombre)
        icono = Iconos.Uno()
        extparam = "gm1g"
        super().__init__(parent=wgm,
                         titulo=titulo,
                         icono=icono,
                         extparam=extparam)

        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("NOMBRE", _("Opponent"), 180)
        oColumnas.nueva("FECHA", _("Date"), 90, siCentrado=True)
        oColumnas.nueva("EVENT", _("Event"), 140, siCentrado=True)
        oColumnas.nueva("ECO", _("ECO"), 40, siCentrado=True)
        oColumnas.nueva("RESULT", _("Result"), 64, siCentrado=True)
        self.grid = grid = Grid.Grid(self,
                                     oColumnas,
                                     siSelecFilas=True,
                                     siSeleccionMultiple=True)
        nAnchoPgn = self.grid.anchoColumnas() + 20
        self.grid.setMinimumWidth(nAnchoPgn)
        self.grid.coloresAlternados()

        self.registrarGrid(grid)

        liAcciones = [
            (_("Accept"), Iconos.Aceptar(), self.aceptar),
            None,
            (_("Cancel"), Iconos.Cancelar(), self.cancelar),
            None,
        ]
        if ogm.isErasable:
            liAcciones.append((_("Remove"), Iconos.Borrar(), self.remove))
            liAcciones.append(None)

        tb = Controles.TBrutina(self, liAcciones)

        layout = Colocacion.V().control(tb).control(grid).margen(3)
        self.setLayout(layout)

        self.recuperarVideo(anchoDefecto=400)
        self.partidaElegida = None
示例#7
0
    def grabaDic(self):
        rk = Util.Record()
        rk.gm = self.cbGM.valor()
        if rk.gm is None:
            rk.modo = "personal"
            rk.gm = self.cbPersonal.valor()
            if rk.gm is None:
                return False
        else:
            rk.modo = "estandar"
        rk.partidaElegida = None
        rk.is_white = self.rbBlancas.isChecked()
        rk.siJuez = self.gbJ.isChecked()
        rk.showevals = self.chbEvals.valor()
        rk.engine = self.cbJmotor.valor()
        rk.vtime = int(self.edJtiempo.textoFloat() * 10)
        rk.mostrar = self.cbJshow.valor()
        rk.depth = self.cbJdepth.valor()
        rk.multiPV = self.cbJmultiPV.valor()
        rk.jugContrario = self.chContrario.isChecked()
        rk.jugInicial = self.edJugInicial.valor()
        if rk.siJuez and rk.vtime <= 0 and rk.depth == 0:
            rk.siJuez = False
        rk.bypassBook = self.cbBooks.valor()
        rk.opening = self.bloqueApertura

        default = Code.path_resource("GM")

        carpeta = default if rk.modo == "estandar" else self.configuracion.dirPersonalTraining
        self.ogm = GM.GM(carpeta, rk.gm)
        self.ogm.colorFilter(rk.is_white)
        if not len(self.ogm):
            QTUtil2.message_error(
                self, _("There are no games to play with this color"))
            return False

        self.ogm.isErasable = rk.modo == "personal"  # para saber si se puede borrar
        self.record = rk
        dic = {}

        for atr in dir(self.record):
            if not atr.startswith("_"):
                dic[atr.upper()] = getattr(self.record, atr)
        dic["APERTURASFAVORITAS"] = self.liAperturasFavoritas

        Util.save_pickle(self.configuracion.file_gms(), dic)

        return True
示例#8
0
    def borrarPersonal(self):
        tgm = self.cbPersonal.valor()
        if tgm is None:
            return
        if not QTUtil2.pregunta(self, _X(_("Delete %1?"), tgm)):
            return

        base = os.path.join(self.configuracion.dirPersonalTraining, "%s.gm" % tgm)
        for x in "wbi":
            Util.borraFichero(base + x)

        self.liPersonal = GM.listaGMpersonal(self.configuracion.dirPersonalTraining)

        li = [(x[0], x[1]) for x in self.liPersonal]
        li.insert(0, ("-", None))
        self.cbPersonal.rehacer(li, li[0][1])

        self.compruebaP()
示例#9
0
    def borrarPersonal(self):
        tgm = self.cbPersonal.valor()
        if tgm is None:
            return
        if not QTUtil2.pregunta(self, _X(_("Delete %1?"), tgm)):
            return

        base = os.path.join(self.configuracion.dirPersonalTraining, "%s.gm" % tgm)
        for x in "wbi":
            Util.borraFichero(base + x)

        self.liPersonal = GM.listaGMpersonal(self.configuracion.dirPersonalTraining)

        li = [(x[0], x[1] ) for x in self.liPersonal]
        li.insert(0, ("-", None))
        self.cbPersonal.rehacer(li, li[0][1])

        self.compruebaP()
示例#10
0
    def gm(self):

        liSelec = self.grid.recnosSeleccionados()

        # Datos
        liGen = [(None, None)]

        liGen.append((_("Name") + ":", ""))

        liGen.append(("<div align=\"right\">" + _(
            "Only player moves"
        ) + ":<br>%s</div>" % _(
            "(You can add multiple aliases separated by ; and wildcards with * )"
        ), ""))

        liGen.append((_("Only selected games") + ":", len(liSelec) > 1))

        li = [
            1, (0, _("Both sides")), (1, _("Only the winning side")),
            (2, _("The winning side and both if drawn"))
        ]

        liGen.append((_("Which side") + ":", li))

        eti = _("Play like a grandmaster")
        eti = _X(_('Create training to %1'), eti)
        resultado = FormLayout.fedit(liGen,
                                     title=eti,
                                     parent=self,
                                     anchoMinimo=460,
                                     icon=Iconos.GranMaestro())

        if not resultado:
            return
        accion, liGen = resultado
        nombre = liGen[0]
        jugador = liGen[1]
        siSelec = liGen[2]
        result = liGen[3]

        if not nombre:
            return

        liJugadores = jugador.upper().split(";") if jugador else None

        # Se crea el objeto de ejecucion
        fgm = GM.FabGM(self.gestor.configuracion, nombre, liJugadores)

        # Se pasan todas las partidas
        if not siSelec:
            liSelec = range(self.dbf.reccount())

        nregs = len(liSelec)
        mensaje = _("Game") + "  %d/" + str(nregs)
        tmpBP = QTUtil2.BarraProgreso(self, eti, "", nregs).mostrar()

        for n, recno in enumerate(liSelec):

            if tmpBP.siCancelado():
                break

            self.dbf.goto(recno)

            if n:
                tmpBP.pon(n)
            tmpBP.mensaje(mensaje % (n + 1, ))

            jugadas = self.dbf.leeOtroCampo(n, "PGN")

            pgn = PGN.UnPGN()
            pgn.leeTexto(jugadas)

            fgm.masMadera(pgn, pgn.partida, result)

        siCancelado = tmpBP.siCancelado()
        tmpBP.cerrar()

        if not siCancelado:
            # Se ejecuta
            siCreado = fgm.xprocesa()

            if siCreado:
                liCreados = [nombre]
                liNoCreados = None
            else:
                liNoCreados = [nombre]
                liCreados = None
            mensajeEntrenamientos(self, liCreados, liNoCreados)
示例#11
0
    def inicio(self, record):

        self.tipoJuego = kJugGM

        self.ayudas = 9999  # Para que analice sin problemas

        self.puntos = 0

        self.record = record

        self.gm = record.gm
        self.siBlancas = record.siBlancas
        self.modo = record.modo
        self.siJuez = record.siJuez
        self.showevals = record.showevals
        self.motor = record.motor
        self.tiempo = record.tiempo
        self.depth = record.depth
        self.multiPV = record.multiPV
        self.mostrar = record.mostrar
        self.jugContrario = record.jugContrario
        self.jugInicial = record.jugInicial
        self.partidaElegida = record.partidaElegida
        self.bypassBook = record.bypassBook
        self.apertura = record.apertura
        self.onBypassBook = True if self.bypassBook else False
        if self.onBypassBook:
            self.bypassBook.polyglot()
        self.onApertura = True if self.apertura else False

        self.siAnalizando = False

        if self.siJuez:
            self.puntos = 0
            tutor = self.configuracion.buscaRivalExt(self.motor)
            t_t = self.tiempo * 100
            self.xtutor = self.procesador.creaGestorMotor(
                tutor, t_t, self.depth)
            self.xtutor.actMultiPV(self.multiPV)
            self.analisis = None

        self.book = Apertura.AperturaPol(999)

        self.pensando(True)

        carpeta = "GM" if self.modo == "estandar" else self.configuracion.dirPersonalTraining
        self.motorGM = GM.GM(carpeta, self.gm)
        self.motorGM.colorFilter(self.siBlancas)
        if self.partidaElegida is not None:
            self.motorGM.ponPartidaElegida(self.partidaElegida)

        self.siJugamosConBlancas = self.siBlancas
        self.siRivalConBlancas = not self.siBlancas
        self.pensando(False)

        self.pantalla.ponToolBar(
            (k_mainmenu, k_reiniciar, k_configurar, k_utilidades))
        self.pantalla.activaJuego(True, False)
        self.ponMensajero(self.mueveHumano)
        self.ponPosicion(self.partida.ultPosicion)
        self.mostrarIndicador(True)
        self.quitaAyudas()
        self.ponPiezasAbajo(self.siBlancas)
        dic = GM.dicGM()
        self.nombreGM = dic[
            self.gm.lower()] if self.modo == "estandar" else self.gm
        rotulo1 = _(
            "Grandmaster"
        ) + ": <b>%s</b>" if self.modo == "estandar" else "<b>%s</b>"
        self.ponRotulo1(rotulo1 % self.nombreGM)

        self.nombreRival = ""
        self.textoPuntuacion = ""
        self.ponRotuloSecundario()
        self.pgnRefresh(True)
        self.ponCapInfoPorDefecto()

        self.estado = kJugando

        self.ponPosicionDGT()

        self.siguienteJugada()
示例#12
0
    def inicio(self, record):

        self.game_type = GT_AGAINST_GM

        self.ayudas = 9999  # Para que analice sin problemas

        self.puntos = 0

        self.record = record

        self.gm = record.gm
        self.is_white = record.is_white
        self.modo = record.modo
        self.siJuez = record.siJuez
        self.showevals = record.showevals
        self.engine = record.engine
        self.vtime = record.vtime
        self.depth = record.depth
        self.multiPV = record.multiPV
        self.mostrar = record.mostrar
        self.jugContrario = record.jugContrario
        self.jugInicial = record.jugInicial
        self.partidaElegida = record.partidaElegida
        self.bypassBook = record.bypassBook
        self.opening = record.opening
        self.onBypassBook = True if self.bypassBook else False
        if self.onBypassBook:
            self.bypassBook.polyglot()
        self.onApertura = True if self.opening else False

        self.siAnalizando = False

        if self.siJuez:
            self.puntos = 0
            tutor = self.configuracion.buscaRival(self.engine)
            t_t = self.vtime * 100
            self.xtutor = self.procesador.creaGestorMotor(tutor, t_t, self.depth)
            self.xtutor.actMultiPV(self.multiPV)
            self.analysis = None

        self.book = Apertura.AperturaPol(999)

        self.pensando(True)

        default = Code.path_resource("GM")
        carpeta = default if self.modo == "estandar" else self.configuracion.dirPersonalTraining
        self.motorGM = GM.GM(carpeta, self.gm)
        self.motorGM.colorFilter(self.is_white)
        if self.partidaElegida is not None:
            self.motorGM.ponPartidaElegida(self.partidaElegida)

        self.is_human_side_white = self.is_white
        self.is_engine_side_white = not self.is_white
        self.pensando(False)

        self.main_window.pon_toolbar((TB_CLOSE, TB_REINIT, TB_CONFIG, TB_UTILITIES))
        # self.main_window.pon_toolbar((TB_CLOSE, TB_REINIT, TB_ADJOURN, TB_CONFIG, TB_UTILITIES))
        self.main_window.activaJuego(True, False)
        self.set_dispatcher(self.mueve_humano)
        self.setposition(self.game.last_position)
        self.mostrarIndicador(True)
        self.quitaAyudas()
        self.ponPiezasAbajo(self.is_white)
        dic = GM.dic_gm()
        self.nombreGM = dic[self.gm.lower()] if self.modo == "estandar" else self.gm
        rot = _("Grandmaster")
        rotulo1 = rot + ": <b>%s</b>" if self.modo == "estandar" else "<b>%s</b>"
        self.ponRotulo1(rotulo1 % self.nombreGM)

        self.nombreRival = ""
        self.textoPuntuacion = ""
        self.ponRotuloSecundario()
        self.pgnRefresh(True)
        self.ponCapInfoPorDefecto()

        self.state = ST_PLAYING

        self.dgt_setposition()

        self.siguiente_jugada()
示例#13
0
    def __init__(self, procesador):
        self.configuracion = procesador.configuracion
        self.procesador = procesador

        self.dbHisto = Util.DicSQL(self.configuracion.ficheroGMhisto)
        self.bloqueApertura = None
        self.liAperturasFavoritas = []

        wParent = procesador.pantalla
        titulo = _("Play like a grandmaster")
        icono = Iconos.GranMaestro()
        extparam = "gm"
        QTVarios.WDialogo.__init__(self, wParent, titulo, icono, extparam)

        flb = Controles.TipoLetra(puntos=10)

        # Toolbar
        liAcciones = [(_("Accept"), Iconos.Aceptar(), self.aceptar), None,
                      (_("Cancel"), Iconos.Cancelar(), self.cancelar), None,
                      (_("One game"), Iconos.Uno(), self.unJuego), None,
                      (_("Import"), Iconos.ImportarGM(), self.importar)
                      ]
        tb = Controles.TBrutina(self, liAcciones)

        # Grandes maestros
        self.liGM = GM.listaGM()
        li = [(x[0], x[1]) for x in self.liGM]
        li.insert(0, ("-", None))
        self.cbGM = QTUtil2.comboBoxLB(self, li, li[0][1] if len(self.liGM) == 0 else li[1][1])
        self.cbGM.capturaCambiado(self.compruebaGM)
        hbox = Colocacion.H().relleno().control(self.cbGM).relleno()
        gbGM = Controles.GB(self, _("Choose a grandmaster"), hbox).ponFuente(flb)

        # Personales
        self.liPersonal = GM.listaGMpersonal(self.procesador.configuracion.dirPersonalTraining)
        if self.liPersonal:
            li = [(x[0], x[1]) for x in self.liPersonal]
            li.insert(0, ("-", None))
            self.cbPersonal = QTUtil2.comboBoxLB(self, li, li[0][1])
            self.cbPersonal.capturaCambiado(self.compruebaP)
            btBorrar = Controles.PB(self, "", self.borrarPersonal, plano=False).ponIcono(Iconos.Borrar(), tamIcon=16)
            hbox = Colocacion.H().relleno().control(self.cbPersonal).control(btBorrar).relleno()
            gbPersonal = Controles.GB(self, _("Personal games"), hbox).ponFuente(flb)

        # Color
        self.rbBlancas = Controles.RB(self, _("White"), rutina=self.compruebaColor)
        self.rbBlancas.activa(True)
        self.rbNegras = Controles.RB(self, _("Black"), rutina=self.compruebaColor)
        self.rbNegras.activa(False)

        # Contrario
        self.chContrario = Controles.CHB(self, _("Choose the opponent's move, when there are multiple possible answers"),
                                         False)

        # Juez
        liDepths = [("--", 0)]
        for x in range(1, 31):
            liDepths.append((str(x), x))
        self.liMotores = self.configuracion.comboMotoresMultiPV10()
        self.cbJmotor, self.lbJmotor = QTUtil2.comboBoxLB(self, self.liMotores, self.configuracion.tutorInicial, _("Engine"))
        self.edJtiempo = Controles.ED(self).tipoFloat().ponFloat(1.0).anchoFijo(50)
        self.lbJtiempo = Controles.LB2P(self, _("Time in seconds"))
        self.cbJdepth = Controles.CB(self, liDepths, 0).capturaCambiado(self.cambiadoDepth)
        self.lbJdepth = Controles.LB2P(self, _("Depth"))
        self.lbJshow = Controles.LB2P(self, _("Show rating"))
        self.chbEvals = Controles.CHB(self, _("Show all evaluations"), False)
        liOptions = [(_("All moves"), None), (_("Moves are different"), True), (_("Never"), False)]
        self.cbJshow = Controles.CB(self, liOptions, True)
        self.lbJmultiPV = Controles.LB2P(self, _("Number of moves evaluated by engine(MultiPV)"))
        li = [(_("Default"), "PD"),
              (_("Maximum"), "MX")]
        for x in (1, 3, 5, 10, 15, 20, 30, 40, 50, 75, 100, 150, 200):
            li.append((str(x), str(x)))
        self.cbJmultiPV = Controles.CB(self, li, "PD")

        # Inicial
        self.edJugInicial, lbInicial = QTUtil2.spinBoxLB(self, 1, 1, 99, etiqueta=_("Initial move"), maxTam=40)

        # Libros
        fvar = self.configuracion.ficheroBooks
        self.listaLibros = Books.ListaLibros()
        self.listaLibros.recuperaVar(fvar)
        # # Comprobamos que todos esten accesibles
        self.listaLibros.comprueba()
        li = [(x.nombre, x) for x in self.listaLibros.lista]
        li.insert(0, ("--", None))
        self.cbBooks, lbBooks = QTUtil2.comboBoxLB(self, li, None, _("Bypass moves in the book"))

        # Aperturas

        self.btApertura = Controles.PB(self, " " * 5 + _("Undetermined") + " " * 5, self.aperturasEditar).ponPlano(
                False)
        self.btAperturasFavoritas = Controles.PB(self, "", self.aperturasFavoritas).ponIcono(Iconos.Favoritos())
        self.btAperturasQuitar = Controles.PB(self, "", self.aperturasQuitar).ponIcono(Iconos.Motor_No())
        hbox = Colocacion.H().control(self.btAperturasQuitar).control(self.btApertura).control(
                self.btAperturasFavoritas).relleno()
        gbOpening = Controles.GB(self, _("Opening"), hbox)

        # gbBasic
        # # Color
        hbox = Colocacion.H().relleno().control(self.rbBlancas).espacio(10).control(self.rbNegras).relleno()
        gbColor = Controles.GB(self, _("Play with"), hbox).ponFuente(flb)

        # Tiempo
        ly1 = Colocacion.H().control(self.lbJmotor).control(self.cbJmotor).control(self.lbJshow).control(
                self.cbJshow).relleno()
        ly2 = Colocacion.H().control(self.lbJtiempo).control(self.edJtiempo)
        ly2.control(self.lbJdepth).control(self.cbJdepth).espacio(15).control(self.chbEvals).relleno()
        ly3 = Colocacion.H().control(self.lbJmultiPV).control(self.cbJmultiPV).relleno()
        ly = Colocacion.V().otro(ly1).otro(ly2).otro(ly3)
        self.gbJ = Controles.GB(self, _("Adjudicator"), ly).conectar(self.cambiaJuez)

        # Opciones
        vlayout = Colocacion.V().control(gbColor)
        vlayout.espacio(5).control(self.gbJ)
        vlayout.margen(20)
        gbBasic = Controles.GB(self, "", vlayout)
        gbBasic.setFlat(True)

        # Opciones avanzadas
        lyInicial = Colocacion.H().control(lbInicial).control(self.edJugInicial).relleno().control(lbBooks).control(
                self.cbBooks).relleno()
        vlayout = Colocacion.V().relleno().otro(lyInicial).control(gbOpening)
        vlayout.espacio(5).control(self.chContrario).margen(20).relleno()
        gbAdvanced = Controles.GB(self, "", vlayout)
        gbAdvanced.setFlat(True)

        # Historico
        self.liHisto = []
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("FECHA", _("Date"), 80, siCentrado=True)
        oColumnas.nueva("PACIERTOS", _("Hints"), 90, siCentrado=True)
        oColumnas.nueva("PUNTOS", _("Points accumulated"), 120, siCentrado=True)
        oColumnas.nueva("ENGINE", _("Adjudicator"), 100, siCentrado=True)
        oColumnas.nueva("RESUMEN", _("Game played"), 150)

        self.grid = grid = Grid.Grid(self, oColumnas, siSelecFilas=True, background=None)
        self.grid.coloresAlternados()
        self.registrarGrid(grid)

        # Tabs
        self.tab = Controles.Tab().ponPosicion("S")
        self.tab.nuevaTab(gbBasic, _("Basic"))
        self.tab.nuevaTab(gbAdvanced, _("Advanced"))
        self.tab.nuevaTab(self.grid, _("Track record"))

        # Cabecera
        lyCab = Colocacion.H().control(gbGM)
        if self.liPersonal:
            lyCab.control(gbPersonal)

        layout = Colocacion.V().control(tb).otro(lyCab).control(self.tab).margen(3)

        self.setLayout(layout)

        self.recuperaDic()
        self.cambiaJuez()
        self.compruebaGM()
        self.compruebaP()
        self.compruebaHisto()
        self.aperturaMuestra()
        self.btAperturasFavoritas.hide()

        self.recuperarVideo(anchoDefecto=450)
示例#14
0
    def inicio(self, record):

        self.tipoJuego = kJugGM

        self.ayudas = 9999  # Para que analice sin problemas

        self.puntos = 0

        self.record = record

        self.gm = record.gm
        self.siBlancas = record.siBlancas
        self.modo = record.modo
        self.siJuez = record.siJuez
        self.motor = record.motor
        self.tiempo = record.tiempo
        self.depth = record.depth
        self.multiPV = record.multiPV
        self.mostrar = record.mostrar
        self.jugContrario = record.jugContrario
        self.jugInicial = record.jugInicial
        self.partidaElegida = record.partidaElegida
        self.bypassBook = record.bypassBook
        self.apertura = record.apertura
        self.onBypassBook = True if self.bypassBook else False
        if self.onBypassBook:
            self.bypassBook.polyglot()
        self.onApertura = True if self.apertura else False

        self.siAnalizando = False

        if self.siJuez:
            self.puntos = 0
            tutor = self.configuracion.buscaRivalExt(self.motor)
            t_t = self.tiempo * 100
            self.xtutor = self.procesador.creaGestorMotor(tutor, t_t, self.depth)
            self.xtutor.actMultiPV(self.multiPV)
            self.analisis = None
            self.siCompetitivo = True

        self.book = Apertura.AperturaPol(999)

        self.pensando(True)

        carpeta = "GM" if self.modo == "estandar" else self.configuracion.dirPersonalTraining
        self.motorGM = GM.GM(carpeta, self.gm)
        self.motorGM.colorFilter(self.siBlancas)
        if self.partidaElegida is not None:
            self.motorGM.ponPartidaElegida(self.partidaElegida)

        self.siJugamosConBlancas = self.siBlancas
        self.siRivalConBlancas = not self.siBlancas
        self.pensando(False)

        self.pantalla.ponToolBar(( k_mainmenu, k_reiniciar, k_configurar, k_utilidades ))
        self.pantalla.activaJuego(True, False)
        self.ponMensajero(self.mueveHumano)
        self.ponPosicion(self.partida.ultPosicion)
        self.mostrarIndicador(True)
        self.quitaAyudas()
        self.ponPiezasAbajo(self.siBlancas)
        dic = GM.dicGM()
        self.nombreGM = dic[self.gm.lower()] if self.modo == "estandar" else self.gm
        rotulo1 = _("Grandmaster") + ": <b>%s</b>" if self.modo == "estandar" else  "<b>%s</b>"
        self.ponRotulo1(rotulo1 % self.nombreGM)

        self.nombreRival = ""
        self.textoPuntuacion = ""
        self.ponRotuloSecundario()
        self.pgnRefresh(True)
        self.ponCapInfoPorDefecto()

        self.estado = kJugando

        self.ponPosicionDGT()

        self.siguienteJugada()
示例#15
0
    def __init__(self, procesador):

        self.configuracion = procesador.configuracion
        self.procesador = procesador

        self.dbHisto = Util.DicSQL(self.configuracion.ficheroGMhisto)
        self.bloqueApertura = None
        self.liAperturasFavoritas = []

        wParent = procesador.pantalla
        titulo = _("Play like a grandmaster")
        icono = Iconos.GranMaestro()
        extparam = "gm"
        QTVarios.WDialogo.__init__(self, wParent, titulo, icono, extparam)

        flb = Controles.TipoLetra(puntos=10)

        # Toolbar
        liAcciones = [( _("Accept"), Iconos.Aceptar(), "aceptar" ), None,
                      ( _("Cancel"), Iconos.Cancelar(), "cancelar" ), None,
                      ( _("One game"), Iconos.Uno(), "unJuego" ), None,
                      ( _("Import"), Iconos.ImportarGM(), "importar" )
        ]
        tb = Controles.TB(self, liAcciones)

        # Grandes maestros
        self.liGM = GM.listaGM()
        li = [(x[0], x[1]) for x in self.liGM]
        li.insert(0, ("-", None))
        self.cbGM = QTUtil2.comboBoxLB(self, li, li[0][1] if len(self.liGM) == 0 else li[1][1])
        self.cbGM.capturaCambiado(self.compruebaGM)
        hbox = Colocacion.H().relleno().control(self.cbGM).relleno()
        gbGM = Controles.GB(self, _("Choose a grandmaster"), hbox).ponFuente(flb)

        # Personales
        self.liPersonal = GM.listaGMpersonal(self.procesador.configuracion.dirPersonalTraining)
        if self.liPersonal:
            li = [(x[0], x[1]) for x in self.liPersonal]
            li.insert(0, ("-", None))
            self.cbPersonal = QTUtil2.comboBoxLB(self, li, li[0][1])
            self.cbPersonal.capturaCambiado(self.compruebaP)
            btBorrar = Controles.PB(self, "", self.borrarPersonal, plano=False).ponIcono(Iconos.Borrar(), tamIcon=16)
            hbox = Colocacion.H().relleno().control(self.cbPersonal).control(btBorrar).relleno()
            gbPersonal = Controles.GB(self, _("Personal games"), hbox).ponFuente(flb)

        # Color
        self.rbBlancas = Controles.RB(self, _("White"), rutina=self.compruebaColor)
        self.rbBlancas.activa(True)
        self.rbNegras = Controles.RB(self, _("Black"), rutina=self.compruebaColor)
        self.rbNegras.activa(False)

        # Contrario
        self.chContrario = Controles.CHB(self, _("Choose the opponent's move, when there are multiple possible answers"),
                                         False)

        # Juez
        liDepths = [("--", 0)]
        for x in range(1, 31):
            liDepths.append((str(x), x))
        self.liMotores = self.configuracion.comboMotoresMultiPV10()
        self.cbJmotor, self.lbJmotor = QTUtil2.comboBoxLB(self, self.liMotores, self.configuracion.tutorInicial, _("Engine"))
        self.edJtiempo = Controles.ED(self).tipoFloat().ponFloat(1.0).anchoFijo(50)
        self.lbJtiempo = Controles.LB2P(self, _("Time in seconds"))
        self.cbJdepth = Controles.CB(self, liDepths, 0).capturaCambiado(self.cambiadoDepth)
        self.lbJdepth = Controles.LB2P(self, _("Depth"))
        self.lbJshow = Controles.LB2P(self, _("Show rating"))
        liOptions = [( _("All moves"), None ), ( _("Moves are different"), True ), ( _("Never"), False )]
        self.cbJshow = Controles.CB(self, liOptions, True)
        self.lbJmultiPV = Controles.LB2P(self, _("Number of moves evaluated by engine(MultiPV)"))
        li = [(_("Default"), "PD"),
              ( _("Maximum"), "MX")]
        for x in ( 1, 3, 5, 10, 15, 20, 30, 40, 50, 75, 100, 150, 200 ):
            li.append((str(x), str(x)))
        self.cbJmultiPV = Controles.CB(self, li, "PD")

        # Inicial
        self.edJugInicial, lbInicial = QTUtil2.spinBoxLB(self, 1, 1, 99, etiqueta=_("Initial move"), maxTam=40)

        # Libros
        fvar = self.configuracion.ficheroBooks
        self.listaLibros = Books.ListaLibros()
        self.listaLibros.recuperaVar(fvar)
        # # Comprobamos que todos esten accesibles
        self.listaLibros.comprueba()
        li = [(x.nombre, x) for x in self.listaLibros.lista]
        li.insert(0, ("--", None))
        self.cbBooks, lbBooks = QTUtil2.comboBoxLB(self, li, None, _("Bypass moves in the book"))

        # Aperturas

        self.btApertura = Controles.PB(self, " " * 5 + _("Undetermined") + " " * 5, self.aperturasEditar).ponPlano(
            False)
        self.btAperturasFavoritas = Controles.PB(self, "", self.aperturasFavoritas).ponIcono(Iconos.Favoritos())
        self.btAperturasQuitar = Controles.PB(self, "", self.aperturasQuitar).ponIcono(Iconos.Motor_No())
        hbox = Colocacion.H().control(self.btAperturasQuitar).control(self.btApertura).control(
            self.btAperturasFavoritas).relleno()
        gbOpening = Controles.GB(self, _("Opening"), hbox)

        # gbBasic
        # # Color
        hbox = Colocacion.H().relleno().control(self.rbBlancas).espacio(10).control(self.rbNegras).relleno()
        gbColor = Controles.GB(self, _("Play with"), hbox).ponFuente(flb)

        ## Tiempo
        ly1 = Colocacion.H().control(self.lbJmotor).control(self.cbJmotor).control(self.lbJshow).control(
            self.cbJshow).relleno()
        ly2 = Colocacion.H().control(self.lbJtiempo).control(self.edJtiempo)
        ly2.control(self.lbJdepth).control(self.cbJdepth).relleno()
        ly3 = Colocacion.H().control(self.lbJmultiPV).control(self.cbJmultiPV).relleno()
        ly = Colocacion.V().otro(ly1).otro(ly2).otro(ly3)
        self.gbJ = Controles.GB(self, _("Adjudicator"), ly).conectar(self.cambiaJuez)

        ## Opciones
        vlayout = Colocacion.V().control(gbColor)
        vlayout.espacio(5).control(self.gbJ)
        vlayout.margen(20)
        gbBasic = Controles.GB(self, "", vlayout)
        gbBasic.setFlat(True)

        ## Opciones avanzadas
        lyInicial = Colocacion.H().control(lbInicial).control(self.edJugInicial).relleno().control(lbBooks).control(
            self.cbBooks).relleno()
        vlayout = Colocacion.V().relleno().otro(lyInicial).control(gbOpening)
        vlayout.espacio(5).control(self.chContrario).margen(20).relleno()
        gbAdvanced = Controles.GB(self, "", vlayout)
        gbAdvanced.setFlat(True)

        # Historico
        self.liHisto = []
        oColumnas = Columnas.ListaColumnas()
        oColumnas.nueva("FECHA", _("Date"), 80, siCentrado=True)
        oColumnas.nueva("PACIERTOS", _("Hints"), 90, siCentrado=True)
        oColumnas.nueva("PUNTOS", _("Points accumulated"), 120, siCentrado=True)
        oColumnas.nueva("ENGINE", _("Adjudicator"), 100, siCentrado=True)
        oColumnas.nueva("RESUMEN", _("Game played"), 150)

        self.grid = grid = Grid.Grid(self, oColumnas, siSelecFilas=True, background=None)
        self.grid.coloresAlternados()
        self.registrarGrid(grid)

        # Tabs
        self.tab = Controles.Tab().ponPosicion("S")
        self.tab.nuevaTab(gbBasic, _("Basic"))
        self.tab.nuevaTab(gbAdvanced, _("Advanced"))
        self.tab.nuevaTab(self.grid, _("Track record"))

        # Cabecera
        lyCab = Colocacion.H().control(gbGM)
        if self.liPersonal:
            lyCab.control(gbPersonal)

        layout = Colocacion.V().control(tb).otro(lyCab).control(self.tab).margen(3)

        self.setLayout(layout)

        self.recuperaDic()
        self.cambiaJuez()
        self.compruebaGM()
        self.compruebaP()
        self.compruebaHisto()
        self.aperturaMuestra()
        self.btAperturasFavoritas.hide()

        self.recuperarVideo(anchoDefecto=450)