Пример #1
0
    def restart(self, lost_points):
        change_game = self.expedition.add_try(False, self.tiempo, self.puntos)
        self.tiempo = 0.0
        licoment = []
        if lost_points:
            licoment.append(_("You have exceeded the limit of lost points."))

        if change_game:
            licoment.append(_("You have also exceeded the limit of tries, then you falls to the previous game."))
        elif lost_points:
            licoment.append(_("You must repeat the game from beginning."))
        if licoment:
            comentario = "\n".join(licoment)
            w = PantallaJuicio.MensajeF(self.pantalla, comentario)
            w.mostrar()
        return change_game
Пример #2
0
    def restart(self, lost_points):
        self.terminaNoContinuo()
        change_game = self.expedition.add_try(False, self.vtime, self.puntos)
        self.vtime = 0.0
        licoment = []
        if lost_points:
            licoment.append(_("You have exceeded the limit of lost points."))

        if change_game:
            licoment.append(_("You have exceeded the limit of tries, you will fall back to the previous."))
        elif lost_points:
            licoment.append(_("You must repeat the game from beginning."))
        if licoment:
            comment = "\n".join(licoment)
            w = PantallaJuicio.MensajeF(self.main_window, comment)
            w.mostrar()
        return change_game
Пример #3
0
    def mueveHumano(self, desde, hasta, coronacion=""):
        jgUsu = self.checkMueveHumano(desde, hasta, coronacion)
        if not jgUsu:
            return False

        self.tiempo += time.time() - self.iniTiempo

        jgObj = self.partidaObj.jugada(self.posJugadaObj)

        siAnalizaJuez = True
        if self.book:
            fen = self.fenUltimo()
            siBookUsu = self.book.compruebaHumano(fen, desde, hasta)
            siBookObj = self.book.compruebaHumano(fen, jgObj.desde,
                                                  jgObj.hasta)
            if siBookUsu and siBookObj:
                if jgObj.movimiento() != jgUsu.movimiento():
                    bmove = _("book move")
                    comentario = "%s: %s %s<br>%s: %s %s" % (
                        self.nombreObj, jgObj.pgnSP(), bmove,
                        self.configuracion.jugador, jgUsu.pgnSP(), bmove)
                    w = PantallaJuicio.MensajeF(self.pantalla, comentario)
                    w.mostrar()
                siAnalizaJuez = False
            else:
                siAnalizaJuez = True
                if not siBookObj:
                    self.book = None

        analisis = None
        comentario = None

        if siAnalizaJuez:
            um = QTUtil2.analizando(self.pantalla)
            mrm = self.analizaMinimo(3000)
            posicion = self.partida.ultPosicion

            rmUsu, nada = mrm.buscaRM(jgUsu.movimiento())
            rmObj, posObj = mrm.buscaRM(jgObj.movimiento())

            analisis = mrm, posObj
            um.final()

            w = PantallaJuicio.WJuicio(self, self.xanalyzer, self.nombreObj,
                                       posicion, mrm, rmObj, rmUsu, analisis)
            w.exec_()

            analisis = w.analisis
            dpts = w.difPuntos()
            self.puntos += dpts
            self.ponPuntos()

            comentarioUsu = " %s" % (rmUsu.abrTexto())
            comentarioObj = " %s" % (rmObj.abrTexto())

            comentarioPuntos = "%s = %d %+d %+d = %d" % (
                _("Points"), self.puntos - dpts, rmUsu.puntosABS(),
                -rmObj.puntosABS(), self.puntos)

            comentario = "%s: %s %s\n%s: %s %s\n%s" % (
                self.nombreObj,
                jgObj.pgnSP(), comentarioObj, self.configuracion.jugador,
                jgUsu.pgnSP(), comentarioUsu, comentarioPuntos)

        self.analizaFinal()

        self.masJugada(True, analisis, comentario)
        self.siguienteJugada()
        return True
