-
Notifications
You must be signed in to change notification settings - Fork 0
/
xmas.py
executable file
·77 lines (70 loc) · 2.62 KB
/
xmas.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
#!/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
# -*- coding: utf-8 -*-
from termcolor import colored
import random
import time
import curses
def sign(std, x, y):
text = 'made by 4ernitsa (kot_mapku3)©'
std.addstr(y, x, text)
def xmas(std, x, y):
colors = [47, 197, 227]
# Текст написан с помощью figlet (можно установить через brew для mac)
text = [
' __ __ _____ ____ ______ __',
'| \/ | ____| _ \| _ \ \ / /',
'| |\/| | _| | |_) | |_) \ V / ',
'| | | | |___| _ <| _ < | | ',
'|_| |_|_____|_| \_\_| \_\|_| ',
' ____ _ _ ____ ___ ____ _____ __ __ _ ____ ',
'/ ___| | | | _ \|_ _/ ___|_ _| \/ | / \ / ___| ',
'| | | |_| | |_) || |\___ \ | | | |\/| | / _ \ \___ \ ',
'| |___| _ | _ < | | ___) || | | | | |/ ___ \ ___) |',
'\ ____|_| |_|_| \_\___|____/ |_| |_| |_/_/ \_\____/ ',
]
# Для каждой строки свой цвет из трёх
for i in range(0, len(text)):
color = random.choice(colors)
for j in range(0, len(text[i])):
std.addstr(y+i, x+j, text[i][j], curses.color_pair(color))
x, y = 0, 0
foot = 5 # ширина ствола ёлки
long = 4 # высота ствола
stdscr = curses.initscr() # берём управление терминалом
height, width = stdscr.getmaxyx()
curses.start_color()
curses.use_default_colors()
#Добавляем цвета в палитру (цвета берутся из цветовой схемы терминала)
for i in range(0, 255):
curses.init_pair(i + 1, i, -1)
try:
while True:
temp = 1
xmas(stdscr, width//3, 0) # текст figlet
sign(stdscr, width//3 + 4, height//2 + 3) # подпись
for level in range(0, height//2): # проще говоря, это высота ёлки
for _ in range(0, (width//3-temp)//2 + height//(height//10)//2):
x += 1
for _ in range(0, temp):
stdscr.addstr(y, x, '*', curses.color_pair(random.randint(20, 230)))
x += 1
for _ in range(0, (width//3-temp)//2 + height//(height//10)//2):
x += 1
temp += 2
y += 1
x = 0
for i in range(0, long): # высота ножки
for space in range(0, (width//3-foot)//2 + height//(height//10)//2):
x += 1
for stick in range(0, foot): # ну с шириной ножки можно играться
stdscr.addstr(y, x, '|')
x += 1
for space in range(0, (width//3-foot)//2 + height//(height//10)//2):
x += 1
y += 1
x = 0
stdscr.refresh()
x, y = 0, 0
time.sleep(0.5)
except:
curses.endwin()