Exemple #1
0
 def dbFlechas(self):
     if self._dbFlechas is None:
         self._dbFlechas = Util.DicSQL(self._fichero, tabla="Flechas")
     return self._dbFlechas
Exemple #2
0
 def dbFEN(self):
     if self._dbFEN is None:
         self._dbFEN = Util.DicSQL(self._fichero, tabla="FEN")
     return self._dbFEN
Exemple #3
0
 def dbConfig(self):
     if self._dbConfig is None:
         self._dbConfig = Util.DicSQL(self._fichero, tabla="Config")
     return self._dbConfig
 def resetConfTablero(self, key, tamDef):
     db = Util.DicSQL(self.ficheroConfTableros)
     del db[key]
     db.close()
     self.leeConfTableros()
     return self.confTablero(key, tamDef)
Exemple #5
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)
Exemple #6
0
 def putDB(self, key, value):
     db = Util.DicSQL(self.ficheroDB)
     db[key] = value
     db.close()
 def restore_video(self, key):
     db = Util.DicSQL(self.ficheroVideo)
     dic = db[key]
     db.close()
     return dic
 def open_cache_engines(self):
     if self.db_cache_engines is None:
         self.db_cache_engines = Util.DicSQL(self.nomFichero,
                                             tabla="CACHE_ENGINES")
Exemple #9
0
 def __init__(self):
     self.db = Util.DicSQL(VarGen.configuracion.ficheroAnalisisBookGuide, tabla="analisis", maxCache=1024)