Пример #4
0
    def mueve_humano(self, from_sq, to_sq, promotion=""):
        jgUsu = self.checkmueve_humano(from_sq, to_sq, promotion)
        if not jgUsu:
            return False

        self.vtime += time.time() - self.iniTiempo

        jgObj = self.partidaObj.move(self.posJugadaObj)

        siAnalizaJuez = True
        if self.book:
            fen = self.fenUltimo()
            siBookUsu = self.book.check_human(fen, from_sq, to_sq)
            siBookObj = self.book.check_human(fen, jgObj.from_sq, jgObj.to_sq)
            if siBookUsu and siBookObj:
                if jgObj.movimiento() != jgUsu.movimiento():
                    bmove = _("book move")
                    comment = "%s: %s %s<br>%s: %s %s" % (
                        self.nombreObj,
                        jgObj.pgn_translated(),
                        bmove,
                        self.configuracion.x_player,
                        jgUsu.pgn_translated(),
                        bmove,
                    )
                    w = PantallaJuicio.MensajeF(self.main_window, comment)
                    w.mostrar()
                siAnalizaJuez = False
            else:
                siAnalizaJuez = True
                if not siBookObj:
                    self.book = None

        analisis = None
        comment = None

        if siAnalizaJuez:
            um = QTUtil2.analizando(self.main_window)
            pvUsu = jgUsu.movimiento()
            pvObj = jgObj.movimiento()
            mrm = self.analizaMinimo(pvUsu, pvObj)
            position = self.game.last_position

            rmUsu, nada = mrm.buscaRM(pvUsu)
            rmObj, posObj = mrm.buscaRM(pvObj)

            analisis = mrm, posObj
            um.final()

            w = PantallaJuicio.WJuicio(self, self.xanalyzer, self.nombreObj, position, mrm, rmObj, rmUsu, analisis)
            w.exec_()

            analisis = w.analysis
            if w.siAnalisisCambiado:
                self.siSave = True
            dpts = w.difPuntos()
            self.puntos += dpts

            dptsMax = w.difPuntosMax()
            self.puntosMax += dptsMax

            comentarioUsu = " %s" % (rmUsu.abrTexto())
            comentarioObj = " %s" % (rmObj.abrTexto())

            comentarioPuntos = "%s = %d %+d %+d = %d" % (
                _("Points"),
                self.puntos - dpts,
                rmUsu.centipawns_abs(),
                -rmObj.centipawns_abs(),
                self.puntos,
            )
            comment = "%s: %s %s\n%s: %s %s\n%s" % (
                self.nombreObj,
                jgObj.pgn_translated(),
                comentarioObj,
                self.configuracion.x_player,
                jgUsu.pgn_translated(),
                comentarioUsu,
                comentarioPuntos,
            )
            self.ponPuntos()

        self.analizaFinal()

        self.add_move(True, analisis, comment)
        self.siguiente_jugada()
        return True
Пример #5
0
    def mueveHumano(self, desde, hasta, coronacion=""):
        jgUsu = self.checkMueveHumano(desde, hasta, coronacion)
        if not jgUsu:
            return False

        jgObj = self.partidaObj.jugada(self.posJugadaObj)

        analisis = None
        comentario = None

        siBookUsu = False
        siBookObj = False

        comentarioUsu = ""
        comentarioObj = ""
        comentarioPuntos = ""

        siAnalizaJuez = jgUsu.movimiento() != jgObj.movimiento()
        if self.book:
            fen = self.fenUltimo()
            siBookUsu = self.book.compruebaHumano(fen, desde, hasta)
            siBookObj = self.book.compruebaHumano(fen, jgObj.desde,
                                                  jgObj.hasta)
            if siBookUsu:
                comentarioUsu = _("book move")
            if siBookObj:
                comentarioObj = _("book move")
            if siBookUsu and siBookObj:
                if jgObj.movimiento() != jgUsu.movimiento():
                    # comentario = "%s: %s" % (_("Same book move"), jgObj.pgnSP())
                    # else:
                    bmove = _("book move")
                    comentario = "%s: %s %s\n%s: %s %s" % (
                        self.nombreObj, jgObj.pgnSP(), bmove,
                        self.configuracion.jugador, jgUsu.pgnSP(), bmove)
                    w = PantallaJuicio.MensajeF(self.pantalla, comentario)
                    w.mostrar()
                siAnalizaJuez = False
            else:
                if not siBookObj:
                    self.book = None

        if siAnalizaJuez:
            um = QTUtil2.analizando(self.pantalla)
            if not self.continueTt:
                self.analizaInicio()
            mrm = self.analizaMinimo(5000)
            posicion = self.partida.ultPosicion

            rmUsu, nada = mrm.buscaRM(jgUsu.movimiento())
            if rmUsu is None:
                self.analizaFinal()
                rmUsu = self.xtutor.valora(posicion, jgUsu.desde, jgUsu.hasta,
                                           jgUsu.coronacion)
                mrm.agregaRM(rmUsu)
                self.analizaInicio()

            rmObj, posObj = mrm.buscaRM(jgObj.movimiento())
            if rmObj is None:
                self.analizaFinal()
                rmObj = self.xtutor.valora(posicion, jgObj.desde, jgObj.hasta,
                                           jgObj.coronacion)
                posObj = mrm.agregaRM(rmObj)
                self.analizaInicio()

            analisis = mrm, posObj
            um.final()

            w = PantallaJuicio.WJuicio(self, self.xtutor, self.nombreObj,
                                       posicion, mrm, rmObj, rmUsu, analisis)
            w.exec_()

            analisis = w.analisis
            dpts = w.difPuntos()

            self.puntos += dpts
            self.ponPuntos()

            comentarioUsu += " %s" % (rmUsu.abrTexto())
            comentarioObj += " %s" % (rmObj.abrTexto())

            comentarioPuntos = "%s = %d %+d %+d = %d" % (
                _("Points"), self.puntos - dpts, rmUsu.puntosABS(),
                -rmObj.puntosABS(), self.puntos)

            comentario = "%s: %s %s\n%s: %s %s\n%s" % (
                self.nombreObj,
                jgObj.pgnSP(), comentarioObj, self.configuracion.jugador,
                jgUsu.pgnSP(), comentarioUsu, comentarioPuntos)

        self.analizaFinal()

        self.masJugada(True, comentario, analisis)
        self.siguienteJugada()
        return True
