import time, threading, random, os
tree = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'R', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'Y', 'Y', 'Y', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', 'R', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '/', '_', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', 'G', '\\', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', 'R', '_', '/', '_', 'B', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', '_', 'B', '_', '\\', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '/', 'G', '/', '_', '/', 'R', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', '_', '\\', '_', 'B', '_', '\\', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', '/', '_', 'G', '_', '/', '_', '/', '_', '/', '_', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', 'R', '\\', '_', '\\', '_', 'B', '_', 'G', '_', '\\', '\n', ' ', ' ', ' ', ' ', '/', '_', '/', '_', '/', '_', '/', '_', '/', '_', '/', '_', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', '/', '_', '\\', '_', '\\', '_', '\\', 'R', '\\', '_', '\\', '_', '\\', '_', '\\', '\n', ' ', ' ', ' ', '/', '_', '/', 'R', '/', '_', '/', '_', '/', '_', '/', '_', '/', 'R', '/', '_', '\\', '\n', ' ', ' ', ' ', '/', '_', '\\', '_', 'G', '_', '\\', '_', '\\', '_', 'B', '_', '\\', '_', '\\', '_', '\\', '\n', ' ', ' ', '/', '_', '/', '_', '/', '_', '/', '_', 'B', '_', '/', '_', '/', '_', 'G', '_', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '[', '_', '_', '_', ']', '"', '"', '"']
locker = threading.Lock()
grn=[]
red=[]
blu=[]
ylw=[]
def color_dot(color):
if color == "ylw":
return f'\033[93mY\033[0m'
elif color == "red":
return f'\033[91mR\033[0m'
elif color == "grn":
return f'\033[92mG\033[0m'
elif color == "blu":
return f'\033[94mB\033[0m'
def light(color, index):
off = True
if color == "ylw":
letter = "Y"
t = 0.5
elif color == "red":
letter = "R"
t = 0.25
elif color == "grn":
letter = "G"
t = 1
elif color == "blu":
letter = "B"
t = 2
while True:
for idx in index:
tree[idx] = color_dot(color) if off else letter
locker.acquire()
os.system("clear")
print(''.join(tree))
locker.release()
off = not off
time.sleep(random.uniform(.5,1.5))
for i,c in enumerate(tree):
if c == "Y":
ylw.append(i)
elif c == "B":
blu.append(i)
elif c == "R":
red.append(i)
elif c == "G":
grn.append(i)
def ch(tr):
while True:
time.sleep(0.3)
for i, branch in enumerate(tr):
if branch=="/":
tr[i] = "\\"
elif branch == "\\":
tr[i] = "/"
ty = threading.Thread(target=light, args=["ylw",ylw])
tg = threading.Thread(target=light, args=["grn",grn])
tb = threading.Thread(target=light, args=["blu",blu])
tr = threading.Thread(target=light, args=["red",red])
tc = threading.Thread(target=ch, args=[tree])
for t in [tr,tg,tb,ty,tc]:
t.start()
for t in [tr,tg,tb,ty]:
t.join()
tree = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'R', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'Y', 'Y', 'Y', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', 'R', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '/', '_', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', 'G', '\\', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', 'R', '_', '/', '_', 'B', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', '_', 'B', '_', '\\', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '/', 'G', '/', '_', '/', 'R', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', '_', '\\', '_', 'B', '_', '\\', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', '/', '_', 'G', '_', '/', '_', '/', '_', '/', '_', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', '/', '_', '\\', 'R', '\\', '_', '\\', '_', 'B', '_', 'G', '_', '\\', '\n', ' ', ' ', ' ', ' ', '/', '_', '/', '_', '/', '_', '/', '_', '/', '_', '/', '_', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', '/', '_', '\\', '_', '\\', '_', '\\', 'R', '\\', '_', '\\', '_', '\\', '_', '\\', '\n', ' ', ' ', ' ', '/', '_', '/', 'R', '/', '_', '/', '_', '/', '_', '/', '_', '/', 'R', '/', '_', '\\', '\n', ' ', ' ', ' ', '/', '_', '\\', '_', 'G', '_', '\\', '_', '\\', '_', 'B', '_', '\\', '_', '\\', '_', '\\', '\n', ' ', ' ', '/', '_', '/', '_', '/', '_', '/', '_', 'B', '_', '/', '_', '/', '_', 'G', '_', '/', '_', '\\', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '[', '_', '_', '_', ']', '"', '"', '"']
locker = threading.Lock()
grn=[]
red=[]
blu=[]
ylw=[]
def color_dot(color):
if color == "ylw":
return f'\033[93mY\033[0m'
elif color == "red":
return f'\033[91mR\033[0m'
elif color == "grn":
return f'\033[92mG\033[0m'
elif color == "blu":
return f'\033[94mB\033[0m'
def light(color, index):
off = True
if color == "ylw":
letter = "Y"
t = 0.5
elif color == "red":
letter = "R"
t = 0.25
elif color == "grn":
letter = "G"
t = 1
elif color == "blu":
letter = "B"
t = 2
while True:
for idx in index:
tree[idx] = color_dot(color) if off else letter
locker.acquire()
os.system("clear")
print(''.join(tree))
locker.release()
off = not off
time.sleep(random.uniform(.5,1.5))
for i,c in enumerate(tree):
if c == "Y":
ylw.append(i)
elif c == "B":
blu.append(i)
elif c == "R":
red.append(i)
elif c == "G":
grn.append(i)
def ch(tr):
while True:
time.sleep(0.3)
for i, branch in enumerate(tr):
if branch=="/":
tr[i] = "\\"
elif branch == "\\":
tr[i] = "/"
ty = threading.Thread(target=light, args=["ylw",ylw])
tg = threading.Thread(target=light, args=["grn",grn])
tb = threading.Thread(target=light, args=["blu",blu])
tr = threading.Thread(target=light, args=["red",red])
tc = threading.Thread(target=ch, args=[tree])
for t in [tr,tg,tb,ty,tc]:
t.start()
for t in [tr,tg,tb,ty]:
t.join()