-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathanimations.py
101 lines (86 loc) · 2.73 KB
/
animations.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# functions that define how animations work
# init_name for starting values
import random
import sys
import time
def draw_animation(frame: list) -> None:
print("\x1b[2J\x1b[H", end="")
#fb = ""
for w in frame:
#print("".join(w), end="")
#fb += "".join(w)
for h in w:
print(h, end="")
#print(fb, end="")
def draw_animation_diff(frame: list) -> None:
#print("\x1b[2J\x1b[H", end="")
for i in frame:
print("\x1b[" + str(i[1]) + ";" + str(i[0]) + "H" + i[2], end="")
def text_rain_init(w:int, h: int) -> list:
frame = [[" " for i in range(h)] for j in range(w)]
for x in range(w):
for y in range(h):
frame[x][y] = random.choice(["|", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "])
return frame
def text_rain(w:int, h:int, frame: list) -> list:
for x in reversed(range(w)):
for y in reversed(range(h)):
if frame[x][y] == "|":
if x < w-1:
frame[x][y] = " "
frame[x+1][y] = "|"
else:
frame[x][y] = " "
frame[0][y] = "|"
return frame
def text_rain_diff_init(w:int, h:int) -> list:
frame = []
for line in range(h):
for col in range(w):
if random.random() > 0.8:
frame.append([col, line, "|"])
return frame
def text_rain_diff(w:int, h: int, frame: list) -> list:
# BUG number of lines is 3 more than it should be but doesn't cause scroll issues so it's minor
new_frame = []
for i in frame:
if i[2] == "|":
new_frame.append([i[0], i[1], " "])
if i[1] >= h:
new_frame.append([i[0], 0, "|"])
else:
new_frame.append([i[0], i[1]+1, "|"])
return new_frame
def still_image_init(w: int, h:int) -> list:
frame = []
with open("/home/yobleck/qdm/still_image.txt", "r") as f:
for l in f.readlines():
frame.append([])
for c in l:
frame[-1].append(c)
return frame
def still_image(w:int, h:int, frame: list) -> list:
#no op since the frame never changes
return frame
# for testing
if __name__ == "__main__":
import shutil
w, h = shutil.get_terminal_size()
print("\x1b[2J\x1b[H", end="")
"""a = init_text_rain(h, w)
for x in a:
for y in x:
print(y, end="")
print()
while True:
print("\x1b[2J\x1b[H", end="")
a = text_rain(h, w, a)
for x in a:
for y in x:
print(y, end="")
print()
time.sleep(0.1)"""
a = still_image_init(h, w)
for x in a:
for y in x:
print(y, end="")