Пример #6
0
    def mueveHumano(self, desde, hasta, coronacion=None):
        jg = self.checkMueveHumano(desde, hasta, coronacion)
        if not jg:
            return False

        movUsu = jg.movimiento().lower()
        self.dbwashing.addTime(self.timekeeper.stop())

        jgObj = self.partidaObj.jugada(self.posJugadaObj)
        movObj = jgObj.movimiento().lower()
        if movUsu != movObj:
            lic = []
            if jgObj.analisis:
                mrmObj, posObj = jgObj.analisis
                rmObj = mrmObj.liMultiPV[posObj]
                lic.append("%s: %s (%s)" %
                           (_("Played previously"), jgObj.pgnSP(),
                            rmObj.abrTextoBase()))
                ptsObj = rmObj.puntosABS()
                rmUsu, posUsu = mrmObj.buscaRM(movUsu)
                if posUsu >= 0:
                    lic.append(
                        "%s: %s (%s)" %
                        (_("Played now"), jg.pgnSP(), rmUsu.abrTextoBase()))
                    ptsUsu = rmUsu.puntosABS()
                    if ptsUsu < ptsObj - 10:
                        lic[-1] += ' <span style="color:red"><b>%s</b></span>' % _(
                            "Bad move")
                        self.errores += 1
                        self.dbwashing.addHint()

                else:
                    lic.append("%s: %s (?) %s" %
                               (_("Played now"), jg.pgnSP(), _("Bad move")))
                    self.errores += 1
                    self.dbwashing.addHint()

            else:
                # Debe ser una jugada de libro para aceptarla
                fen = self.fenUltimo()
                siBookUsu = self.book.compruebaHumano(fen, desde, hasta)
                bmove = _("book move")
                lic.append("%s: %s (%s)" %
                           (_("Played previously"), jgObj.pgnSP(), bmove))
                if siBookUsu:
                    lic.append("%s: %s (%s)" %
                               (_("Played now"), jg.pgnSP(), bmove))
                else:
                    lic.append("%s: %s (?) %s" %
                               (_("Played now"), jg.pgnSP(), _("Bad move")))
                    self.errores += 1
                    self.dbwashing.addHint()

            comentario = "<br>".join(lic)
            w = PantallaJuicio.MensajeF(self.pantalla, comentario)
            w.mostrar()
            self.ponPosicion(jg.posicionBase)

        # Creamos un jg sin analisis
        siBien, self.error, jg = Jugada.dameJugada(self.partida.ultPosicion,
                                                   jgObj.desde, jgObj.hasta,
                                                   jgObj.coronacion)

        self.movimientosPiezas(jg.liMovs)
        self.partida.ultPosicion = jg.posicion
        self.masJugada(jg, True)
        self.posJugadaObj += 1
        if self.partida.numJugadas() == self.partidaObj.numJugadas():
            self.finPartida()

        else:
            self.error = ""
            self.siguienteJugada()
        return True
