示例#1
0
def percolateFromFile(file_name):
    '''(str) -> None '''
    try:
        f = open(file_name)
    except:
        print("ERRO: arquivo '%s' não foi encontrado" % file_name)
        return

    # leia a dimensão da grade: nos arquivos é apenas um inteiro
    # já que neles as grades são quadradas
    line = f.readline()
    n = int(line)

    # crie um objeto Percolation
    perc = Percolation((n, n))

    # crie a janela
    screen = setScreen((n, n))

    # desenhe a grade
    drawPercolation(perc, screen)

    # leia posições a serem abertas
    line = f.readline()
    running = True

    while line and running:
        # Limpa a string e Le as coordenadas
        pos = line.split()
        lin = int(pos[0])
        col = int(pos[1])

        # abra o sítio
        perc.open(lin, col)

        # desenhe a nova grade na janela
        drawPercolation(perc, screen)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        # espere um pouco
        pygame.time.delay(DELAY)

        # pegue a nova posição
        line = f.readline()

    # espere o usuário fechar a janela
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

    print("Percolates: ", perc.percolates())
    print("Open sites: ", perc.no_open())
    f.close()
示例#2
0
 def __init__(self, shape, T):
     self.shape = shape
     self.T = T
     n, m = shape
     tests = []
     for i in range(T):
         perc = Percolation((n, m))
         while not perc.percolates():
             lin = random.randint(0, n - 1)
             col = random.randint(0, m - 1)
             if not perc.is_open(lin, col):
                 perc.open(lin, col)
         tests.append(perc.no_open())
     testes = np.array(tests)
     self.testes = testes / (n * m)
示例#3
0
def percolateIt():
    # pegue a dimensão da grade
    dim_str = input("Digite a dimensão da grade (nlins e ncols): ")
    dim_lst = dim_str.split()
    try:
        nlins = int(dim_lst[0])
        ncols = int(dim_lst[1])
    except:
        print("ERRO: dimensão devem ser dois inteiros positivos")
        return

    # crie o objeto Percolation
    perc = Percolation((nlins, ncols))

    # crie a janela
    screen = setScreen((nlins, ncols))

    # desenhe a grade inicial
    drawPercolation(perc, screen)

    # comece a abrir sítios
    running = True
    while running:
        # examine a fila de eventos
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.MOUSEBUTTONDOWN:  # usuário clicou
                # localize o sítio clicado
                col, lin = findRec(event.pos)
                # abra o sítio [lin][col]
                perc.open(lin, col)
                # desenhe a nova grade
                drawPercolation(perc, screen)

    # relatório
    print("Percolates: ", perc.percolates())
    print("Open sites: ", perc.no_open())