移动的心

在这里插入图片描述

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')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值