Exemplo n.º 1
0
    def mueveHumano(self, desde, hasta, coronacion=None):
        jgSel = self.checkMueveHumano(desde, hasta, coronacion)
        if not jgSel:
            return False

        if self.is_guided:
            pvSel = jgSel.movimiento().lower()
            pvObj = self.liPV[self.posPV]
            li = pvObj.split("-")
            if li[0] != pvSel:
                if pvSel in li:
                    pgn = Partida.pv_pgn(jgSel.posicionBase.fen(), pvObj)
                    self.show_mens(
                        _("You have selected one correct move, but the line use %s"
                          ) % pgn)
                    self.ponFlechaSC(pvObj[:2], pvObj[2:4])
                    self.ayuda(False)
                else:
                    self.show_error(_("Wrong move"))
                    self.warnings += 1
                    self.ponWarnings()
                self.sigueHumano()
                return False
            self.posPV += 1
        else:
            fen = self.partida.ultPosicion.fen()
            pv = jgSel.movimiento().lower()
            b_wdl, b_dtz = self.t4.wdl_dtz(fen)
            m_wdl, m_dtz = self.t4.wd_move(fen, pv)
            if b_wdl != m_wdl:
                self.show_error(_("Wrong move"))
                self.warnings += 1
                self.ponWarnings()
                self.ponPosicion(self.partida.ultPosicion)
                self.sigueHumano()
                return False
            if b_wdl == 2:
                numjug = self.partida.ultPosicion.jugadas
                if b_dtz % 2 == 1:
                    b_dtz += 1
                numjug += b_dtz / 2
                if numjug >= 50:
                    mens = "%s\n%s" % (_("Wrong move"),
                                       _("Draw according to the 50 move rule"))
                    self.show_error(mens)
                    QTUtil2.mensajeTemporal(self.pantalla, mens, 2)
                    self.warnings += 1
                    self.ponWarnings()
                    self.ponPosicion(self.partida.ultPosicion)
                    self.sigueHumano()
                    return False

        self.movimientosPiezas(jgSel.liMovs)

        self.masJugada(jgSel, True)
        self.error = ""

        self.siguienteJugada()
        return True
Exemplo n.º 2
0
    def mueveHumano(self, desde, hasta, coronacion=None):
        jgSel = self.checkMueveHumano(desde, hasta, coronacion)
        if not jgSel:
            return False

        pvSel = jgSel.movimiento().lower()
        pvObj = self.liPV[self.posPV]
        li = pvObj.split("-")
        if li[0] != pvSel:

            if pvSel in li:
                pgn = Partida.pv_pgn(jgSel.posicionBase.fen(), pvObj)
                mens = _(
                    "You have selected one correct move, but the line use %s"
                ) % pgn
                QTUtil2.mensajeTemporal(self.pantalla,
                                        mens,
                                        4,
                                        posicion="tb",
                                        background="#C3D6E8")
                self.ponFlechaSC(pvObj[:2], pvObj[2:4])
                self.ayuda(False)
            else:
                pgn = Partida.pv_pgn(jgSel.posicionBase.fen(), pvSel)
                mens = _("Wrong move")
                QTUtil2.mensajeTemporal(self.pantalla,
                                        mens,
                                        4,
                                        background="#FF9B00",
                                        posicion="tb")
                self.warnings += 1
                self.ponWarnings()
            self.sigueHumano()
            return False
        self.posPV += 1

        self.movimientosPiezas(jgSel.liMovs)

        self.masJugada(jgSel, True)
        self.error = ""

        self.siguienteJugada()
        return True
Exemplo n.º 3
0
    def hechaJugada(self, jg):
        self.tablero.desactivaTodas()
        self.jg = jg

        self.ponToolbar(self.seguir, self.analizar)

        donePV = jg.movimiento().lower()
        dicResults = self.alm.dicResults

        mens = "<h2>%s</h2><br>" % self.alm.name

        mens += '<table><tr><th>%s</th><th>%s</th></tr>' % (_("Move"),
                                                            _("Points"))
        mx = 0
        ok = False
        stylePV = ' style="color:red;"'
        for pv, points in dicResults.iteritems():
            if donePV == pv.lower():
                ok = True
                mas = stylePV
            else:
                mas = ""
            pgn = Partida.pv_pgn(self.alm.fen, pv)
            mens += '<tr%s><td align="center">%s</td><td align="right">%d</td></tr>' % (
                mas, pgn, points)
            if points > mx:
                mx = points
        if not ok:
            pgn = Partida.pv_pgn(self.alm.fen, donePV)
            mens += '<tr%s><td align="center">%s</td><td align="right">%d</td></tr>' % (
                stylePV, pgn, 0)
        mens += "</table>"

        self.alm.donePV = donePV
        self.alm.puntos = dicResults.get(donePV, 0)
        self.alm.total = mx

        mens += "<br><h2>%s: %d/%d</h2>" % (_("Points"), self.alm.puntos,
                                            self.alm.total)
        self.lbJuego.ponTexto(mens)

        self.workmap.winAim(donePV)
