LINUX.ORG.RU

История изменений

Исправление slovazap, (текущая версия) :

но как сделать скрипт

Я думаю тебе не надо заморачиваться и достаточно записать всю анимацию в текстовом файле - так будет и наглядно, и гибко, и менять легко. Вот она:

0----------0
-0--------0-
--0------0--
---0----0---
----0--0----
-----00-----
----0--0----
---0----0---
--0------0--
-0--------0-
0----------0
00--------00
000------000
0000----0000
00000--00000
000000000000
-0000000000-
--00000000--
---000000---
----0000----
-----00-----
----0--0----
---0----0---
--0------0--
-0--------0-
0----------0
-0--------0-
--0------0--
---0----0---
----0--0----
-----00-----
----0000----
---000000---
--00000000--
-0000000000-
000000000000
00000--00000
0000----0000
000------000
00--------00

Программно её сгенерировать можно так (python3):

import sys
import time

def gen_half_frame(width, pos, left, exact, right):
    return [left] * pos + [exact] + [right] * (width - pos - 1)

def gen_full_frame(width, pos, left, exact, right):
    return gen_half_frame(width, pos, left, exact, right) + list(reversed(gen_half_frame(width, pos, left, exact, right)))

def iter_scene_in(width, left, exact, right):
    for pos in range(width - 1):
        yield gen_full_frame(width, pos, left, exact, right)

def iter_scene_out(width, left, exact, right):
    for pos in range(width - 1):
        yield gen_full_frame(width, width - 1 - pos, left, exact, right)

def iter_animation(width):
    while True:
        yield from iter_scene_in(width, '-', '0', '-')
        yield from iter_scene_out(width, '-', '0', '-')

        yield from iter_scene_in(width, '0', '0', '-')
        yield from iter_scene_in(width, '-', '0', '0')

        yield from iter_scene_out(width, '-', '0', '-')
        yield from iter_scene_in(width, '-', '0', '-')

        yield from iter_scene_out(width, '-', '0', '0')
        yield from iter_scene_out(width, '0', '0', '-')

for arr in iter_animation(6):
    print(''.join(arr), end='\r', file=sys.stderr)
    time.sleep(0.1)

Исходная версия slovazap, :

но как сделать скрипт

Я думаю тебе не надо заморачиваться и достаточно записать всю анимацию в текстовом файле - так будет и наглядно, и гибко, и менять легко. Вот она:

0----------0
-0--------0-
--0------0--
---0----0---
----0--0----
-----00-----
----0--0----
---0----0---
--0------0--
-0--------0-
0----------0
00--------00
000------000
0000----0000
00000--00000
000000000000
-0000000000-
--00000000--
---000000---
----0000----
-----00-----
----0--0----
---0----0---
--0------0--
-0--------0-
0----------0
-0--------0-
--0------0--
---0----0---
----0--0----
-----00-----
----0000----
---000000---
--00000000--
-0000000000-
000000000000
00000--00000
0000----0000
000------000
00--------00
import sys
import time

def gen_half_frame(width, pos, left, exact, right):
    return [left] * pos + [exact] + [right] * (width - pos - 1)

def gen_full_frame(width, pos, left, exact, right):
    return gen_half_frame(width, pos, left, exact, right) + list(reversed(gen_half_frame(width, pos, left, exact, right)))

def iter_scene_in(width, left, exact, right):
    for pos in range(width - 1):
        yield gen_full_frame(width, pos, left, exact, right)

def iter_scene_out(width, left, exact, right):
    for pos in range(width - 1):
        yield gen_full_frame(width, width - 1 - pos, left, exact, right)

def iter_animation(width):
    while True:
        yield from iter_scene_in(width, '-', '0', '-')
        yield from iter_scene_out(width, '-', '0', '-')

        yield from iter_scene_in(width, '0', '0', '-')
        yield from iter_scene_in(width, '-', '0', '0')

        yield from iter_scene_out(width, '-', '0', '-')
        yield from iter_scene_in(width, '-', '0', '-')

        yield from iter_scene_out(width, '-', '0', '0')
        yield from iter_scene_out(width, '0', '0', '-')

for arr in iter_animation(6):
    print(''.join(arr), end='\r', file=sys.stderr)
    time.sleep(0.1)