Пример #7
0
    def mueveHumano(self, desde, hasta, coronacion=""):
        jgUsu = self.checkMueveHumano(desde, hasta, coronacion)
        if not jgUsu:
            return False

        self.tiempo += time.time() - self.iniTiempo

        jgObj = self.partidaObj.jugada(self.posJugadaObj)
        fen = self.fenUltimo()

        siAnalizaJuez = True
        if self.book:
            siBookUsu = self.book.compruebaHumano(fen, desde, hasta)
            siBookObj = self.book.compruebaHumano(fen, jgObj.desde,
                                                  jgObj.hasta)
            if siBookUsu and siBookObj:
                if jgObj.movimiento() != jgUsu.movimiento():
                    bmove = _("book move")
                    comentario = "%s: %s %s<br>%s: %s %s" % (
                        self.nombreObj, jgObj.pgnSP(), bmove,
                        self.configuracion.jugador, jgUsu.pgnSP(), bmove)
                    w = PantallaJuicio.MensajeF(self.pantalla, comentario)
                    w.mostrar()
                siAnalizaJuez = False
            else:
                siAnalizaJuez = True
                if not siBookObj:
                    self.book = None

        analisis = None
        comentario = None

        if siAnalizaJuez:
            posicion = self.partida.ultPosicion
            saved = fen in self.dic_analysis
            if saved:
                rmObj, posObj, analisis, mrm = self.dic_analysis[fen]
            else:
                if self.continueTt:
                    um = QTUtil2.analizando(self.pantalla)
                    mrm = self.analizaMinimo(
                        5000) if self.continueTt else self.mrm
                    um.final()
                else:
                    self.analizaNoContinuoFinal()
                    mrm = self.mrm
                rmObj, posObj = mrm.buscaRM(jgObj.movimiento())
                analisis = mrm, posObj
                self.dic_analysis[fen] = [rmObj, posObj, analisis, mrm]

            rmUsu, posUsu = mrm.buscaRM(jgUsu.movimiento())
            if rmUsu is None:
                um = QTUtil2.analizando(self.pantalla)
                self.analizaFinal()
                rmUsu = self.xanalyzer.valora(posicion, desde, hasta,
                                              coronacion)
                mrm.agregaRM(rmUsu)
                self.analizaInicio()
                um.final()

            w = PantallaJuicio.WJuicio(self,
                                       self.xanalyzer,
                                       self.nombreObj,
                                       posicion,
                                       mrm,
                                       rmObj,
                                       rmUsu,
                                       analisis,
                                       siCompetitivo=False)
            w.exec_()

            if not saved:
                analisis = w.analisis
                self.dic_analysis[fen][2] = analisis

            dpts = w.difPuntos()
            self.puntos += dpts
            self.ponPuntos()

            if posUsu != posObj:
                comentarioUsu = " %s" % (rmUsu.abrTexto())
                comentarioObj = " %s" % (rmObj.abrTexto())

                comentarioPuntos = "%s = %d %+d %+d = %d" % (
                    _("Points"), self.puntos - dpts, rmUsu.puntosABS(),
                    -rmObj.puntosABS(), self.puntos)
                comentario = "%s: %s %s\n%s: %s %s\n%s" % (
                    self.nombreObj,
                    jgObj.pgnSP(), comentarioObj, self.configuracion.jugador,
                    jgUsu.pgnSP(), comentarioUsu, comentarioPuntos)
        if not self.continueTt:
            self.terminaNoContinuo()

        self.analizaFinal()

        self.masJugada(True, analisis, comentario)

        self.siguienteJugada()
        return True
