예제 #1
0
    def eligeJugadaRival(self):

        if self.jugContrario == "su":
            resp = PantallaBooks.eligeJugadaBooks(
                self.pantalla, self.listaJugadas,
                self.partida.ultPosicion.siBlancas)
        elif self.jugContrario == "mp":
            resp = self.listaJugadas[0][0], self.listaJugadas[0][
                1], self.listaJugadas[0][2]
            nmax = self.listaJugadas[0][4]
            for desde, hasta, coronacion, pgn, peso in self.listaJugadas:
                if peso > nmax:
                    resp = desde, hasta, coronacion
                    nmax = peso
        elif self.jugContrario == "au":
            pos = random.randint(0, len(self.listaJugadas) - 1)
            resp = self.listaJugadas[pos][0], self.listaJugadas[pos][
                1], self.listaJugadas[pos][2]
        else:
            li = [int(x[4] * 100000) for x in self.listaJugadas]
            t = sum(li)
            num = random.randint(1, t)
            pos = 0
            t = 0
            for n, x in enumerate(li):
                t += x
                if num <= t:
                    pos = n
                    break
            resp = self.listaJugadas[pos][0], self.listaJugadas[pos][
                1], self.listaJugadas[pos][2]

        return resp
예제 #2
0
    def eligeJugadaRival(self):

        if self.jugContrario == "su":
            resp = PantallaBooks.eligeJugadaBooks(self.pantalla, self.listaJugadas, self.partida.ultPosicion.siBlancas)
        elif self.jugContrario == "mp":
            resp = self.listaJugadas[0][0], self.listaJugadas[0][1], self.listaJugadas[0][2]
            nmax = self.listaJugadas[0][4]
            for desde, hasta, coronacion, pgn, peso in self.listaJugadas:
                if peso > nmax:
                    resp = desde, hasta, coronacion
                    nmax = peso
        elif self.jugContrario == "au":
            pos = random.randint(0, len(self.listaJugadas) - 1)
            resp = self.listaJugadas[pos][0], self.listaJugadas[pos][1], self.listaJugadas[pos][2]
        else:
            li = [int(x[4] * 100000) for x in self.listaJugadas]
            t = sum(li)
            num = random.randint(1, t)
            pos = 0
            t = 0
            for n, x in enumerate(li):
                t += x
                if num <= t:
                    pos = n
                    break
            resp = self.listaJugadas[pos][0], self.listaJugadas[pos][1], self.listaJugadas[pos][2]

        return resp
예제 #3
0
    def ayuda(self):
        if self.siJuegaHumano:
            self.paraHumano()
        else:
            return
        self.tablero.ponPosicion(self.partida.ultPosicion)

        main = self.listaJugadas[0][4]
        saux = False
        paux = 0

        for n, jug in enumerate(self.listaJugadas):
            opacity = p = jug[4]
            simain = p == main
            if not simain:
                if not saux:
                    paux = p
                    saux = True
                opacity = 1.0 if p == paux else max(p, 0.25)
            self.tablero.creaFlechaMulti(jug[0] + jug[1],
                                         siMain=simain,
                                         opacidad=opacity)

        resp = PantallaBooks.eligeJugadaBooks(self.pantalla,
                                              self.listaJugadas,
                                              self.siJugamosConBlancas,
                                              siSelectSiempre=False)
        self.tablero.quitaFlechas()
        if resp is None:
            self.sumar_aciertos = False
            self.sigueHumano()
            return

        desde, hasta, coronacion = resp
        siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde,
                                             hasta, coronacion)
        self.movimientos += 1

        self.ponRotulo2(self.txtAciertos())

        self.movimientosPiezas(jg.liMovs)

        self.partida.ultPosicion = jg.posicion
        self.masJugada(jg, True)
        self.error = ""
        self.sumar_aciertos = True
        self.siguienteJugada()
예제 #4
0
    def eligeJugadaBookBase(self, book, bookRR):
        jugadas = self.partida.ultPosicion.jugadas
        if self.maxMoveBook:
            if self.maxMoveBook <= jugadas:
                return False, None, None, None
        fen = self.fenUltimo()

        if bookRR == "su":
            listaJugadas = book.miraListaJugadas(fen)
            if listaJugadas:
                resp = PantallaBooks.eligeJugadaBooks(self.pantalla, listaJugadas, self.partida.ultPosicion.siBlancas)
                return True, resp[0], resp[1], resp[2]
        else:
            pv = book.eligeJugadaTipo(fen, bookRR)
            if pv:
                return True, pv[:2], pv[2:4], pv[4:]

        return False, None, None, None
예제 #5
0
    def eligeJugadaBookBase(self, book, bookRR):
        jugadas = self.partida.ultPosicion.jugadas
        if self.maxMoveBook:
            if self.maxMoveBook <= jugadas:
                return False, None, None, None
        fen = self.fenUltimo()

        if bookRR == "su":
            listaJugadas = book.miraListaJugadas(fen)
            if listaJugadas:
                resp = PantallaBooks.eligeJugadaBooks(self.pantalla, listaJugadas, self.partida.ultPosicion.siBlancas)
                return True, resp[0], resp[1], resp[2]
        else:
            pv = book.eligeJugadaTipo(fen, bookRR)
            if pv:
                return True, pv[:2], pv[2:4], pv[4:]

        return False, None, None, None
