Beispiel #1
0
    def inicio(self, dic, aplazamiento=None, siPrimeraJugadaHecha=False):
        if aplazamiento:
            dic = aplazamiento["EMDIC"]
        self.reinicio = dic

        self.tipoJuego = kJugEntMaq

        self.resultado = None
        self.siJuegaHumano = False
        self.siJuegaPorMi = True
        self.estado = kJugando
        self.siAnalizando = False
        self.timekeeper = Util.Timekeeper()

        self.summary = {}  # numJugada : "a"ccepted, "s"ame, "r"ejected, dif points, time used
        self.siSummary = dic.get("SUMMARY", False)

        siBlancas = dic["SIBLANCAS"]
        self.siJugamosConBlancas = siBlancas
        self.siRivalConBlancas = not siBlancas

        self.cm = dic["RIVAL"].get("CM", None)
        if self.cm:
            if hasattr(self.cm, "icono"):
                delattr(self.cm, "icono") # problem with configuracion.escVariables and saving qt variables

        self.siAtras = dic["ATRAS"]

        self.rmRival = None
        self.liRMrival = []
        self.noMolestar = 0
        self.resignPTS = -99999  # never

        self.aperturaObl = self.aperturaStd = None

        self.fen = dic["FEN"]
        if self.fen:
            cp = ControlPosicion.ControlPosicion()
            cp.leeFen(self.fen)
            self.partida.reset(cp)
            self.partida.pendienteApertura = False
            if "MOVE" in dic:
                self.partida.leerPV(dic["MOVE"])
        else:
            if dic["APERTURA"]:
                self.aperturaObl = Apertura.JuegaApertura(dic["APERTURA"].a1h8)
                self.primeroBook = False  # la apertura es obligatoria

        self.pensando(True)

        self.book = dic.get("BOOK", None)
        elo = getattr(self.cm, "elo", 0)
        self.maxMoveBook = elo / 200 if 0 < elo <= 1700 else 9999
        if self.book:
            self.book.polyglot()
            self.bookRR = dic.get("BOOKRR", "mp")
            self.bookMandatory = dic.get("BOOKMANDATORY", False)
        elif dic["RIVAL"].get("TIPO", None) in (Motores.MICGM, Motores.MICPER):
            if self.cm.book:
                self.book = Books.Libro("P", self.cm.book, self.cm.book, True)
                self.book.polyglot()
                self.bookRR = "mp"
                self.bookMandatory = None
                self.maxMoveBook = 0

        self.siTutorActivado = (VarGen.dgtDispatch is None) and self.configuracion.tutorActivoPorDefecto
        self.pantalla.ponActivarTutor(self.siTutorActivado)

        self.ayudas = dic["AYUDAS"]
        self.ayudasPGN = self.ayudas  # Se guarda para guardar el PGN
        self.nArrows = dic.get("ARROWS", 0)
        nBoxHeight = dic.get("BOXHEIGHT", 24)
        self.thoughtOp = dic.get("THOUGHTOP", -1)
        self.thoughtTt = dic.get("THOUGHTTT", -1)
        self.continueTt = dic.get("CONTINUETT", False)
        self.nArrowsTt = dic.get("ARROWSTT", 0)
        self.chance = dic.get("2CHANCE", True)

        if self.nArrowsTt and self.ayudas == 0:
            self.nArrowsTt = 0

        self.childmode = self.nArrowsTt > 0 and self.ayudas > 0

        mx = max(self.thoughtOp, self.thoughtTt)
        if mx > -1:
            self.alturaRotulo3(nBoxHeight)

        dr = dic["RIVAL"]
        rival = dr["CM"]

        if dr["TIPO"] == Motores.ELO:
            r_t = 0
            r_p = rival.fixed_depth
            self.nAjustarFuerza = kAjustarMejor

        else:
            r_t = dr["TIEMPO"] * 100  # Se guarda en decimas -> milesimas
            r_p = dr["PROFUNDIDAD"]
            self.nAjustarFuerza = dic.get("AJUSTAR", kAjustarMejor)

        if not self.xrival: # reiniciando is not None
            if r_t <= 0:
                r_t = None
            if r_p <= 0:
                r_p = None
            if r_t is None and r_p is None and not dic["SITIEMPO"]:
                r_t = 1000
            self.xrival = self.procesador.creaGestorMotor(rival, r_t, r_p, self.nAjustarFuerza != kAjustarMejor)
            if self.nAjustarFuerza != kAjustarMejor:
                self.xrival.maximizaMultiPV()
        self.resignPTS = dr["RESIGN"]

        self.siBookAjustarFuerza = self.nAjustarFuerza != kAjustarMejor

        self.xrival.ponGuiDispatch(self.guiDispatch, whoDispatch=False)

        self.xtutor.ponGuiDispatch(self.guiDispatch, whoDispatch=True)

        self.xrival.siBlancas = self.siRivalConBlancas

        self.siPrimeraJugadaHecha = siPrimeraJugadaHecha

        self.siTiempo = dic["SITIEMPO"]
        if self.siTiempo:
            self.maxSegundos = dic["MINUTOS"] * 60.0
            self.segundosJugada = dic["SEGUNDOS"]
            self.segExtra = dic.get("MINEXTRA", 0) * 60.0
            self.zeitnot = dic.get("ZEITNOT", 0)

            self.tiempo = {}
            self.tiempo[True] = Util.Timer(self.maxSegundos)
            self.tiempo[False] = Util.Timer(self.maxSegundos)
            if self.segExtra:
                self.tiempo[self.siJugamosConBlancas].ponSegExtra(self.segExtra)

        self.pensando(False)

        # -Aplazamiento 1/2--------------------------------------------------
        if aplazamiento:
            self.partida.recuperaDeTexto(aplazamiento["JUGADAS"])
            self.partida.pendienteApertura = aplazamiento["PENDIENTEAPERTURA"]
            self.partida.apertura = None if aplazamiento["APERTURA"] is None else self.listaAperturasStd.dic[
                aplazamiento["APERTURA"]]

            self.siTutorActivado = aplazamiento["SITUTOR"]
            self.pantalla.ponActivarTutor(self.siTutorActivado)
            self.ayudas = aplazamiento["AYUDAS"]
            self.summary = aplazamiento["SUMMARY"]

            self.siTiempo = aplazamiento["SITIEMPO"]
            if self.siTiempo:
                self.maxSegundos = aplazamiento["MAXSEGUNDOS"]
                self.segundosJugada = aplazamiento["SEGUNDOSJUGADA"]
                self.segExtra = aplazamiento.get("SEGEXTRA", 0)

                self.tiempo = {}
                self.tiempo[True] = Util.Timer(aplazamiento["TIEMPOBLANCAS"])
                self.tiempo[False] = Util.Timer(aplazamiento["TIEMPONEGRAS"])
                if self.segExtra:
                    self.tiempo[self.siJugamosConBlancas].ponSegExtra(self.segExtra)

                self.siPrimeraJugadaHecha = False

        li = [k_cancelar, k_rendirse, k_tablas, k_atras, k_ayudaMover, k_reiniciar, k_aplazar, k_peliculaPausa, k_configurar, k_utilidades]
        if not self.siAtras:
            del li[3]
        self.pantalla.ponToolBar(li)
        self.pantalla.mostrarOpcionToolbar(k_tablas, True)

        self.pantalla.activaJuego(True, self.siTiempo)

        self.ponMensajero(self.mueveHumano)
        self.ponPosicion(self.partida.ultPosicion)
        self.mostrarIndicador(True)
        if self.ayudasPGN:
            self.ponAyudasEM()
        else:
            self.quitaAyudas(siQuitarAtras=not self.siAtras)
        self.ponPiezasAbajo(siBlancas)

        self.ponRotuloBasico()
        if self.ayudasPGN:
            self.ponRotulo2(_("Tutor") + ": <b>" + self.xtutor.nombre)
        else:
            self.ponRotulo2("")

        self.ponCapInfoPorDefecto()

        self.pgnRefresh(True)

        # -Aplazamiento 2/2--------------------------------------------------
        if aplazamiento or "MOVE" in dic:
            self.mueveJugada(kMoverFinal)

        if self.siTiempo:
            self.siPrimeraJugadaHecha = siPrimeraJugadaHecha
            tpBL = self.tiempo[True].etiqueta()
            tpNG = self.tiempo[False].etiqueta()
            rival = self.xrival.nombre
            jugador = self.configuracion.jugador
            bl, ng = jugador, rival
            if self.siRivalConBlancas:
                bl, ng = ng, bl
            self.pantalla.ponDatosReloj(bl, tpBL, ng, tpNG)
            self.refresh()

        self.siAnalizadoTutor = False

        self.ponPosicionDGT()

        if self.childmode:
            self.pantalla.base.btActivarTutor.setVisible(False)

        self.siguienteJugada()
