def tw_utilidades(self): menu = QTVarios.LCMenu(self) ico = Iconos.PuntoAzul() icoT = Iconos.Tacticas() menu.separador() menu1 = menu.submenu(_("Polyglot book"), ico) menu1.opcion("crear", _("Create a new book"), ico) menu1.separador() menu1.opcion("unir", _("Merge two books in one"), ico) menu.separador() menu.opcion("crearTactic", _("Create tactics training"), icoT) # Genera fichero de tacticas con todos los movimientos incluso desde el principio # menu.separador() # menu.opcion( "masivo", _( "Mass analysis" ), icoN ) # menu.separador() # eti = _( "Play like a grandmaster" ) # menu.opcion( "gm", _X( _('Create training to %1'), eti ), Iconos.GranMaestro() ) resp = menu.lanza() if resp: if resp == "crear": PantallaBooks.polyglotCrear(self) elif resp == "unir": PantallaBooks.polyglotUnir(self) elif resp == "crearTactic": self.crearTactic()
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
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
def entrenaBooks(self): w = PantallaBooks.WBooks(self.procesador) if w.exec_() and w.libro: self.procesador.tipoJuego = kJugBooks self.procesador.estado = kJugando self.procesador.gestor = GestorBooks.GestorBooks(self.procesador) self.procesador.gestor.inicio(w.libro, w.siBlancas, w.jugContrario, w.jugJugador)
def utilidades(self): menu = QTVarios.LCMenu(self) ico = Iconos.PuntoAzul() icoV = Iconos.PuntoVerde() icoN = Iconos.PuntoNaranja() icoT = Iconos.Tacticas() menu1 = menu.submenu(_("Polyglot book"), ico) menu1.opcion("crear", _("Create a new book"), ico) menu1.opcion("unir", _("Merge two books in one"), ico) menu.separador() menu.opcion( "crearTactic", _("Create tactics training"), icoT ) # Genera fichero de tacticas con todos los movimientos incluso desde el principio if "FEN" in self.liOrdenClaves: menu.separador() menu.opcion("crearFNS", _("List of FENs"), icoV) menu.separador() menu.opcion("masivo", _("Mass analysis"), icoN) menu.separador() eti = _("Play like a grandmaster") menu.opcion("gm", _X(_('Create training to %1'), eti), Iconos.GranMaestro()) resp = menu.lanza() if resp: if resp == "crear": PantallaBooks.polyglotCrear(self) elif resp == "unir": PantallaBooks.polyglotUnir(self) elif resp == "crearFNS": self.crearFNS() elif resp == "crearTactic": self.crearTactic() elif resp == "masivo": self.masivo() elif resp == "gm": self.gm()
def pgnInformacion(self): posJugada, jg = self.jugadaActiva() if jg: fen = jg.posicionBase.fen() lista = self.libro.miraListaJugadas(fen) siEditar = True if len(lista) > 0: resp = PantallaBooks.saltaJugadaBooks(self, lista, jg) if resp is None: return siEditar = resp[0] is None if siEditar: Gestor.Gestor.pgnInformacion(self) else: # Eliminamos todas las jugadas desde esta hasta el final numpos = jg.numpos self.partida.liJugadas = self.partida.liJugadas[:numpos] if self.partida.numJugadas() == 0: self.aciertos = 0 self.movimientos = 0 self.partida.ultPosicion = self.partida.iniPosicion else: jg = self.partida.last_jg() self.aciertos = jg.aciertos self.movimientos = jg.movimientos self.partida.ultPosicion = jg.posicion self.ponRotulo2(self.txtAciertos()) self.partida.pendienteApertura = True # realizamos el movimiento desde, hasta, coronacion = resp siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde, hasta, coronacion) self.movimientosPiezas(jg.liMovs, False) self.partida.ultPosicion = jg.posicion self.tablero.ponPosicion(jg.posicion) self.pantalla.base.pgnRefresh() self.ponRevision(False) self.listaJugadas = lista self.ponVariantes(jg) self.masJugada(jg, True) # refrescamos self.refresh() # siguienteJugada self.estado = kJugando self.siguienteJugada()
def pgnInformacion(self, fila, clave): posJugada, jg = self.pgn.jugada(fila, clave) if jg: fen = jg.posicionBase.fen() lista = self.libro.miraListaJugadas(fen) siEditar = True if len(lista) > 0: resp = PantallaBooks.saltaJugadaBooks(self, lista, jg) if resp is None: return siEditar = resp[0] is None if siEditar: Gestor.Gestor.pgnInformacion(self, fila, clave) else: # Eliminamos todas las jugadas desde esta hasta el final numpos = jg.numpos self.partida.liJugadas = self.partida.liJugadas[:numpos] if self.partida.numJugadas() == 0: self.aciertos = 0 self.movimientos = 0 self.partida.ultPosicion = self.partida.iniPosicion else: jg = self.partida.liJugadas[-1] self.aciertos = jg.aciertos self.movimientos = jg.movimientos self.partida.ultPosicion = jg.posicion self.ponRotulo2(self.txtAciertos()) self.partida.pendienteApertura = True # realizamos el movimiento desde, hasta, coronacion = resp siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde, hasta, coronacion) self.movimientosPiezas(jg.liMovs, False) self.partida.ultPosicion = jg.posicion self.tablero.ponPosicion(jg.posicion) self.pantalla.base.pgnRefresh() self.ponRevision(False) self.listaJugadas = lista self.ponVariantes(jg) self.masJugada(jg, True) # refrescamos self.refresh() # siguienteJugada self.estado = kJugando self.siguienteJugada()
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()
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
def tw_uti_pmerge(self): PantallaBooks.polyglotUnir(self)
def tw_uti_pcreate(self): PantallaBooks.polyglotCrear(self)
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
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
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