Esempio n. 1
0
    def inicio(self, tactica, posSiguiente=None):

        if hasattr(self, "reiniciando"):
            if self.reiniciando:
                return
        self.reiniciando = True

        self.tactica = tactica

        liOrden = self.tactica.listaOrden()

        self.numPosiciones = self.tactica.numPosiciones()
        self.posActual = self.tactica.posActual()

        numEnt = liOrden[self.posActual]

        self.siPenalizable = True
        self.puestosPenalizacion = self.tactica.puestosPenalizacion(
            self.posActual, len(liOrden))

        self.pointView = self.tactica.pointView()

        txtEntreno = self.tactica.unFNS(numEnt)

        if posSiguiente is None:
            self.posSiguiente = self.posActual + 1

        li = txtEntreno.split("|")

        fenInicial = li[0]
        if fenInicial.endswith(" 0"):
            fenInicial = fenInicial[:-1] + "1"

        self.fenInicial = fenInicial

        self.dicEtiquetasPGN = None
        siPartidaOriginal = False
        nli = len(li)
        if nli >= 2:
            etiDirigido = li[1]

            # # Solucion
            if nli >= 3:
                solucion = li[2]
                if solucion:
                    self.dicDirigidoFenM2 = PGN.leeEntDirigidoM2(
                        fenInicial, solucion)

                # Partida original
                if nli >= 4:
                    pgn = PGN.UnPGN()
                    if nli > 4:
                        txt = "|".join(li[3:])
                    else:
                        txt = li[3]
                    txt = txt.replace("]", "]\n").replace(" [", "[")
                    pgn.leeTexto(txt)
                    partida = pgn.partida
                    siEstaFen = False
                    njug = partida.numJugadas()
                    for n in range(njug - 1, -1, -1):
                        jg = partida.jugada(n)
                        if jg.posicion.fen() == fenInicial:
                            siEstaFen = True
                            if n + 1 != njug:
                                partida.liJugadas = partida.liJugadas[:n + 1]
                                partida.ultPosicion = jg.posicion.copia()
                            break
                    if siEstaFen:
                        siPartidaOriginal = True
                        self.partida = partida
                        self.pgn.partida = partida
                        self.dicEtiquetasPGN = pgn.dic
                        # for k, v in pgn.dic.items():
                        # if k.upper() != "FEN":
                        # if etiDirigido:
                        # etiDirigido += "<br>"
                        # etiDirigido += "%s: <b>%s</b>"%(k,v)

        cp = ControlPosicion.ControlPosicion()
        cp.leeFen(fenInicial)

        self.fen = fenInicial

        siBlancas = cp.siBlancas

        if self.pointView:
            siBlancas = self.pointView == 1

        if not siPartidaOriginal:
            self.partida.reset(cp)

        self.partida.pendienteApertura = False

        self.tipoJuego = kJugEntTac

        self.siJuegaHumano = False
        self.siJuegaPorMi = True

        self.siJugamosConBlancas = siBlancas
        self.siRivalConBlancas = not siBlancas

        self.liVariantes = []

        self.rmRival = None

        self.siTutorActivado = False
        self.pantalla.ponActivarTutor(False)

        self.ayudasPGN = 0

        self.pantalla.activaJuego(True, False, siAyudas=False)
        self.pantalla.quitaAyudas(True, True)
        self.ponMensajero(self.mueveHumano)
        self.ponPosicion(self.partida.ultPosicion)
        self.mostrarIndicador(True)
        self.ponPiezasAbajo(siBlancas)
        # txttact = "%dx%d"%(tactica.numFNS(),len(tactica.JUMPS)+1)
        # txttact = "(%s)x%d"%(txttact,len(tactica.REPEAT))
        self.siShowText = tactica.siShowText()
        titulo = "<b>%s</b><br>" % (self.tactica.titulo, )  # txttact)
        self.tituloAmpliado = titulo + etiDirigido
        if self.siShowText:
            titulo = self.tituloAmpliado
        else:
            self.siShowText = len(etiDirigido) == 0

        liOpciones = [k_mainmenu]
        if not self.siShowText:
            liOpciones.append(k_showtext)
        if self.dicEtiquetasPGN:
            liOpciones.append(k_pgnInformacion)
        self.pantalla.ponToolBar(liOpciones)
        self.ponRotulo1(titulo)
        self.pgnRefresh(True)
        QTUtil.xrefreshGUI()

        self.ponPosicionDGT()

        self.siSeguirJugando = False
        tiempo = self.configuracion.tiempoTutor
        if tiempo < 1000 or tiempo > 5000:
            tiempo = 5000
        self.xrival = self.procesador.creaGestorMotor(self.configuracion.tutor,
                                                      tiempo, None)

        self.reiniciando = False

        self.rivalPensando = False

        if siPartidaOriginal:
            self.repiteUltimaJugada()

        self.ponSiguiente()

        self.estado = kJugando
        self.siguienteJugada()
