Python画圣诞树和烟花源代码

最近一直想让女朋友开心开心,眼看就到圣诞了,就想着来个不一样的,给她画个圣诞树玩一玩,也算是自己亲手做的,用了心思了。看了关于画圣诞树的很多博客,人才确实很多啊,鄙人不才,也加了点自己的创意。主要就是圣诞树和烟花两个部分,圣诞树里面的元素包含爱心,树,雪花,星星,署名,落叶等;烟花这边也是直接用的别人的程序进行了部分改动。本人将圣诞树和烟花相结合进行了绘制,话不多说,代码如下,赶紧给你的心仪之人吧!时间仓促,大家千万别嘲笑哈,祝大家一切顺利!使用前记得改署名呦!

效果图如下:

 

 

 完整源代码如下:

'''
name:圣诞树+烟火
author:Babysen
'''import turtle as t
import random
import threading
import time
import tkinter as tk
import math
from math import cos, sin, atan, sqrt
import numpy as npt.screensize(bg='black')  # 定义背景颜色# 心函数
def loving_heart(r):l = 2 * rt.left(45)t.forward(l)t.circle(r, 180)t.right(90)t.circle(r, 180)t.forward(l)# 星函数
def loving_star(n):for i in range(5):t.forward(n / 5)t.right(144)t.forward(n / 5)t.left(72)# 树函数(递归)
def tree(d, s):if d <= 0:returnt.width(5)t.forward(s)tree(d - 1, s * .8)t.right(120)tree(d - 3, s * .5)t.right(120)tree(d - 3, s * .5)t.right(120)t.backward(s)  # 回退函数# 画爱心部分
t.penup()
t.goto(0, 200)  # 设置起点位置
t.pendown()
t.pencolor('red')  # 设置画笔颜色
t.color('red')
t.begin_fill()  # 对图形进行填充
loving_heart(20)  # 执行画爱心函数
t.end_fill()# 画树部分
n = 100
t.speed(0)
# t.Turtle().screen.delay(0)
t.right(225)
t.color("dark green")
t.backward(n * 4.8)
tree(15, n)
t.backward(n / 5)# 绘制落叶
for i in range(100):a = 100 - 200 * random.random()b = 10 - 20 * random.random()t.speed(0)t.up()t.forward(b)t.left(90)t.forward(a)t.down()if random.randint(1, 2) == 1:t.color('tomato')else:t.color('wheat')t.circle(4)t.up()t.backward(a)t.right(90)t.backward(b)# 绘制雪花
def drawsnow():  # 定义画雪花的方法t.speed(0)t.ht()  # 隐藏笔头,ht=hideturtlet.pensize(2)  # 定义笔头大小for i in range(160):  # 画多少雪花t.pencolor("white")  # 定义画笔颜色为白色,其实就是雪花为白色t.pu()  # 提笔,pu=penupt.setx(random.randint(-350, 350))  # 定义x坐标,随机从-350到350之间选择t.sety(random.randint(-100, 350))  # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始t.pd()  # 落笔,pd=pendowndens = 6  # 雪花瓣数设为6snowsize = random.randint(2, 10)  # 定义雪花大小for j in range(dens):  # 就是6,那就是画5次,也就是一个雪花五角星# t.forward(int(snowsize))  #int()取整数t.fd(int(snowsize))t.backward(int(snowsize))# t.bd(int(snowsize))  #注意没有bd=backward,但有fd=forward,小bugt.right(int(360 / dens))  # 转动角度
drawsnow()# 画五角星
for i in range(-200,200,20):t.penup()t.goto(i, 300)  # 设置起点位置t.pendown()t.pencolor('yellow')  # 设置画笔颜色t.color('yellow')t.begin_fill()  # 对图形进行填充loving_star(30)t.end_fill()t.right(0)for i in range(-150,150,20):t.penup()t.goto(i, 280)  # 设置起点位置t.pendown()t.pencolor('yellow')  # 设置画笔颜色t.color('yellow')t.begin_fill()  # 对图形进行填充loving_star(30)t.end_fill()t.right(0)for i in range(-100,100,20):t.penup()t.goto(i, 260)  # 设置起点位置t.pendown()t.pencolor('yellow')  # 设置画笔颜色t.color('yellow')t.begin_fill()  # 对图形进行填充loving_star(30)t.end_fill()t.right(0)for i in range(-50,50,20):t.penup()t.goto(i, 240)  # 设置起点位置t.pendown()t.pencolor('yellow')  # 设置画笔颜色t.color('yellow')t.begin_fill()  # 对图形进行填充loving_star(30)t.end_fill()t.right(0)for i in range(-20,21,20):t.penup()t.goto(i, 220)  # 设置起点位置t.pendown()t.pencolor('yellow')  # 设置画笔颜色t.color('yellow')t.begin_fill()  # 对图形进行填充loving_star(30)t.end_fill()t.right(0)# 写下署名
t.color("white")  # 填充颜色
t.up()  # 抬笔
t.goto(170, -240)
t.down()  # 落笔
t.write("Author:Babysen", font=("Times New Roman", 18, "normal"))
t.ht()
# t.done()
t.hideturtle()
time.sleep(2)#烟火
WIDTH = 0
HEIGHT = 0
ORI = (0, 0)
COLOR = {'0': '#070920', 'navyblue': '#000080'}
FIRE = []def setParam():global WIDTHglobal HEIGHTglobal ORIglobal FIREWIDTH = t.window_width()HEIGHT = t.window_height()ORI = (0, -HEIGHT / 2)# goldFIRE.append(['white', '#FFD700', '#DAA520', '#BDB76B', ])# redFIRE.append(['white', '#F08080', '#A0522D', '#DC143C', ])# greenFIRE.append(['white', '#7FFF00', '#32CD32', '#006400', ])# cyanFIRE.append(['white', '#40E0D0', '#00FFFF', '#008080', ])# pinkFIRE.append(['white', '#FF69B4', '#FF1493', '#8B008B', ])# buffFIRE.append(['white', '#FFE4C4', '#FFDAB9', '#F0FFF0', ])# bluishFIRE.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 * unitt.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 <= 1: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 = []# 不同大小烟花的步骤steps = int((number ** 0.5) * 2)# 初始化for i in range(number):angle = np.random.rand() * 2 * math.pi - math.piunit = np.append(unit, [cos(angle), sin(angle)]).reshape(-1, 2)seq = np.append(seq,[center,center - 10 * unit[i], center - 50 * unit[i],center - 90 * unit[i], center - 130 * unit[i],center - 135 * unit[i]])spd.append(int(15 + (np.random.rand() - 0.5) * 5))if colormode <= 1:coloridx.append(coloridx[0])elif colormode == 2:coloridx.append(coloridx[np.random.randint(0, 2)])elif colormode == 3:coloridx.append(coloridx[np.random.randint(0, 3)])elif colormode == 4:coloridx.append(np.random.randint(0, len(FIRE)))seq = seq.reshape([-1, 6, 2]).astype(np.int32)t.tracer(0x3f3f3f3f)  # 关闭自动更新,0x3f3f3f3f是一个大数字 for stage in range(steps):for i in range(number):seq[i] = seq[i] + spd[i] * unit[i]seq[i][4] = centerfor cur in range(4):t.pu()t.goto(seq[i][cur + 1])t.pd()t.pencolor(FIRE[coloridx[i]][cur])t.width(4 - cur)t.goto(seq[i][cur])t.pu()if stage >= 5:  # 等待所有光束就位t.update()time.sleep(0.04)# 清除每次绽放的烟花for cur in range(4, -1, -1):for i in range(number):t.pu()t.goto(seq[i][cur + 1])t.pd()t.pencolor(COLOR['0'])t.width(100)t.goto(seq[i][cur])t.pu()time.sleep(0.02)t.update()def main():t.setup(700, 750, 100, 0)setParam()while True:point = shoot()explode(point)exitonclick()  # 在任何位置单击退出if __name__ == '__main__':main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/59434.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用python画圣诞树的代码