Exemplo n.º 4
0
    def hechaJugada(self, jg):
        self.tablero.desactivaTodas()
        self.jg = jg

        self.ponToolbar(self.seguir, self.analizar)

        donePV = jg.movimiento().lower()
        dicResults = self.alm.dicResults

        mens = "<h2>%s</h2><br>" % self.alm.name

        mens += '<table><tr><th>%s</th><th>%s</th></tr>'%(_("Move"), _("Points"))
        mx = 0
        ok = False
        stylePV = ' style="color:red;"'
        for pv, points in dicResults.iteritems():
            if donePV == pv.lower():
                ok = True
                mas = stylePV
            else:
                mas = ""
            pgn = Partida.pv_pgn(self.alm.fen,pv)
            mens += '<tr%s><td align="center">%s</td><td align="right">%d</td></tr>'%(mas,pgn,points)
            if points > mx:
                mx = points
        if not ok:
            pgn = Partida.pv_pgn(self.alm.fen,donePV)
            mens += '<tr%s><td align="center">%s</td><td align="right">%d</td></tr>'%(stylePV,pgn,0)
        mens += "</table>"

        self.alm.donePV = donePV
        self.alm.puntos = dicResults.get(donePV,0)
        self.alm.total = mx

        mens += "<br><h2>%s: %d/%d</h2>"%(_("Points"), self.alm.puntos, self.alm.total)
        self.lbJuego.ponTexto(mens)

        self.workmap.winAim(donePV)
Exemplo n.º 5
0
    def gridBotonDerecho(self, grid, fila, columna, modificadores):
        alm = self.liMoves[fila]["alm"]
        if not alm or len(alm.LIALMS) < 2:
            return

        menu = QTVarios.LCMenu(self)
        rondo = QTVarios.rondoPuntos()
        for ralm in alm.LIALMS:
            menu.opcion(ralm, Partida.pv_pgn(None, ralm.PV), rondo.otro())
            menu.separador()
        resp = menu.lanza()
        if resp:
            self.liMoves[fila]["pv"] = resp.PV
            self.cambiaInfoMove()
Exemplo n.º 6
0
    def next_task(self):
        state, task = self.get_task()
        if state == PLAYING:
            opening, win = task
            pgn = Partida.pv_pgn(None, opening.pv)

            litxt = [_("To play a complete game.")]
            if opening.label:
                litxt.append(_("With the opening: %s.") % opening.label)
                litxt.append(pgn)
            if win:
                litxt.append(_("You must win to pass this step."))
            else:
                litxt.append(_("You don't need to win to pass this step."))
            return "<br>".join(litxt), "#597272"
        elif state == ENDING:
            return _("You must solve an endgame puzzle"), "Brown"
        else:
            return _("You must solve tactics puzzles to advance."), "#807C6E"
Exemplo n.º 7
0
    def mueveHumano(self, desde, hasta, coronacion=None):
        jgSel = self.checkMueveHumano(desde, hasta, coronacion)
        if not jgSel:
            return False

        if self.is_guided:
            pvSel = jgSel.movimiento().lower()
            pvObj = self.liPV[self.posPV]
            li = pvObj.split("-")
            if li[0] != pvSel:
                if pvSel in li:
                    pgn = Partida.pv_pgn(jgSel.posicionBase.fen(), pvObj)
                    QTUtil2.mensajeTemporal(
                        self.pantalla,
                        _("You have selected one correct move, but the line use %s"
                          ) % pgn, 4)
                else:
                    QTUtil2.mensajeTemporal(self.pantalla, _("Wrong move"), 2)
                    self.warnings += 1
                    self.ponWarnings()
                self.sigueHumano()
                return False
            self.posPV += 1
        else:
            fen = self.partida.ultPosicion.fen()
            pv = jgSel.movimiento().lower()
            b_wdl, b_dtz = self.t4.wdl_dtz(fen)
            m_wdl, m_dtz = self.t4.wd_move(fen, pv)
            if b_wdl != m_wdl:
                QTUtil2.mensajeTemporal(self.pantalla, _("Wrong move"), 2)
                self.warnings += 1
                self.ponWarnings()
                self.ponPosicion(self.partida.ultPosicion)
                self.sigueHumano()
                return False

        self.movimientosPiezas(jgSel.liMovs)

        self.masJugada(jgSel, True)
        self.error = ""

        self.siguienteJugada()
        return True