Exemple #1
0
    def armar_torneo(equipos):
        raiz = Partido()
        tercero = Partido()

        semi = Listirijilla()
        for i in range(2):
            nuevo = Partido(padre=raiz)
            semi.append(nuevo)
            if raiz.hijo_izquierdo is None:
                raiz.hijo_izquierdo = nuevo
                tercero.hijo_izquierdo = nuevo  # no es el padre
            else:
                raiz.hijo_derecho = nuevo
                tercero.hijo_derecho = nuevo  # no es el padre

        cuartos = Listirijilla()
        for i in range(4):
            nuevo = Partido(padre=semi[i // 2])
            cuartos.append(nuevo)
            padre = semi[i // 2]
            if padre.hijo_izquierdo is None:
                padre.hijo_izquierdo = nuevo
            else:
                padre.hijo_derecho = nuevo

        for i in range(8):
            nuevo = Partido(equipos[2 * i], equipos[(2 * i) + 1],
                            cuartos[i // 2])
            padre = cuartos[i // 2]
            if padre.hijo_izquierdo is None:
                padre.hijo_izquierdo = nuevo
            else:
                padre.hijo_derecho = nuevo
        return raiz, tercero
    def __init__(self):
        self.torneo = None
        self.grafo, jugadores = entregar_grafo()
        self.tu_equipo = Equipo(Listirijilla(), "Tu Equipo")
        self.equipos = self.cargar_equipos()
        equiposs = Listirijilla()
        for equipo in self.equipos:
            gui_repr = Listirijilla(equipo.nombre)
            gui_repr.append(equipo.esperanza)
            equiposs.append(gui_repr)

        # No cambiar esta línea
        self.gui = Window(self, jugadores, equiposs)
Exemple #3
0
 def buscar_partido(self, _id):
     if _id == 15:
         return self.t_c
     por_revisar = Listirijilla(self.nodo_raiz)
     while por_revisar:
         current = por_revisar.popleft()
         if current._id == _id:
             return current
         por_revisar.append(current.hijo_izquierdo)
         por_revisar.append(current.hijo_derecho)
Exemple #4
0
 def __init__(self, equipo1=None, equipo2=None, padre=None):
     self._id = Partido._id
     Partido._id -= 1
     if Partido._id == 0:
         Partido._id = 16
     self.equipo1 = equipo1
     self.equipo2 = equipo2
     self.padre = padre
     self.hijo_izquierdo = None
     self.hijo_derecho = None
     self.amarillas_eq1 = Listirijilla()
     self.amarillas_eq2 = Listirijilla()
     self.faltas_eq1 = 0
     self.rojas_eq1 = Listirijilla()
     self.rojas_eq2 = Listirijilla()
     self.faltas_eq2 = 0
     self.goles1 = 0
     self.goles2 = 0
     self.ganador = None
Exemple #5
0
 def afinidad(self, j1, j2, visitados=Listirijilla(),
              afinidades=Listirijilla()):
     if j1 == j2:
         raise SamePlayerError
     if j1.grado_uno(j2):
         return j1.relacion(j2)
     visitados.append(j1)
     if len(visitados) > 5:
         return False
     for _id in j1.conecciones:
         player = self.buscar_jugador(_id)
         if player not in visitados:
             afinidad = j1.relacion(player)
             auxiliar_af = self.afinidad(player, j2, visitados)
             if not auxiliar_af:
                 continue
             afinidad += auxiliar_af - 1
             afinidades.append(afinidad)
     return max(afinidades)
    def cargar_equipos(self):
        equipos = Listirijilla()
        # podria utilizar un for i in range(16), y llamarlos equipo i
        # con un {}.format, pero es muy fome =D
        nombres_equipos = Listirijilla()
        nombres_equipos.append('Super Campeones')
        nombres_equipos.append('Tatitas FC')
        nombres_equipos.append('Real Madrazo')

        nombres_equipos.append('Scooby doo papa')
        nombres_equipos.append('Alumbrados FC')
        nombres_equipos.append('Ratones FC')
        nombres_equipos.append('Laucheros FC')

        nombres_equipos.append('Coca Juniors')
        nombres_equipos.append('Dream Team')
        nombres_equipos.append('Error 404 legs not found')
        nombres_equipos.append('Con la mente en el juego FC')

        nombres_equipos.append('Gryffindor')
        nombres_equipos.append('Hufflepuff')
        nombres_equipos.append('Ravenclaw')
        nombres_equipos.append('Slytherin')

        positions = Listirijilla()
        for nombre in nombres_equipos:
            jugadores = Listirijilla()
            for i in range(11):
                n = random.randint(0, 200)
                while n in positions:
                    n = random.randint(0, 200)
                positions.append(n)
                jugadores.append(self.grafo.jugadores[n])
            equipo = Equipo(jugadores, nombre)
            equipo.matriz_afinidades = self.afinidad_equipo(jugadores)
            equipos.append(equipo)
        return equipos
 def consulta_fase(self, numero):
     self.gui.resetear_respuestas()
     if not numero.isdigit() or int(numero) not in range(1, 5):
         self.gui.agregar_respuesta("El número de fase debe ser un entero "
                                    "entre 1 y 4, donde 1 son los octavos "
                                    "de final y 4 la final")
     else:
         ganadores = Listirijilla()
         perdedores = Listirijilla()
         if int(numero) == 1:
             inicio = 1
             final = 9
         elif int(numero) == 2:
             inicio = 9
             final = 13
         elif int(numero) == 3:
             inicio = 13
             final = 15
         else:
             inicio = 16
             final = 17
         for _id in range(inicio, final):
             partido = self.torneo.buscar_partido(_id)
             ganadores.append(partido.ganador)
             if partido.equipo1.nombre == partido.ganador:
                 perdedores.append(partido.equipo2.nombre)
             else:
                 perdedores.append(partido.equipo1.nombre)
         info = "Perdieron en esta fase: "
         for equipo in perdedores:
             info += equipo + ", "
         info = info[:-2] + "\n"
         info += "Ganaron en esta fase: "
         for equipo in ganadores:
             info += equipo + ", "
         info = info[:-2] + "\n"
         self.gui.agregar_respuesta(info)
Exemple #8
0
 def __init__(self, equipos):
     self.nodo_raiz, t_c = self.armar_torneo(equipos)
     self.podio = Listirijilla()
     self.t_c = t_c  # Tercero y cuarto
Exemple #9
0
 def info_equipo(self, name="Tu Equipo"):
     por_revisar = Listirijilla(self.nodo_raiz)
     por_revisar.append(self.t_c)
     anotados = 0
     recibidos = 0
     faltas = Listirijilla()
     rojas = 0
     amarillas = 0
     eliminador = None
     mejor_fase = "octavos de final"
     existe_el_equipo = False
     while por_revisar:
         current = por_revisar.popleft()
         if current is None:
             continue
         por_revisar.append(current.hijo_derecho)
         por_revisar.append(current.hijo_izquierdo)
         if current.equipo1 == name:
             anotados += current.goles1
             recibidos += current.goles2
             amarillas += current.amarillas_eq1
             rojas += current.rojas_eq1
             for falta in current.faltas_eq1:
                 faltas.append(falta)
             if not current.ganador == name:
                 eliminador = current.ganador
                 if current._id in range(9, 13):
                     mejor_fase = "cuartos de final"
                 elif current._id in range(13, 16):
                     mejor_fase = "semi final"
                 else:
                     mejor_fase = "final"
                 existe_el_equipo = True
         elif current.equipo2 == name:
             anotados += current.goles2
             recibidos += current.goles1
             amarillas += current.amarillas_eq2
             rojas += current.rojas_eq2
             for falta in current.faltas_eq2:
                 faltas.append(falta)
             if not current.ganador == name:
                 eliminador = current.ganador
                 if current._id in range(9, 13):
                     mejor_fase = "cuartos de final"
                 elif current._id in range(13, 16):
                     mejor_fase = "semi final"
                 else:
                     mejor_fase = "final"
                 existe_el_equipo = True
     if self.nodo_raiz.ganador == name:
         existe_el_equipo = True
         eliminador = "Nadie"
         mejor_fase = "final"
     if not existe_el_equipo:
         return False
     info = Listirijilla(mejor_fase)
     info.append(eliminador)
     info.append(anotados)
     info.append(recibidos)
     info.append(faltas)
     info.append(rojas)
     info.append(amarillas)
     return info
    def afinidad_equipo(self, jugadores):
        # como no existe un patrón de relaciones es más eficiente definir
        # las relaciones de a una
        arquero = Listirijilla()
        defensa1 = Listirijilla()
        defensa2 = Listirijilla()
        defensa3 = Listirijilla()
        defensa4 = Listirijilla()
        medio1 = Listirijilla()
        medio2 = Listirijilla()
        medio3 = Listirijilla()
        medio4 = Listirijilla()
        delantero1 = Listirijilla()
        delantero2 = Listirijilla()

        af = self.grafo.afinidad(jugadores[0], jugadores[2])
        arquero.append(af)
        defensa2.append(af)
        af = self.grafo.afinidad(jugadores[0], jugadores[3])
        arquero.append(af)
        defensa3.append(af)

        af = self.grafo.afinidad(jugadores[1], jugadores[2])
        defensa1.append(af)
        defensa2.append(af)
        af = self.grafo.afinidad(jugadores[1], jugadores[5])
        defensa1.append(af)
        medio1.append(af)

        af = self.grafo.afinidad(jugadores[2], jugadores[3])
        defensa2.append(af)
        defensa3.append(af)
        af = self.grafo.afinidad(jugadores[2], jugadores[6])
        defensa2.append(af)
        medio2.append(af)

        af = self.grafo.afinidad(jugadores[3], jugadores[4])
        defensa4.append(af)
        defensa3.append(af)
        af = self.grafo.afinidad(jugadores[3], jugadores[7])
        defensa3.append(af)
        medio3.append(af)

        af = self.grafo.afinidad(jugadores[4], jugadores[8])
        defensa4.append(af)
        medio4.append(af)

        af = self.grafo.afinidad(jugadores[5], jugadores[6])
        medio1.append(af)
        medio2.append(af)
        af = self.grafo.afinidad(jugadores[5], jugadores[9])
        medio1.append(af)
        delantero1.append(af)

        af = self.grafo.afinidad(jugadores[6], jugadores[7])
        medio3.append(af)
        medio2.append(af)
        af = self.grafo.afinidad(jugadores[6], jugadores[9])
        medio2.append(af)
        delantero1.append(af)

        af = self.grafo.afinidad(jugadores[7], jugadores[8])
        medio3.append(af)
        medio4.append(af)
        af = self.grafo.afinidad(jugadores[7], jugadores[10])
        medio3.append(af)
        delantero2.append(af)

        af = self.grafo.afinidad(jugadores[8], jugadores[10])
        delantero2.append(af)
        medio4.append(af)

        af = self.grafo.afinidad(jugadores[9], jugadores[10])
        delantero1.append(af)
        delantero2.append(af)
        matriz = Listirijilla(arquero)
        matriz.append(defensa1)
        matriz.append(defensa2)
        matriz.append(defensa3)
        matriz.append(defensa4)
        matriz.append(medio1)
        matriz.append(medio2)
        matriz.append(medio3)
        matriz.append(medio4)
        matriz.append(delantero1)
        matriz.append(delantero2)
        return matriz