如何用python画一个圣诞树呢&#xff1f; 一、最简单的绘制圣诞树 代码也特别简单&#xff1a; # 最简单的绘制圣诞树height 5 # 树的高度 stars 1 # 树的雪花数&#xff0c;初始为1 for i in range(height): #…

【送给她的圣诞礼物】尝试用turtle画圣诞树

尝试用turtle画圣诞树 前言开发环境步骤一&#xff1a;加载bgm所念皆星河步骤二&#xff1a;窗口界面初始化步骤三&#xff1a;turtle初始化步骤四&#xff1a;画树的外轮廓步骤五&#xff1a;画雪花步骤六&#xff1a;画花朵步骤七&#xff1a;画五角星开源 前言 今天就是平安…

用 Python 画圣诞树的 N 种玩法

作者 | 写代码的明哥 来源 | Pyhton编程时光 马上就是圣诞节了&#xff0c;先提前祝大家圣诞快乐&#xff01; 今天来给大家分享一波如何使用 Python 来画一颗圣诞节树&#xff0c;包含多种版本&#xff0c;从平民版到豪华版&#xff0c;像极了一个程度员从入门到高级秃头程序员…

圣诞节到了,教大家用 Python 绘制几棵圣诞树~

大家好&#xff0c;我是大飞 今天是圣诞节&#xff0c;先在这里祝大家圣诞节快乐~~&#xff0c;用英语来表达就是 Merry Christmas ~~&#xff0c; 为了贴合这个氛围&#xff0c;今天分享五种用 Python 绘制圣诞树的方法&#xff0c;从基础到高级&#xff0c;效果也不断攀升分…

