def cerraduraPositiva(AFN_1):
    nodoInicio = Nodo(1, "1")
    nodoFin = Nodo(3, "2")
    afnCP = AFN(["Nodos", "E"], [Arco(nodoInicio, []), Arco(nodoFin, [])])
    for indice in AFN_1.listaIndices:
            if indice not in afnCP.listaIndices:
                afnCP.listaIndices.append(indice)
    for transicion in AFN_1.tablaTransiciones:
        transicion.nodoInicio.numeracion = len(afnCP.tablaTransiciones)+1
        if transicion.nodoInicio.tipo == 3:
            if transicion not in afnCP.tablaTransiciones:
                for transicion_2 in AFN_1.tablaTransiciones:
                    if transicion_2.nodoInicio.tipo == 1:
                        afnCP.buscarNodo(nodoInicio).nodosDestino.append(
                                [transicion_2.nodoInicio, "E"])
                        afnCP.tablaTransiciones.append(Arco(
                            transicion.nodoInicio,
                            [[nodoFin, "E"], [transicion_2.nodoInicio, "E"]]))
                        transicion_2.nodoInicio.tipo = 2
                        transicion.nodoInicio.tipo = 2
                        if transicion_2 not in afnCP.tablaTransiciones:
                            afnCP.tablaTransiciones.append(transicion_2)
        else:
            afnCP.tablaTransiciones.append(transicion)
    return afnCP
Beispiel #2
0
    def adicionarEnlace(self, nodoInicial, nodoTerminal, peso):
        nuevoArco = Arco(nodoInicial, nodoTerminal, float(peso))
        indice = self.buscarIndice(nuevoArco.getPeso())
        if indice == -1:
            self.aristas.append(nuevoArco)
        else:
            self.aristas.insert(int(indice), nuevoArco)

        for nodo in self.nodos:
            if nodoInicial in nodo[0]:
                nodo[1].agregarEnlace(nodoTerminal, peso)
                break
        for nodo in self.nodos:
            if nodoTerminal in nodo[0]:
                nodo[1].agregarEnlace(nodoInicial, peso)
                break
Beispiel #3
0
 def adicionarRelacao(self, v1, v2, peso):
     id = self.gerarIdRelacao(v1, v2)
     relacao = Arco(id, v1, v2, peso)
     self.relacoes[id] = relacao
     self.vertices[v1.numero - 1].adicionarRelacao(relacao)
     # Verificar se eh necessario adcionar a vertice destino. Sem essa relacao no vertice destino, facilita a organizacao topologica
     self.vertices[v2.numero - 1].adicionarRelacao(relacao)
Beispiel #4
0
 def __init__(self, puntoA, puntoB, peso):
     self.arista = Arco(puntoA.nombre, puntoB.nombre, peso)
     self.puntoA = puntoA
     self.puntoB = puntoB
     self.peso = peso
     self.color = QBrush(Qt.green)
     self.auxiliar = QBrush(Qt.red)
def union(AFN_1, AFN_2):
    nodoInicio = Nodo(1, "1")
    nodoFin = Nodo(3, "2")
    afnUnido = AFN(["Nodos", "E"], [Arco(nodoInicio, []), Arco(nodoFin, [])])
    for lista in (AFN_1.listaIndices, AFN_2.listaIndices):
        for indice in lista:
            if indice not in afnUnido.listaIndices:
                afnUnido.listaIndices.append(indice)
    for transiciones in (AFN_1.tablaTransiciones, AFN_2.tablaTransiciones):
        for transicion in transiciones:
            if transicion not in afnUnido.tablaTransiciones:
                transicion.nodoInicio.numeracion = len(
                    afnUnido.tablaTransiciones)+1
                if transicion.nodoInicio.tipo == 1:
                    afnUnido.buscarNodo(nodoInicio).nodosDestino.append(
                        [transicion.nodoInicio, "E"])
                    afnUnido.tablaTransiciones.append(transicion)
                elif transicion.nodoInicio.tipo == 3:
                    afnUnido.tablaTransiciones.append(
                        Arco(transicion.nodoInicio, [[nodoFin, "E"]]))
                else:
                    afnUnido.tablaTransiciones.append(transicion)
                transicion.nodoInicio.tipo = 2
    return afnUnido
Beispiel #6
0
 def addArco(self, origen, destino, costo):
     self.E.append(Arco(origen,destino,float(costo)))
def casoBase(notacion):
    lista_nodos = [Nodo(1, "1"), Nodo(3, "2")]
    return AFN(["Nodos", notacion],
               [Arco(lista_nodos[0], [[lista_nodos[1], notacion]]),
                Arco(lista_nodos[1], [])])
Beispiel #8
0
grupoSuperficiesVerticales.add(suelo)

techo = Superficie(0, 0, tamaño_pantalla[0], 1)
grupoSuperficiesVerticales.add(techo)

grupoSuperficiesHorizontales = pygame.sprite.Group()

pared_izquierda = Superficie(0, 0, 1, tamaño_pantalla[1] + 1)
grupoSuperficiesHorizontales.add(pared_izquierda)

pared_derecha = Superficie(tamaño_pantalla[0] - 1, 0, 1,
                           tamaño_pantalla[1] - 5)
grupoSuperficiesHorizontales.add(pared_derecha)

grupoArcos = pygame.sprite.Group()
arco_izq = Arco(-25, tamaño_pantalla[1] - 180, 'arcoizquierdo.png')
arco_der = Arco(tamaño_pantalla[0] - 100, tamaño_pantalla[1] - 180,
                'arcoderecho.png')
grupoArcos.add(arco_der)
grupoArcos.add(arco_izq)

pelota = Pelota(tamaño_pantalla[0] / 2, tamaño_pantalla[1] / 2, 'p5.png')

while main_loop:
    reloj.tick(50)
    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            main_loop = False

    jugador.actualizar_posicion()