Exemple #10
0
    def menu_run(self, resp):
        if resp:
            if type(resp) == str:
                if resp == "gm":
                    self.entrenaGM()

                elif resp == "wgm":
                    self.entrenaWGM()

                elif resp.startswith("mate"):
                    self.jugarMate(int(resp[-1]))

                elif resp == "bmt":
                    self.bmt()

                elif resp == "polyglot":
                    self.entrenaBooks()

                elif resp.startswith("resistance"):
                    self.resistance(resp[10:])

                elif resp in ["j60_rival", "j60_jugador"]:
                    self.jugar60(resp == "j60_jugador")

                elif resp == "aperturas":
                    self.aperturas()

                elif resp == "dailytest":
                    self.dailyTest()

                elif resp == "potencia":
                    self.potencia()

                elif resp == "visualiza":
                    self.visualiza()

                elif resp.startswith("tactica|"):
                    nada, tipo, nombre, carpeta, ini = resp.split("|")
                    self.tacticas(tipo, nombre, carpeta, ini)

                elif resp.startswith("remtactica|"):
                    nada, carpeta, nombre = resp.split("|")
                    self.tacticaRemove(carpeta, nombre)

                elif resp.startswith("puente_"):
                    self.puente(int(resp[7:]))

                elif resp.startswith("horses_"):
                    test = int(resp[7])
                    icl, icn, tit = self.horsesDef[test]
                    icon = VarGen.todasPiezas.icono(icl, icn)
                    self.horses(test, tit, icon)

                elif resp.startswith("ep_"):
                    um = self.procesador.unMomento()
                    entreno = resp[3:].replace("\\", "/")
                    if "/" in entreno:
                        dicTraining = TrListas.dicTraining()
                        titentreno = ""
                        for x in entreno[:-4].split("/")[1:]:
                            titentreno += dicTraining.get(x, x) + "/"
                        titentreno = titentreno[:-1]
                    with Util.OpenCodec(entreno) as f:
                        todo = f.read().strip()
                    liEntrenamientos = todo.split("\n")
                    nPosiciones = len(liEntrenamientos)
                    um.final()
                    if nPosiciones == 0:
                        return
                    elif nPosiciones == 1:
                        pos = 1
                        jump = False
                    else:
                        db = Util.DicSQL(self.configuracion.ficheroTrainings)
                        data = db[entreno]
                        jump = False
                        tipo = "s"
                        if data is None:
                            posUltimo = 1
                        elif type(data) == int:
                            posUltimo = data
                        else:
                            posUltimo = data["POSULTIMO"]
                            jump = data["SALTA"]
                            tipo = data["TIPO"]
                        resp = DatosNueva.numPosicion(self.procesador.pantalla,
                                                      titentreno, nPosiciones,
                                                      posUltimo, jump, tipo)
                        if resp is None:
                            db.close()
                            return
                        pos, tipo, jump = resp
                        db[entreno] = {
                            "POSULTIMO": pos,
                            "SALTA": jump,
                            "TIPO": tipo
                        }
                        db.close()
                        if tipo.startswith("r"):
                            if tipo == "rk":
                                random.seed(pos)
                            random.shuffle(liEntrenamientos)
                    self.procesador.entrenaPos(pos, nPosiciones, titentreno,
                                               liEntrenamientos, entreno, jump)

                elif resp == "learnPGN":
                    self.learnPGN()

                elif resp == "playPGN":
                    self.procesador.playPGN()

                elif resp == "lucaselo":
                    self.procesador.lucaselo(False)

                elif resp == "micelo":
                    self.procesador.micelo(False)

                elif resp.startswith("fics"):
                    self.procesador.ficselo(False, int(resp[4:]))

                elif resp.startswith("fide"):
                    self.procesador.fideelo(False, int(resp[4:]))

                elif resp.startswith("lichess"):
                    self.procesador.lichesselo(False, int(resp[7:]))

                elif resp.startswith("map_"):
                    nada, mapa = resp.split("_")
                    self.procesador.trainingMap(mapa)

                elif resp == "transsiberian":
                    self.procesador.showRoute()

                elif resp == "everest":
                    self.everest()

                elif resp.startswith("tol_"):
                    self.turn_on_lights(resp[4:])

                elif resp == "washing_machine":
                    self.washing_machine()

            else:
                if resp <= -100:
                    self.menu = None  # ya que puede cambiar y la etiqueta es diferente
                    mem = Memoria.Memoria(self.procesador)
                    mem.lanza(abs(resp) - 100)
    def lanza(self, siFavoritos=True):

        self.comprueba()

        liFavoritos = None
        if siFavoritos:
            liFav = self.procesador.configuracion.liFavoritos
            if liFav:
                li = []
                for elem in liFav:
                    if elem in self.dicMenu:
                        li.append(self.dicMenu[elem])
                liFavoritos = li

        if liFavoritos:
            menu = self.menuFavoritos(liFavoritos)
        else:
            menu = self.menu

        resp = menu.lanza()

        if resp:
            siStr = type(resp) == type("")
            if siStr:
                if resp == "menu_global":
                    self.lanza(False)

                elif resp == "gm":
                    self.entrenaGM()

                elif resp.startswith("mate"):
                    self.jugarMate(int(resp[-1]))

                elif resp == "bmt":
                    self.bmt()

                elif resp == "polyglot":
                    self.entrenaBooks()

                elif resp.startswith("boxing"):
                    self.boxing(resp[6:])

                elif resp in ["j60_rival", "j60_jugador"]:
                    self.jugar60(resp == "j60_jugador")

                elif resp == "aperturas":
                    self.aperturas()

                elif resp == "dailytest":
                    self.dailyTest()

                elif resp == "potencia":
                    self.potencia()

                elif resp == "visualiza":
                    self.visualiza()

                elif resp.startswith("tactica|"):
                    nada, tipo, nombre, carpeta, ini = resp.split("|")
                    self.tacticas(tipo, nombre, carpeta, ini)

                elif resp.startswith("remtactica|"):
                    nada, carpeta, nombre = resp.split("|")
                    self.tacticaRemove(carpeta, nombre)

                elif resp.startswith("puente_"):
                    self.puente(int(resp[7:]))

                elif resp.startswith("horses_"):
                    test = int(resp[7])
                    icl, icn, tit = self.horsesDef[test]
                    icon = VarGen.todasPiezas.icono(icl, icn)
                    self.horses(test, tit, icon)

                elif resp.startswith("ep_"):
                    um = self.procesador.unMomento()
                    entreno = resp[3:].replace("\\", "/")
                    if "/" in entreno:
                        dicTraining = TrListas.dicTraining()
                        titentreno = ""
                        for x in entreno[:-4].split("/")[1:]:
                            titentreno += dicTraining.get(x, x) + "/"
                        titentreno = titentreno[:-1]
                    f = PGNreader.openCodec(entreno)
                    todo = f.read().strip()
                    f.close()
                    liEntrenamientos = todo.split("\n")
                    nPosiciones = len(liEntrenamientos)
                    um.final()
                    if nPosiciones == 0:
                        return
                    elif nPosiciones == 1:
                        pos = 1
                        jump = False
                    else:
                        db = Util.DicSQL(self.configuracion.ficheroTrainings)
                        posUltimo = db[entreno]
                        if posUltimo is None:
                            posUltimo = 1
                        resp = DatosNueva.numPosicion(self.procesador.pantalla,
                                                      titentreno, nPosiciones,
                                                      posUltimo)
                        if resp is None:
                            return
                        pos, tipo, jump = resp
                        db.close()
                        if tipo.startswith("r"):
                            if tipo == "rk":
                                random.seed(pos)
                            random.shuffle(liEntrenamientos)
                    self.procesador.entrenaPos(pos, nPosiciones, titentreno,
                                               liEntrenamientos, entreno, jump)

                elif resp == "learnPGN":
                    self.learnPGN()

                elif resp == "lucaselo":
                    self.procesador.lucaselo(False)

                elif resp == "micelo":
                    self.procesador.micelo(False)

                elif resp.startswith("fics"):
                    self.procesador.ficselo(False, int(resp[4:]))

                elif resp.startswith("fide"):
                    self.procesador.fideelo(False, int(resp[4:]))

                elif resp.startswith("map_"):
                    nada, mapa = resp.split("_")
                    self.procesador.trainingMap(mapa)

            else:
                if resp <= -100:
                    self.menu = None  # ya que puede cambiar y la etiqueta es diferente
                    mem = Memoria.Memoria(self.procesador)
                    mem.lanza(abs(resp) - 100)