【圣诞来了】3分钟教你用java画一颗彩色圣诞树,送给别人作为圣诞礼物吧

⭐️写在前面 这里是温文艾尔の学习之路&#x1f44d;如果对你有帮助&#xff0c;给博主一个免费的点赞以示鼓励把QAQ&#x1f44b;博客主页&#x1f389; 温文艾尔の学习小屋⭐️更多文章&#x1f468;‍&#x1f393;请关注温文艾尔主页&#x1f345;文章发布日期&#xff1a…

如何用python画圣诞树(附圣诞树代码)

python圣诞树代码 1、简单的绘制圣诞树 新建tree1.py或者直接输入下面代码运行 #声明树的高度 height 5 #树的雪花数&#xff0c;初始为1 stars 1 #以数的高度作为循环次数 for i in range(height): print((’ ’ * (height - i)) (’*’ * stars)) stars 2 #输…

【AI金融】Can ChatGPT Forecast Stock Price Movements? Return Predictability and Large Language Models

titleChatGPT能够预测股票走势吗&#xff1f;回到可预测性与大预言模型出版时间2023年4月6日doiarXiv:2304.07619v3 [q-fin.ST]期刊arXiv类别Null关键词Statistical Finance (q-fin.ST); Computation and Language (cs.CL)文章链接https://arxiv.org/abs/2304.07619 ChatGPT可以…

AIGC—— 内容生产力革命的起点

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.AIGC 1.什么是AIGC? 2.AIGC有哪些优势与挑战 &#xff08;1&#xff0…

QQ、微信、QQ浏览器UserAgent

如果你开发过微信公众好或者手机站的话应该遇到过一些页面访问的时候会提示使用手机或者微信访问。 但是手机上面如何查看页面源码&#xff1f; 如何调试&#xff1f; 方法当然是很多的&#xff0c;下面提供一种方法&#xff1a; 使用Chrome配合UserAgent可查看微信页面。U…

【浏览器】浏览器安全

浏览器安全分为页面安全、系统安全、网络安全 页面安全 为了页面安全浏览器引入了最核心的安全策略&#xff1a;同源策略&#xff08;Same-origin policy&#xff09; 同源策略 同源指&#xff1a;URL的协议、域名和端口都相同。两个不同的源之间若想要相互访问资源或者操作…

5-HT2A靶向药物|适应症|市场销售-上市药品前景分析