예제 #6
0
    def mueveHumano(self, desde, hasta, coronacion=None):
        jg = self.checkMueveHumano(desde, hasta, coronacion)
        if not jg:
            return False

        siEncontrado = False
        actpeso = 0
        for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
            if desde == jdesde and hasta == jhasta and jg.coronacion == jcoronacion:
                siEncontrado = True
                actpeso = peso
                break

        if siEncontrado and self.jugJugador:  # si el jugador busca elegir el maximo
            maxpeso = 0.0
            for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
                if peso > maxpeso:
                    maxpeso = peso
            if actpeso < maxpeso:
                siEncontrado = False

        if not siEncontrado:
            self.tablero.ponPosicion(self.partida.ultPosicion)

            main = self.listaJugadas[0][4]
            saux = False
            paux = 0

            for n, jug in enumerate(self.listaJugadas):
                opacity = p = jug[4]
                simain = p == main
                if not simain:
                    if not saux:
                        paux = p
                        saux = True
                    opacity = 1.0 if p == paux else max(p, 0.25)
                self.tablero.creaFlechaMulti(jug[0] + jug[1],
                                             siMain=simain,
                                             opacidad=opacity)

            resp = PantallaBooks.eligeJugadaBooks(self.pantalla,
                                                  self.listaJugadas,
                                                  self.siJugamosConBlancas,
                                                  siSelectSiempre=False)
            self.tablero.quitaFlechas()
            if resp is None:
                self.sumar_aciertos = False
                self.sigueHumano()
                return False

            desde, hasta, coronacion = resp
            siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion,
                                                 desde, hasta, coronacion)
        else:
            if self.sumar_aciertos:
                self.aciertos += actpeso
        self.movimientos += 1

        self.ponRotulo2(self.txtAciertos())

        self.movimientosPiezas(jg.liMovs)

        self.partida.ultPosicion = jg.posicion
        self.masJugada(jg, True)
        self.error = ""
        self.sumar_aciertos = True
        self.siguienteJugada()
        return True
예제 #7
0
    def mueveHumano(self, desde, hasta, coronacion=None):

        if self.siJuegaHumano:
            self.paraHumano()
        else:
            self.sigueHumano()
            return False

        # Peon coronando
        if not coronacion and self.partida.ultPosicion.siPeonCoronando(desde, hasta):
            coronacion = self.tablero.peonCoronando(self.partida.ultPosicion.siBlancas)
            if coronacion is None:
                self.sigueHumano()
                return False

        siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde, hasta, coronacion)

        if not siBien:
            self.sigueHumano()
            self.error = mens
            return False

        siEncontrado = False
        actpeso = 0
        if coronacion is None:
            coronacion = ""
        for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
            if desde == jdesde and hasta == jhasta and coronacion == jcoronacion:
                siEncontrado = True
                actpeso = peso
                break

        if siEncontrado and self.jugJugador:  # si el jugador busca elegir el maximo
            maxpeso = 0.0
            for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
                if peso > maxpeso:
                    maxpeso = peso
            if actpeso < maxpeso:
                siEncontrado = False

        if not siEncontrado:
            self.tablero.ponPosicion(self.partida.ultPosicion)
            self.tablero.activaColor(self.siJugamosConBlancas)
            resp = PantallaBooks.eligeJugadaBooks(self.pantalla, self.listaJugadas, self.siJugamosConBlancas)
            if resp is None:
                resp = self.listaJugadas[0][:3]

            desde, hasta, coronacion = resp

            siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde, hasta, coronacion)
        else:
            self.aciertos += actpeso
        self.movimientos += 1

        self.ponRotulo2(self.txtAciertos())

        self.movimientosPiezas(jg.liMovs)

        self.partida.ultPosicion = jg.posicion
        self.masJugada(jg, True)
        self.error = ""
        self.siguienteJugada()
        return True
예제 #8
0
    def mueveHumano(self, desde, hasta, coronacion=None):

        if self.siJuegaHumano:
            self.paraHumano()
        else:
            self.sigueHumano()
            return False

        # Peon coronando
        if not coronacion and self.partida.ultPosicion.siPeonCoronando(
                desde, hasta):
            coronacion = self.tablero.peonCoronando(
                self.partida.ultPosicion.siBlancas)
            if coronacion is None:
                self.sigueHumano()
                return False

        siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde,
                                             hasta, coronacion)

        if not siBien:
            self.sigueHumano()
            self.error = mens
            return False

        siEncontrado = False
        actpeso = 0
        if coronacion is None:
            coronacion = ""
        for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
            if desde == jdesde and hasta == jhasta and coronacion == jcoronacion:
                siEncontrado = True
                actpeso = peso
                break

        if siEncontrado and self.jugJugador:  # si el jugador busca elegir el maximo
            maxpeso = 0.0
            for jdesde, jhasta, jcoronacion, jpgn, peso in self.listaJugadas:
                if peso > maxpeso:
                    maxpeso = peso
            if actpeso < maxpeso:
                siEncontrado = False

        if not siEncontrado:
            self.tablero.ponPosicion(self.partida.ultPosicion)
            self.tablero.activaColor(self.siJugamosConBlancas)
            resp = PantallaBooks.eligeJugadaBooks(self.pantalla,
                                                  self.listaJugadas,
                                                  self.siJugamosConBlancas)
            if resp is None:
                resp = self.listaJugadas[0][:3]

            desde, hasta, coronacion = resp

            siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion,
                                                 desde, hasta, coronacion)
        else:
            self.aciertos += actpeso
        self.movimientos += 1

        self.ponRotulo2(self.txtAciertos())

        self.movimientosPiezas(jg.liMovs)

        self.partida.ultPosicion = jg.posicion
        self.masJugada(jg, True)
        self.error = ""
        self.siguienteJugada()
        return True