Esempio n. 2
0
    def inicio(self,
               posEntreno,
               numEntrenos,
               titEntreno,
               liEntrenos,
               siTutorActivado=None,
               jump=False):
        if hasattr(self, "reiniciando"):
            if self.reiniciando:
                return
        self.reiniciando = True

        if siTutorActivado is None:
            siTutorActivado = (VarGen.dgtDispatch is None
                               ) and self.configuracion.tutorActivoPorDefecto

        self.posEntreno = posEntreno
        self.guardaPosicion(posEntreno)
        self.numEntrenos = numEntrenos
        self.titEntreno = titEntreno
        self.liEntrenos = liEntrenos
        self.jump = jump

        self.liHistorico = [self.posEntreno]

        self.ayudas = 99999

        fenInicial = self.liEntrenos[self.posEntreno - 1].strip()
        self.fenInicial = fenInicial

        self.rivalPensando = False

        self.dicEtiquetasPGN = None

        # Dirigido
        etiDirigido = ""
        self.siDirigido = False
        self.siDirigidoSeguir = None
        self.siDirigidoVariantes = False
        siPartidaOriginal = False
        if "|" in fenInicial:
            li = fenInicial.split("|")

            fenInicial = li[0]
            if fenInicial.endswith(" 0"):
                fenInicial = fenInicial[:-1] + "1"

            nli = len(li)
            if nli >= 2:
                etiDirigido = li[1]

                # # Solucion
                if nli >= 3:
                    solucion = li[2]
                    if solucion:
                        self.dicDirigidoFenM2 = PGN.leeEntDirigidoM2(
                            fenInicial, solucion)
                        self.siDirigido = len(self.dicDirigidoFenM2) > 0

                    # Partida original
                    if nli >= 4:
                        if nli > 4:
                            txt = "|".join(li[3:])
                        else:
                            txt = li[3]
                        txt = txt.replace("]", "]\n").replace(" [", "[")
                        pgn = PGN.UnPGN()
                        pgn.leeTexto(txt)
                        partida = pgn.partida
                        siEstaFen = False
                        njug = partida.numJugadas()
                        for n in range(njug - 1, -1, -1):
                            jg = partida.jugada(n)
                            if jg.posicion.fen() == fenInicial:
                                siEstaFen = True
                                if n + 1 != njug:
                                    partida.liJugadas = partida.liJugadas[:n +
                                                                          1]
                                    partida.ultPosicion = jg.posicion.copia()
                                break
                        if siEstaFen:
                            siPartidaOriginal = True
                            self.partida = partida
                            self.pgn.partida = partida
                            self.dicEtiquetasPGN = pgn.dic
                            # if etiDirigido:
                            # etiDirigido += "<br>"
                            # for k, v in pgn.dic.iteritems():
                            # if k.upper() != "FEN":
                            # if etiDirigido:
                            # etiDirigido += "<br>"
                            # etiDirigido += "%s: <b>%s</b>"%(k,v)

        cp = ControlPosicion.ControlPosicion()
        cp.leeFen(fenInicial)

        self.fen = fenInicial

        siBlancas = cp.siBlancas

        if not siPartidaOriginal:
            self.partida.reset(cp)

        self.partida.pendienteApertura = False

        self.tipoJuego = kJugEntPos

        self.siJuegaHumano = False
        self.estado = kJugando
        self.siJuegaPorMi = True

        self.siJugamosConBlancas = siBlancas
        self.siRivalConBlancas = not siBlancas

        self.liVariantes = []

        self.rmRival = None

        self.siTutorActivado = siTutorActivado
        self.pantalla.ponActivarTutor(self.siTutorActivado)

        self.ayudasPGN = 0

        liOpciones = [k_mainmenu, k_cambiar, k_reiniciar, k_atras]
        if self.dicEtiquetasPGN:
            liOpciones.append(k_pgnInformacion)
        liOpciones.extend((k_configurar, k_utilidades))
        if self.numEntrenos > 1:
            liOpciones.extend((k_anterior, k_siguiente))
        self.liOpcionesToolBar = liOpciones
        self.pantalla.ponToolBar(liOpciones)

        self.pantalla.activaJuego(True, False, siAyudas=False)
        self.pantalla.quitaAyudas(False, False)
        self.ponMensajero(self.mueveHumano)
        self.ponPosicion(self.partida.ultPosicion)
        self.mostrarIndicador(True)
        self.ponPiezasAbajo(siBlancas)
        titulo = "<b>%s</b>" % TrListas.dicTraining().get(
            self.titEntreno, self.titEntreno)
        if etiDirigido:
            titulo += "<br>%s" % etiDirigido
        self.ponRotulo1(titulo)
        self.ponRotulo2("%d / %d" % (posEntreno, numEntrenos))
        self.pgnRefresh(True)
        QTUtil.xrefreshGUI()

        if self.xrival is None:
            self.xrival = self.procesador.creaGestorMotor(
                self.configuracion.tutor, self.configuracion.tiempoTutor,
                self.configuracion.depthTutor)

        self.siAnalizadoTutor = False

        self.ponPosicionDGT()

        if siPartidaOriginal:
            # self.ponteAlFinal()
            self.repiteUltimaJugada()

        self.reiniciando = False
        self.rivalPensando = False
        self.siguienteJugada()