据世界卫生组织称&#xff0c;抑郁症是一种多因素疾病&#xff0c;影响全球约3.5 亿人。中枢神经系统最广泛的单胺 - 血清素 (5-HT) 被认为在这种情况的病理机制中起着至关重要的作用&#xff0c;并且神经递质的重要性被“血清素假说”提升&#xff0c;将抑郁症的存在联系起来 …

国内十大上市移动医疗企业盘点

作为医疗改革的重要突破口&#xff0c;我国智慧医疗的发展已经渐行渐近&#xff0c;上海、杭州等地的智慧医疗走在全国前列。随着多项医卫信息化政策的密集出台以及医改的不断深入&#xff0c;人们惊喜地发现&#xff0c;无论是传统的医疗管理理念亦或是传统的就医模式正在或将…

OpenAI正式上线安卓版ChatGPT,支持普通话甚至粤语等方言

OpenAI 今日宣布&#xff0c;安卓版 ChatGPT 已正式上线&#xff0c;目前美国、印度、孟加拉国和巴西四国的安卓用户已经可在谷歌 Play 商店进行下载&#xff0c;并计划在下周拓展到更多地区。 下载直达&#xff1a;https://play.google.com/store/apps/details?idcom.openai…

ChatGPT细说从头(十四):思维链

原文&#xff1a;ChatGPT细说从头(十四)&#xff1a;思维链 - 知乎 引言 ChatGPT刚推出的时候&#xff0c;大家会发现它在数学运算方面表现不佳&#xff0c;因为复杂的数学问题需要多步推理过程&#xff0c;但没过多久就发现它有了重要提升&#xff0c;而且回答方式也有了显著…

人工智能五大趋势预测!这些人将成为职场“香饽饽”!

近日&#xff0c;在如火如荼的「ChatGPT大战」中&#xff0c;科大讯飞发布星火认知大模型&#xff0c;学而思另辟蹊径自研数学大模型「MathGPT」&#xff0c;已经取得了阶段性成果。 作为生成式人工智能的里程碑&#xff0c;ChatGPT在全球引起了新浪潮。未来&#xff0c;人工智…

OpenAI最新官方ChatGPT聊天插件接口《插件安全审查流程》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(六)(附源码)

Plugin review process 插件审查流程 前言Plugin review process 插件审查流程What we are looking for in a plugin 我们正在寻找一个插件Plugin states 插件状态Types of users 用户类型Submit a plugin for review 提交一个插件进行审核其它资料下载 前言 在 ChatGPT 中&am…

chatgpt赋能python:Python插件下载指南

Python插件下载指南 Python作为一种高级编程语言&#xff0c;应用广泛&#xff0c;拥有各种各样的插件库。这篇文章将帮助你了解Python插件下载的基本步骤和注意事项。 找到需要的插件 首先&#xff0c;你需要知道自己想要的插件是什么。你可以在Python官方网站、GitHub或者…

Java实现AI机器人聊天

文章目录 前言一、账号注册申请密钥二、参数详情三、Java集成1.调用接口2.响应数据 四、效果总结 前言 OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或实现代码等场景。提供一系列具有不同学习训练的模型&#xff0c;适用于处理不同的任务&#xff0c;并且自己能够自…

新浪博客提示“系统繁忙,请稍候再试”的解决方法

前段时间想写博客&#xff0c;提交几次都不成功&#xff0c;提示“系统繁忙&#xff0c;请稍候再试。”如下图&#xff1a; 一开始还以为真是系统繁忙的原因&#xff0c;过了几天换了不同时间段提交&#xff0c;故障依旧。网上试过找一些不同的方法 尝试&#xff0c;也没解决。…

VM虚拟机异常关机后再次登录显示系统繁忙怎么办?

上一次由于电脑卡了&#xff0c;在关闭虚拟机的时候卡住了&#xff0c;等再次登录的时候就显示系统繁忙无法登陆。 这个时候不要慌张&#xff0c;找到你当时安装虚拟机的文件夹Centos&#xff0c;打开文件夹&#xff0c;里面有一个.lck的文件夹&#xff0c;删除这个文件夹就可…