圣诞节快到了,教大家用Python画一个简单的圣诞树和烟花,送给那个她

WIDTH = 0
HEIGHT = 0
ORI = (0, 0)
COLOR = {'0': '#070920', 'navyblue': '#000080'}
FIRE = []

def setParam():
    global WIDTH
    global HEIGHT
    global ORI
    global FIRE
    WIDTH = t.window_width()
    HEIGHT = t.window_height()
    ORI = (0, -HEIGHT / 2)
    # gold
    FIRE.append(['white', '#FFD700', '#DAA520', '#BDB76B', ])
    # red
    FIRE.append(['white', '#F08080', '#A0522D', '#DC143C', ])
    # green
    FIRE.append(['white', '#7FFF00', '#32CD32', '#006400', ])
    # cyan
    FIRE.append(['white', '#40E0D0', '#00FFFF', '#008080', ])
    # pink
    FIRE.append(['white', '#FF69B4', '#FF1493', '#8B008B', ])
    # buff
    FIRE.append(['white', '#FFE4C4', '#FFDAB9', '#F0FFF0', ])
    # bluish
    FIRE.append(['white', '#ADD8E6', '#AFEEEE', '#00BFFF', ])

def dist(a, b):  # 距离
    return ((a - b) * (a - b)).sum()

def shoot():
    t.tracer(4)  # 在循环中,图形将一次画出4次循环的图
    t.pu()
    target = np.array((np.random.randint(-WIDTH // 6, WIDTH // 6),
                       HEIGHT // 6))  # 都在同一高度
    angle = atan((target - ORI)[1] / (target - ORI)[0])
    if angle < 0:
        angle += math.pi  # 纠正负方向
    unit = np.array([cos(angle), sin(angle)])  # 方向向量
    print('angle: ', angle)
    print('target: ', target)
    # 镜头的顺序坐标
    seq = np.array([ORI, ORI - 55 * unit, ORI - 105 * unit, ORI - 155 * unit])
    t.speed(0)  # 瞬动
    while dist(seq[0], target) > 120:  # 如果没有到达爆炸中心
        seq = seq + 30 * unit

        t.goto(seq[1])
        t.pd()
        t.width(3)
        t.pencolor('white')
        t.goto(seq[0])
        t.pu()

        t.goto(seq[2])
        t.pd()
        t.width(3)
        t.pencolor('yellow')
        t.goto(seq[1])
        t.pu()

        # 清除发射上去的光束尾迹
        t.goto(seq[3])
        t.pd()
        t.width(10)
        t.pencolor(COLOR['0'])
        t.goto(seq[2])
        t.pu()
        time.sleep(0.05)

    # 发射上去的光束最后清除
    t.pd()
    t.width(10)
    t.goto(seq[0])
    t.pu()
    time.sleep(0.1)
    return target  # 就在爆炸中心

def explode(center):
    number = np.random.randint(50, 100)  # 光束数
    colormode = np.random.randint(0, 5)
    unit = np.array([])  # 方向向量
    spd = []  # 每个光束的速度
    seq = []  # 每个波束的顺序坐标
    if colormode :
        coloridx = [np.random.randint(0, len(FIRE))]
    elif colormode == 2:
        coloridx = [np.random.randint(0, len(FIRE)),
                    np.random.randint(0, len(FIRE))]
    elif colormode == 3:
        coloridx = [np.random.randint(0, len(FIRE)),
                    np.random.randint(0, len(FIRE)),
                    np.random.randint(0, len(FIRE))]
    elif colormode == 4:
        coloridx = []

Original: https://www.cnblogs.com/hahaa/p/16967548.html
Author: 轻松学Python
Title: 圣诞节快到了,教大家用Python画一个简单的圣诞树和烟花,送给那个她

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/808225/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【收藏】如何优雅的在 Python进行论文出图

    python作为可视化利器,越来越受到研究人员的喜爱,并且常被作为论文出图的工具。论文出图讲究固定的格式,所以配置一个固定的格式非常重要。下面这篇博文列出了一些比较常见的一些配置和…

    Python 2023年9月6日
    054
  • 初学Scrapy

    1、items.py 像字典一样 定义所爬取信息的名字,相当于规定好要提取信息的Key键 2.spiders包中 用来请求和解析 默认起始爬取链接、request请求、def pa…

    Python 2023年10月3日
    027
  • 2021-02-04-scrapy爬虫案例1:爬取博客园新闻版块详情页-基础入门篇

    详情页数据解析及写入items 还是先回看下parse方法。 在parse方法中,我们两次yield出数据: 第二次的yield不用管了,因为第二次是将解析得到的下一页新闻列表的U…

    Python 2023年10月2日
    034
  • DW-hands-on-data-analysis chapter 2

    一、数据分析之数据清洗及特征处理 目的:将数据清洗成可以分析或建模的样子 1.缺失值 1.1各列缺失值个数 df[‘column’].isna.sum( )…

    Python 2023年8月20日
    067
  • python tkinter图形界面和代码结合_如何将Matplotlib图形嵌入到Tkinter图形用户界面中…

    我一直在研究Tkinter和嵌入式图形,在网上找到的一个教程中,我能够使以下代码片段完美地工作:from tkinter import * import matplotlib ma…

    Python 2023年9月4日
    058
  • 支付宝支付&内网穿透

    支付宝支付&内网穿透 一 沙箱环境 二 python第三方模块python-alipay-sdk 三 python-alipay-sdk二次封装 四 支付接口 五 内网穿透…

    Python 2023年9月26日
    055
  • 牛逼了,这21款游戏项目,只一行代码即可上手—开玩【附源码】

    导语 随着时代的不同 社会的改变 伴随着一起长大的游戏 逐渐淡出我们的视线 却一直铭刻在我们心中 还记得你小时候都玩过什么游戏吗?超级玛丽——坦克大战——魂斗罗——贪吃蛇——植物大…

    Python 2023年9月21日
    049
  • KITTI数据集介绍

    本文为个人学习笔记,参考文献已经标注出。 kitti数据集主要分为以下几个文件夹。下面分别介绍。 一、标定校准文件 calib训练集存储为data_object_calib/tra…

    Python 2023年9月16日
    099
  • html换行的方法

    1、使用 1 <html> 2 <body> 3 <p> 4 春眠不觉晓&…

    Python 2023年6月11日
    061
  • pytest合集(14)— allure快速入门

    一、allure环境部署 1、allure介绍 Allure Framework 是一个开源的,灵活的,轻量级,多语言的测试报告框架(工具)。 allure支持多种测试框架,如Py…

    Python 2023年9月10日
    066
  • Linux网络操作系统常用命令详解–Top命令

    Linux系统中Top命令可以让用户实时动态的观察了解系统的总体运行情况。该命令除了能够显示系统的总体运行情况外,还能显示被Linux内核管理的任务列表。Top命令显示的系统总体运…

    Python 2023年6月6日
    062
  • 【华为机试真题详解】最大报酬【2022 Q4 | 100分】

    文章目录 前言 题目描述 输入描述 输出描述 示例 1 题目解析 参考代码 ; 前言 《华为机试真题详解 Python实现》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。如…

    Python 2023年9月26日
    046
  • pytest文档81 – 如何管理Captured logging日志

    前言 pytest 自动捕获级别为 WARNING 或以上的日志消息,并以与捕获的 stdout 和 stderr 相同的方式在每个失败测试的各自部分中显示它们。 日志显示 当输入…

    Python 2023年9月11日
    050
  • 分层索引

    分层索引时pandas的重要特性,允许你在一个轴上拥有多个(两个或两个以上)索引层级。创建分层索引Series,以列表的列表(或数组)作为索引。 data = pd.Series(…

    Python 2023年8月8日
    066
  • 程序员核心——详解调试(2)

    所爱隔山海,山海皆可平,所念皆星河,星河不可及。 上课! 接着上节课讲的调试(1),本节课进一步讲解调试(2). 文章目录 1.调试实例讲解(2) 校招笔试题 2.如何写出好的(易…

    Python 2023年10月8日
    043
  • YOLOv5的Tricks | 【Trick14】YOLOv5的val.py脚本的解析

    如有问题,恳请指出。 这篇可能是这个系列最后的一篇了,最后把yolov5的验证过程大致的再介绍介绍,基本上把yolov5的全部内容就稍微过了一遍了,也是我自己对这个项目学习的结束。…

    Python 2023年9月16日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球