Beispiel #2
0
    def base_inicio(self, dic_var):
        self.reinicio = dic_var

        self.cache = dic_var.get("cache", {})

        self.game_type = GT_AGAINST_ENGINE

        self.human_is_playing = False
        self.plays_instead_of_me_option = True
        self.state = ST_PLAYING
        self.is_analyzing = False

        self.summary = {
        }  # numJugada : "a"ccepted, "s"ame, "r"ejected, dif points, time used
        self.with_summary = dic_var.get("SUMMARY", False)

        is_white = dic_var["ISWHITE"]
        self.is_human_side_white = is_white
        self.is_engine_side_white = not is_white

        self.conf_engine = dic_var["RIVAL"].get("CM", None)

        self.lirm_engine = []
        self.next_test_resign = 0
        self.resign_limit = -99999  # never

        self.aperturaObl = self.aperturaStd = None

        self.fen = dic_var["FEN"]
        if self.fen:
            cp = Position.Position()
            cp.read_fen(self.fen)
            self.game.set_position(cp)
            self.game.pending_opening = False
        else:
            if dic_var["OPENING"]:
                self.aperturaObl = Apertura.JuegaApertura(
                    dic_var["OPENING"].a1h8)
                self.primeroBook = False  # la opening es obligatoria

        self.bookR = dic_var.get("BOOKR", None)
        if self.bookR:
            self.bookRdepth = dic_var.get("BOOKRDEPTH", 0)
            self.bookR.polyglot()
            self.bookRR = dic_var.get("BOOKRR", "mp")
        elif dic_var["RIVAL"].get("TIPO", None) in (SelectEngines.MICGM,
                                                    SelectEngines.MICPER):
            if self.conf_engine.book:
                self.bookR = Books.Libro("P", self.conf_engine.book,
                                         self.conf_engine.book, True)
                self.bookR.polyglot()
                self.bookRR = "mp"
                self.bookRdepth = 0

        self.bookP = dic_var.get("BOOKP", None)
        if self.bookP:
            self.bookPdepth = dic_var.get("BOOKPDEPTH", 0)
            self.bookP.polyglot()

        self.is_tutor_enabled = (
            Code.dgtDispatch is
            None) and self.configuracion.x_default_tutor_active
        self.main_window.ponActivarTutor(self.is_tutor_enabled)

        self.ayudas = dic_var["HINTS"]
        self.ayudas_iniciales = self.ayudas  # Se guarda para guardar el PGN
        self.nArrows = dic_var.get("ARROWS", 0)
        n_box_height = dic_var.get("BOXHEIGHT", 24)
        self.thoughtOp = dic_var.get("THOUGHTOP", -1)
        self.thoughtTt = dic_var.get("THOUGHTTT", -1)
        self.continueTt = dic_var.get("CONTINUETT", False)
        self.nArrowsTt = dic_var.get("ARROWSTT", 0)
        self.chance = dic_var.get("2CHANCE", True)

        if self.nArrowsTt != 0 and self.ayudas == 0:
            self.nArrowsTt = 0

        self.with_takeback = dic_var.get("TAKEBACK", True)

        self.tutor_con_flechas = self.nArrowsTt > 0 and self.ayudas > 0
        self.tutor_book = Books.BookGame(Code.tbook)

        mx = max(self.thoughtOp, self.thoughtTt)
        if mx > -1:
            self.alturaRotulo3(n_box_height)

        dr = dic_var["RIVAL"]
        rival = dr["CM"]

        if dr["TYPE"] == SelectEngines.ELO:
            r_t = 0
            r_p = rival.fixed_depth
            self.nAjustarFuerza = ADJUST_BETTER

        else:
            r_t = dr["ENGINE_TIME"] * 100  # Se guarda en decimas -> milesimas
            r_p = dr["ENGINE_DEPTH"]
            self.nAjustarFuerza = dic_var.get("AJUSTAR", ADJUST_BETTER)

        if not self.xrival:  # reiniciando is not None
            if r_t <= 0:
                r_t = None
            if r_p <= 0:
                r_p = None
            if r_t is None and r_p is None and not dic_var["WITHTIME"]:
                r_t = 1000
            self.xrival = self.procesador.creaGestorMotor(
                rival, r_t, r_p, self.nAjustarFuerza != ADJUST_BETTER)
            if self.nAjustarFuerza != ADJUST_BETTER:
                self.xrival.maximizaMultiPV()
        self.resign_limit = dic_var["RESIGN"]

        self.game.add_tag("Event", _("Play against an engine"))

        player = self.configuracion.nom_player()
        other = self.xrival.name
        w, b = (player, other) if self.is_human_side_white else (other, player)
        self.game.add_tag("White", w)
        self.game.add_tag("Black", b)

        self.siBookAjustarFuerza = self.nAjustarFuerza != ADJUST_BETTER

        self.xrival.is_white = self.is_engine_side_white

        self.siTiempo = dic_var["WITHTIME"]
        if self.siTiempo:
            self.maxSegundos = dic_var["MINUTES"] * 60.0
            self.segundosJugada = dic_var["SECONDS"]
            self.segExtra = dic_var.get("MINEXTRA", 0) * 60.0
            self.zeitnot = dic_var.get("ZEITNOT", 0)

            self.vtime = {
                WHITE: Util.Timer(self.maxSegundos),
                BLACK: Util.Timer(self.maxSegundos)
            }
            if self.segExtra:
                self.vtime[self.is_human_side_white].ponSegExtra(self.segExtra)

            time_control = "%d" % int(self.maxSegundos)
            if self.segundosJugada:
                time_control += "+%d" % self.segundosJugada
            self.game.add_tag("TimeControl", time_control)
            if self.segExtra:
                self.game.add_tag(
                    "TimeExtra" +
                    "White" if self.is_human_side_white else "Black",
                    "%d" % self.segExtra)

        self.pon_toolbar()

        self.main_window.activaJuego(True, self.siTiempo)

        self.set_dispatcher(self.mueve_humano)
        self.setposition(self.game.last_position)
        self.mostrarIndicador(True)
        if self.ayudas_iniciales:
            self.ponAyudasEM()
        else:
            self.quitaAyudas(siQuitarAtras=False)
        self.ponPiezasAbajo(is_white)

        self.ponRotuloBasico()
        self.ponRotulo2("")

        if self.nAjustarFuerza != ADJUST_BETTER:
            pers = Personalidades.Personalidades(None, self.configuracion)
            label = pers.label(self.nAjustarFuerza)
            if label:
                self.game.add_tag("Strength", label)

        self.ponCapInfoPorDefecto()

        self.pgnRefresh(True)

        rival = self.xrival.name
        player = self.configuracion.x_player
        bl, ng = player, rival
        if self.is_engine_side_white:
            bl, ng = ng, bl

        active_clock = max(self.thoughtOp, self.thoughtTt) > -1

        if self.siTiempo:
            tp_bl = self.vtime[True].etiqueta()
            tp_ng = self.vtime[False].etiqueta()
            self.main_window.ponDatosReloj(bl, tp_bl, ng, tp_ng)
            active_clock = True
            self.refresh()
        else:
            self.main_window.base.change_player_labels(bl, ng)

        if active_clock:
            self.main_window.start_clock(self.set_clock, 400)

        self.main_window.set_notify(self.mueve_rival_base)

        self.is_analyzed_by_tutor = False

        self.dgt_setposition()