-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathshangx.py
89 lines (72 loc) · 2.46 KB
/
shangx.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
#! /bin/env python3
# 赛博上香
# by Forever121
import os
import time
class incense():
def __init__(self):
self.smoke = ','
self.smoke_lines_offset = 0
self.smoke_columns_offset = 5
self.incense_pattern = '''
╱╱╱┏╮
╱╱╱╱╱┃┃
╱╱╱╱╱╱┃┃
╱╱╱╱╱ ┃┃
╱╱╱╱╱╱┃┃
╱╱╱╱╱╱ ┃┃
╱╱╱╱╱╱ ┃┃
╱╱╱╱╱╱ ┃┃
╱╱╱╱╱ ┃┃
╱╱╱╱╱ ┃┃
╱╱╱╱╱ ┃┃
╱╱╱╱╱ ┃┃
╱╱╱╱╱╱╱╱
'''
def format_incense_pattern(self):
global columns
# 定义格式化文本行数
format_incense_pattern = ''
# 获取终端行列长度
columns = os.get_terminal_size().columns
lines = os.get_terminal_size().lines
# 取列居中位置
center_lines = lines // 2 - str.count(self.incense_pattern, '\n') // 2
# 定义烟
# 定义烟的列上偏移量
self.smoke_columns_offset = self.smoke_columns_offset + 1 if self.smoke_columns_offset < 9 else 5
# * 4 方便展示效果
smoke_columns = self.smoke_columns_offset * 4
# 定义烟的行内偏移量,
self.smoke_lines_offset = self.smoke_lines_offset + 1 if self.smoke_lines_offset < 4 else 0
smoke = ' ' * smoke_columns + self.smoke + '\n' * self.smoke_lines_offset
center_lines -= self.smoke_lines_offset
text = '\n' * center_lines + '\n'+ smoke + self.incense_pattern
# print(lines, center_lines, smoke_columns, self.smoke_lines_offset)
# 绘制文本图形
for i in text.split('\n'):
# 取行居中位置
center_columns = (columns - len(i)) // 2
# 拼接
format_incense_pattern = format_incense_pattern + '\n' + ' ' * center_columns + i
print(format_incense_pattern, flush=True)
st = incense()
interval = 0.5
# windows
if os.name == 'nt':
for i in range(0, 42):
os.system('cls')
st.format_incense_pattern()
time.sleep(interval)
exit(0)
# linux
try:
os.system('tput civis')
for i in range(0, 42):
os.system('clear')
st.format_incense_pattern()
# break
time.sleep(interval)
os.system('tput cnorm')
except KeyboardInterrupt:
os.system('tput cnorm')