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()
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()