Пример #8
0
    def mueve_humano(self, from_sq, to_sq, promotion=""):
        jgUsu = self.checkmueve_humano(from_sq, to_sq, promotion)
        if not jgUsu:
            return False

        jgObj = self.partidaObj.move(self.posJugadaObj)

        analisis = None
        comment = None

        comentarioUsu = ""
        comentarioObj = ""

        siAnalizaJuez = jgUsu.movimiento() != jgObj.movimiento()
        if self.book:
            fen = self.fenUltimo()
            siBookUsu = self.book.check_human(fen, from_sq, to_sq)
            siBookObj = self.book.check_human(fen, jgObj.from_sq, jgObj.to_sq)
            if siBookUsu:
                comentarioUsu = _("book move")
            if siBookObj:
                comentarioObj = _("book move")
            if siBookUsu and siBookObj:
                if jgObj.movimiento() != jgUsu.movimiento():
                    # comment = "%s: %s" % (_("Same book move"), jgObj.pgn_translated())
                    # else:
                    bmove = _("book move")
                    comment = "%s: %s %s\n%s: %s %s" % (
                        self.nombreObj,
                        jgObj.pgn_translated(),
                        bmove,
                        self.configuracion.x_player,
                        jgUsu.pgn_translated(),
                        bmove,
                    )
                    w = PantallaJuicio.MensajeF(self.main_window, comment)
                    w.mostrar()
                siAnalizaJuez = False
            else:
                if not siBookObj:
                    self.book = None

        if siAnalizaJuez:
            um = QTUtil2.analizando(self.main_window)
            if not self.continueTt:
                self.analizaInicio()
            mrm = self.analizaMinimo(5000)
            position = self.game.last_position

            rmUsu, nada = mrm.buscaRM(jgUsu.movimiento())
            if rmUsu is None:
                self.analizaFinal()
                rmUsu = self.xtutor.valora(position, jgUsu.from_sq,
                                           jgUsu.to_sq, jgUsu.promotion)
                mrm.agregaRM(rmUsu)
                self.analizaInicio()

            rmObj, posObj = mrm.buscaRM(jgObj.movimiento())
            if rmObj is None:
                self.analizaFinal()
                rmObj = self.xtutor.valora(position, jgObj.from_sq,
                                           jgObj.to_sq, jgObj.promotion)
                posObj = mrm.agregaRM(rmObj)
                self.analizaInicio()

            analisis = mrm, posObj
            um.final()

            w = PantallaJuicio.WJuicio(self, self.xtutor, self.nombreObj,
                                       position, mrm, rmObj, rmUsu, analisis)
            w.exec_()

            analisis = w.analysis
            dpts = w.difPuntos()

            self.puntos += dpts
            self.ponPuntos()

            comentarioUsu += " %s" % (rmUsu.abrTexto())
            comentarioObj += " %s" % (rmObj.abrTexto())

            comentarioPuntos = "%s = %d %+d %+d = %d" % (
                _("Points"),
                self.puntos - dpts,
                rmUsu.centipawns_abs(),
                -rmObj.centipawns_abs(),
                self.puntos,
            )

            comment = "%s: %s %s\n%s: %s %s\n%s" % (
                self.nombreObj,
                jgObj.pgn_translated(),
                comentarioObj,
                self.configuracion.x_player,
                jgUsu.pgn_translated(),
                comentarioUsu,
                comentarioPuntos,
            )

        self.analizaFinal()

        self.add_move(True, comment, analisis)
        self.siguiente_jugada()
        return True
Пример #9
0
    def mueve_humano(self, from_sq, to_sq, promotion=""):
        jgUsu = self.checkmueve_humano(from_sq, to_sq, promotion)
        if not jgUsu:
            return False

        self.vtime += time.time() - self.iniTiempo

        jgObj = self.partidaObj.move(self.posJugadaObj)
        fen = self.fenUltimo()

        siAnalizaJuez = True
        if self.book:
            siBookUsu = self.book.check_human(fen, from_sq, to_sq)
            siBookObj = self.book.check_human(fen, jgObj.from_sq, jgObj.to_sq)
            if siBookUsu and siBookObj:
                if jgObj.movimiento() != jgUsu.movimiento():
                    bmove = _("book move")
                    comment = "%s: %s %s<br>%s: %s %s" % (
                        self.nombreObj,
                        jgObj.pgn_translated(),
                        bmove,
                        self.configuracion.x_player,
                        jgUsu.pgn_translated(),
                        bmove,
                    )
                    w = PantallaJuicio.MensajeF(self.main_window, comment)
                    w.mostrar()
                siAnalizaJuez = False
            else:
                siAnalizaJuez = True
                if not siBookObj:
                    self.book = None

        analisis = None
        comment = None

        if siAnalizaJuez:
            position = self.game.last_position
            saved = fen in self.dic_analysis
            if saved:
                rmObj, posObj, analisis, mrm = self.dic_analysis[fen]
            else:
                if self.continueTt:
                    um = QTUtil2.analizando(self.main_window)
                    mrm = self.analizaMinimo(5000) if self.continueTt else self.mrm
                    um.final()
                else:
                    self.analizaNoContinuoFinal()
                    mrm = self.mrm
                rmObj, posObj = mrm.buscaRM(jgObj.movimiento())
                analisis = mrm, posObj
                self.dic_analysis[fen] = [rmObj, posObj, analisis, mrm]

            rmUsu, posUsu = mrm.buscaRM(jgUsu.movimiento())
            if rmUsu is None:
                um = QTUtil2.analizando(self.main_window)
                self.analizaFinal()
                rmUsu = self.xanalyzer.valora(position, from_sq, to_sq, promotion)
                mrm.agregaRM(rmUsu)
                self.analizaInicio()
                um.final()

            w = PantallaJuicio.WJuicio(
                self, self.xanalyzer, self.nombreObj, position, mrm, rmObj, rmUsu, analisis, siCompetitivo=False
            )
            w.exec_()

            if not saved:
                analisis = w.analysis
                self.dic_analysis[fen][2] = analisis

            dpts = w.difPuntos()
            self.puntos += dpts
            self.ponPuntos()

            if posUsu != posObj:
                comentarioUsu = " %s" % (rmUsu.abrTexto())
                comentarioObj = " %s" % (rmObj.abrTexto())

                comentarioPuntos = "%s = %d %+d %+d = %d" % (
                    _("Points"),
                    self.puntos - dpts,
                    rmUsu.centipawns_abs(),
                    -rmObj.centipawns_abs(),
                    self.puntos,
                )
                comment = "%s: %s %s\n%s: %s %s\n%s" % (
                    self.nombreObj,
                    jgObj.pgn_translated(),
                    comentarioObj,
                    self.configuracion.x_player,
                    jgUsu.pgn_translated(),
                    comentarioUsu,
                    comentarioPuntos,
                )
        if not self.continueTt:
            self.terminaNoContinuo()

        self.analizaFinal()

        self.add_move(True, analisis, comment)

        self.siguiente_jugada()
        return True
