import os
import time
class MoveHeart:
# 初始化,构造一个心形的列表,把每个位置心形的输出都存进去。
def __init__(self):
self.s = []
for i in range(1, 71, 3):
# 将21个不同位置心形的图案存进列表中
self.s.append([''.join([('Love_ Tencent'[(x - y) % 8] if ((x * 0.05) ** 2 + (y * 0.1) ** 2 - 1) ** 3 - (
x * 0.05) ** 2 * (y * 0.1) ** 3 <= 0 else ' ') for x in range(-20 - i, 20 + i)]) for y in
range(15, -15, -1)])
# 整体心形移动函数
def WholeMove(self):
# 初始化时 1的位置到71 的位置总共储存23个心形图案 依次从左到右输图案
for i in range(0, 23, 1):
# linux控制台清屏,使得我们使得重新加载图像位置
os.system('clear')
# 将心形图案组装成字符串
s = "\n".join(self.s[i])
# \033[1;31m 输出的颜色控制
print('\033[1;31m' + s)
time.sleep(0.1)
for i in range(22, -1, -1):
os.system("clear")
# 将心形图案组装成字符串
s = "\n".join(self.s[i])
# \033[1;31m 输出的颜色控制
print('\033[1;31m' + s)
time.sleep(0.1)
def PartMove(self):
# 上半部分向左移动未到达中间位置
for i in range(0, 12, 1):
os.system("clear")
s = '\n'.join([self.PartMove_r(x, i) for x in range(0, 23, 1)])
print(s)
time.sleep(0.1)
# 上半部分向左移动超过中间位置
for i in range(11, -1, -1):
os.system("clear")
s = '\n'.join([self.PartMove_l(x, i) for x in range(22, -1, -1)])
print(s)
time.sleep(0.1)
os.system('clear')
print('\n'.join(self.s[11]))
time.sleep(3)
def PartMove_r(self, x, i):
# 上半部分向右移动
if x + i <= 11:
return self.s[x + i][x]
# 上半部分不移动
if x <= 11 and x + i >= 11:
return self.s[11][x]
# 下半部分不移动
elif x > 11 and x - i <= 11:
return self.s[11][x]
# 下半部分向左移动
else:
return self.s[x - i][x]
def PartMove_l(self, x, i):
# 上半部分不移动
if x >= 11 and x - i <= 11:
return self.s[11][22 - x]
# 上半部分向右移动
elif x >= 11 and x - i >= 11:
return self.s[x - i][22 - x]
# 下半部分不移动
elif x < 11 and i + x >= 11:
return self.s[11][22 - x]
#下半部分向左移动
else:
return self.s[i + x][22 - x]
if __name__ == '__main__':
new_heart = MoveHeart()
new_heart.WholeMove()
new_heart.PartMove()
print('\033[0m')
移动的心
最新推荐文章于 2022-07-09 15:54:06 发布