0

I have just finished with my food fill algorithm in python. It runs on an N*N matrix filled with integers. I would like to somehow animate it's workings. Is it somehow possible on the console? I think of something like updateing the nodes with a wait() inbetween the updates.

4

1 回答 1

2

你可以使用这样的东西:

#! /usr/bin/python3
import time

m = [ [c for c in line] for line in '''............................
..XXXXXXXXXX...........XXX..
..X........X...........X.X..
..XXXXXX...X....XXXXXXXX.X..
.......X...X....X........X..
....XXXX...XXXXXX........X..
....X....................X..
....X.................XXXX..
....XXXXXXXXXXXXXXXXXXX.....'''.split ('\n') ]

def flood (matrix, start):
    maxX = len (matrix [0] )
    maxY = len (matrix)
    tbf = [start]
    while tbf:
        x, y = tbf [0]
        tbf = tbf [1:]
        if x < 0 or x >= maxX or y < 0 or y >= maxY: continue
        if matrix [y] [x] == 'X': continue
        matrix [y] [x] = 'X'
        tbf += [ (x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1) ]
        print ('\x1b[0J\x1b[1;1H') #Clear screen and position cursor top left
        for line in matrix: print (''.join (line) )
        time.sleep (.2)

#flood (m, (0, 0) )
flood (m, (4, 2) )

这应该适用于任何支持 ANSI 转义序列 (CSI) 的控制台。您可以使用相同的 CSI 代码来输出颜色 ( Wiki )。

于 2013-07-28T17:57:53.953 回答