Exemple #12
0
 def dbdatos(self):
     return Util.DicSQL(self.fichero, tabla=self.nombre)
Exemple #13
0
 def guardaPosicion(self, posEntreno):
     db = Util.DicSQL(self.configuracion.ficheroTrainings)
     db[self.entreno] = posEntreno
     db.close()
Exemple #14
0
 def leeConfTableros(self):
     db = Util.DicSQL(self.ficheroConfTableros)
     self.dicConfTableros = db.asDictionary()
     db.close()
Exemple #15
0
 def dbSVGs(self):
     if self._dbSVGs is None:
         self._dbSVGs = Util.DicSQL(self._fichero, tabla="SVGs")
     return self._dbSVGs
 def leeVariables(self, nomVar):
     db = Util.DicSQL(self.ficheroVariables)
     resp = db[nomVar]
     db.close()
     return resp if resp else {}
Exemple #17
0
 def dbMarkers(self):
     if self._dbMarkers is None:
         self._dbMarkers = Util.DicSQL(self._fichero, tabla="Markers")
     return self._dbMarkers
 def escVariables(self, nomVar, dicValores):
     db = Util.DicSQL(self.ficheroVariables)
     db[nomVar] = dicValores
     db.close()
Exemple #19
0
 def getDB(self, key):
     db = Util.DicSQL(self.ficheroDB)
     resp = db[key]
     db.close()
     return resp
 def save_video(self, key, dic):
     db = Util.DicSQL(self.ficheroVideo)
     db[key] = dic
     db.close()