Пример #10
0
    def mueve_humano(self, from_sq, to_sq, promotion=None):
        move = self.checkmueve_humano(from_sq, to_sq, promotion)
        if not move:
            return False

        movUsu = move.movimiento().lower()
        self.dbwashing.add_time(self.timekeeper.stop())

        jgObj = self.partidaObj.move(self.posJugadaObj)
        movObj = jgObj.movimiento().lower()
        if movUsu != movObj:
            lic = []
            if jgObj.analysis:
                mrmObj, posObj = jgObj.analysis
                rmObj = mrmObj.li_rm[posObj]
                lic.append("%s: %s (%s)" %
                           (_("Played previously"), jgObj.pgn_translated(),
                            rmObj.abrTextoBase()))
                ptsObj = rmObj.centipawns_abs()
                rmUsu, posUsu = mrmObj.buscaRM(movUsu)
                if posUsu >= 0:
                    lic.append("%s: %s (%s)" %
                               (_("Played now"), move.pgn_translated(),
                                rmUsu.abrTextoBase()))
                    ptsUsu = rmUsu.centipawns_abs()
                    if ptsUsu < ptsObj - 10:
                        lic[-1] += ' <span style="color:red"><b>%s</b></span>' % _(
                            "Bad move")
                        self.errores += 1
                        self.dbwashing.add_hint()

                else:
                    lic.append("%s: %s (?) %s" %
                               (_("Played now"), move.pgn_translated(),
                                _("Bad move")))
                    self.errores += 1
                    self.dbwashing.add_hint()

            else:
                # Debe ser una move de libro para aceptarla
                fen = self.fenUltimo()
                siBookUsu = self.book.check_human(fen, from_sq, to_sq)
                bmove = _("book move")
                lic.append(
                    "%s: %s (%s)" %
                    (_("Played previously"), jgObj.pgn_translated(), bmove))
                if siBookUsu:
                    lic.append("%s: %s (%s)" %
                               (_("Played now"), move.pgn_translated(), bmove))
                else:
                    lic.append("%s: %s (?) %s" %
                               (_("Played now"), move.pgn_translated(),
                                _("Bad move")))
                    self.errores += 1
                    self.dbwashing.add_hint()

            comment = "<br>".join(lic)
            w = PantallaJuicio.MensajeF(self.main_window, comment)
            w.mostrar()
            self.setposition(move.position_before)

        # Creamos un move sin analisis
        siBien, self.error, move = Move.dameJugada(self.game,
                                                   self.game.last_position,
                                                   jgObj.from_sq, jgObj.to_sq,
                                                   jgObj.promotion)

        self.move_the_pieces(move.liMovs)
        self.add_move(move, True)
        self.posJugadaObj += 1
        if len(self.game) == self.partidaObj.num_moves():
            self.finPartida()

        else:
            self.error = ""
            self.siguiente_jugada()
        return True