-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy patheffects.py
116 lines (109 loc) · 6.08 KB
/
effects.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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import acabsl
import random
import time
alphabet = {
'_': ((0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0)),
'A': ((0,0,1,1,0),(0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,1,1,1),(0,1,0,0,1)),
'B': ((0,1,1,1,0),(0,1,0,0,1),(0,1,1,1,0),(0,1,0,0,1),(0,1,0,0,1),(0,1,1,1,0)),
'C': ((0,0,1,1,1),(0,1,0,0,0),(0,1,0,0,0),(0,1,0,0,0),(0,1,0,0,0),(0,0,1,1,1)),
'D': ((0,1,1,1,0),(0,0,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,1,1,0)),
'E': ((0,0,1,1,1),(0,1,0,0,0),(0,1,0,0,0),(0,1,1,1,0),(0,1,0,0,0),(0,0,1,1,1)),
'F': ((0,0,1,1,1),(0,1,0,0,0),(0,1,0,0,0),(0,1,1,1,0),(0,1,0,0,0),(0,1,0,0,0)),
'G': ((0,0,1,1,0),(0,1,0,0,0),(0,1,0,1,1),(0,1,0,0,1),(0,1,0,0,1),(0,0,1,1,1)),
'H': ((0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,1,1,1),(0,1,0,0,1),(0,1,0,0,1)),
'I': ((1,1,1,1,1),(0,0,1,0,0),(0,0,1,0,0),(0,0,1,0,0),(0,0,1,0,0),(1,1,1,1,1)),
'J': ((0,1,1,1,1),(0,0,0,0,1),(0,0,0,0,1),(0,0,0,0,1),(0,1,0,0,1),(0,0,1,1,0)),
'K': ((0,1,0,0,1),(0,1,0,0,1),(0,1,0,1,0),(0,1,1,0,0),(0,1,0,1,0),(0,1,0,0,1)),
'L': ((0,1,0,0,0),(0,1,0,0,0),(0,1,0,0,0),(0,1,0,0,0),(0,1,0,0,0),(0,1,1,1,1)),
'M': ((1,0,0,0,1),(1,1,0,1,1),(1,0,1,0,1),(1,0,0,0,1),(1,0,0,0,1),(1,0,0,0,1)),
'N': ((0,1,0,0,1),(0,1,1,0,1),(0,1,1,0,1),(0,1,0,1,1),(0,1,0,1,1),(0,1,0,0,1)),
'O': ((0,0,1,1,0),(0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,0,1,1,0)),
'P': ((0,1,1,1,0),(0,1,0,0,1),(0,1,0,0,1),(0,1,1,1,0),(0,1,0,0,0),(0,1,0,0,0)),
'Q': ((0,0,1,1,0),(0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,0,1,1),(0,0,1,1,1)),
'R': ((0,1,1,1,0),(0,1,0,0,1),(0,1,0,0,1),(0,1,1,1,0),(0,1,0,1,0),(0,1,0,0,1)),
'S': ((0,0,1,1,1),(0,1,0,0,0),(0,1,0,0,0),(0,0,1,1,1),(0,0,0,0,1),(0,1,1,1,0)),
'T': ((1,1,1,1,1),(1,0,1,0,0),(0,0,1,0,0),(0,0,1,0,0),(0,0,1,0,0),(0,0,1,0,0)),
'U': ((0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,1,1,1)),
'V': ((1,0,0,0,1),(1,0,0,0,1),(1,0,0,0,1),(0,1,0,1,0),(0,1,0,1,0),(0,0,1,0,0)),
'W': ((1,0,0,0,1),(1,0,0,0,1),(1,0,1,0,1),(1,0,1,0,1),(1,1,0,1,1),(1,0,0,0,1)),
'X': ((1,0,0,0,1),(0,1,0,1,0),(0,1,0,1,0),(0,0,1,0,1),(0,1,0,1,0),(1,0,0,0,1)),
'Y': ((1,0,0,0,1),(1,0,0,0,1),(0,1,0,1,0),(0,1,0,1,0),(0,0,1,0,0),(0,0,1,0,0)),
'Z': ((0,1,1,1,1),(0,0,0,0,1),(0,0,0,1,0),(0,0,1,0,0),(0,1,0,0,0),(0,1,1,1,1)),
'1': ((0,0,0,1,0),(0,0,1,1,0),(0,0,0,1,0),(0,0,0,1,0),(0,0,0,1,0),(0,0,0,1,0)),
'2': ((0,0,1,1,0),(0,1,0,0,1),(0,0,0,0,1),(0,0,0,1,0),(0,0,1,0,0),(0,1,1,1,1)),
'3': ((0,1,1,1,0),(0,0,0,0,1),(0,0,0,1,0),(0,0,1,1,0),(0,0,0,0,1),(0,1,1,1,0)),
'4': ((0,1,0,0,1),(0,1,0,0,1),(0,1,0,0,1),(0,1,1,1,1),(0,0,0,0,1),(0,0,0,0,1)),
'5': ((0,1,1,1,1),(0,1,0,0,0),(0,1,1,1,0),(0,0,0,0,1),(0,0,0,0,1),(0,1,1,1,0)),
'6': ((0,0,1,1,1),(0,1,0,0,0),(0,1,1,1,0),(0,1,0,0,1),(0,1,0,0,1),(0,0,1,1,0)),
'7': ((0,1,1,1,1),(0,1,0,0,1),(0,0,0,0,1),(0,0,0,1,0),(0,0,1,0,0),(0,0,1,0,0)),
'8': ((0,0,1,1,0),(0,1,0,0,1),(0,1,0,1,0),(0,0,1,0,1),(0,1,0,0,1),(0,0,1,1,0)),
'9': ((0,0,1,1,0),(0,1,0,0,1),(0,1,0,0,1),(0,0,1,1,1),(0,0,0,0,1),(0,1,1,1,0)),
':': ((0,0,0,0,0),(0,0,0,0,0),(0,0,1,0,0),(0,0,0,0,0),(0,0,1,0,0),(0,0,0,0,0)),
'@': ((0,0,1,1,1),(0,1,0,0,0),(0,1,1,1,0),(0,1,1,0,1),(0,1,0,0,1),(0,0,1,1,0)),
'.': ((0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,1,1,0),(0,0,1,1,0)),
'#': ((0,0,0,0,0),(0,1,0,1,0),(1,1,1,1,1),(0,1,0,1,0),(1,1,1,1,1),(0,1,0,1,0)),
'+': ((0,0,1,0,0),(0,0,1,0,0),(1,1,1,1,1),(0,0,1,0,0),(0,0,1,0,0),(0,0,1,0,0)),
'*': ((0,0,0,0,0),(1,0,1,0,1),(0,1,1,1,0),(1,1,1,1,1),(0,1,1,1,0),(1,0,1,0,1)),
'/': ((0,0,0,0,1),(0,0,0,1,0),(0,0,1,0,0),(0,0,1,0,0),(0,1,0,0,0),(1,0,0,0,0)),
'-': ((0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,1,1,1,1),(0,0,0,0,0),(0,0,0,0,0)),
'=': ((0,0,0,0,0),(0,0,0,0,0),(0,1,1,1,1),(0,0,0,0,0),(0,1,1,1,1),(0,0,0,0,0)),
}
def set_single(x,y,r,g,b,fade_time=0, wall=0):
acabsl.send(x,y,r,g,b,fade_time, wall)
def set_all(r,g,b,fade_time=0):
for w in range(acabsl.NOOFWALLS):
for x in range(acabsl.WALLSIZEX):
for y in range(acabsl.WALLSIZEY):
acabsl.send(x,y,r,g,b,fade_time,w)
acabsl.update()
def blink(colour, repetition, duration):
for i in range(repetition):
set_all(*colour, fade_time = 0.8)
time.sleep(duration)
if (i + 1) < repetition:
set_all(0,42,42, fade_time = 0.8)
time.sleep(duration)
def text(text, repetitions = 1, colour = (0,42,42), interval = 0.3, marquee = True):
text = text.upper()
matrix = []
for i in range(len(text)):
if text[i] not in alphabet:
continue
for j in range(len(alphabet[text[i]][0])):
matrix.append([])
for k in range(len(alphabet[text[i]])-1,-1,-1):
matrix[-1].append(alphabet[text[i]][k][j])
matrix.append([0]*len(alphabet[text[i]]))
for i in range(repetitions):
for j in range(0 if not marquee else (- acabsl.WALLSIZEX), len(matrix)):
for x in range(acabsl.WALLSIZEX):
for y in range(acabsl.WALLSIZEY):
if x+j < len(matrix) and x+j >= 0 and matrix[x+j][y] == 1:
set_single(x, acabsl.WALLSIZEY-1-y, *colour, fade_time = interval/2.)
else:
set_single(x, acabsl.WALLSIZEY-1-y, 0, 0, 0, fade_time = interval/2.)
acabsl.update()
time.sleep(interval)
def rain(steps = 23, interval = 0.3):
drops = []
infinite = False
if steps == 0:
infinite = True
while infinite or (steps > 0):
new_drops = []
for drop in drops:
if drop[1] > 0:
new_drops.append([drop[0],drop[1]-1])
drops = new_drops
drops.append([random.randint(0,acabsl.WALLSIZEX-1),acabsl.WALLSIZEY-1])
for x in range(acabsl.WALLSIZEX):
for y in range(acabsl.WALLSIZEY):
if [x,y] in drops:
set_single(x,acabsl.WALLSIZEY-1-y,0,0,255, 0.7)
else:
set_single(x,acabsl.WALLSIZEY-1-y,0,0,0, 0.7)
acabsl.update()
steps -= 1
time.sleep(interval)