圣诞节来了,怎能还没有圣诞树呢 快来为心爱的她送上专属的圣诞礼物叭~

圣诞节来了,怎能还没有圣诞树呢 快来为心爱的她送上专属的圣诞礼物叭~圣诞节来了,怎能没有圣诞树!作为我的粉丝朋友们,我不允许大家还没有专属于自己的圣诞树!我要让大家收到最特别最美丽的圣诞树!

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在这里插入图片描述

??????
???Hello,大家好我叫是Dream呀,一个有趣的Python博主,小白一枚,多多关照???
???CSDN Python领域新星创作者,大二在读,欢迎大家找我合作学习
?入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!???
?最后,愿我们都能在看不到的地方闪闪发光,一起加油进步???
???“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~???
???✨✨✨

前言:本来是打算停更一段时间的,因为最近期末复习很忙,自己也有许多私事要处理,心挺乱挺烦的。最主要的原因还是感觉自己的文章能被大家关注喜欢,自己挺荣幸的,粉丝也是达到了1W+,所以说我想停下来一段时间,好好审视一下自己,以后应该出一些什么样的文章来分享给大家,重新再规划一下学习路线。停更的这一段时间里,有很多小伙伴陆陆续续给我发私信,说想看什么内容,让我出一期,我都一一答应了,但最近真的很乱很烦,但我保证寒假我一定会出的!

一、背景故事

圣诞节风波❤️❤️❤️

马上不就到圣诞节了嘛,我看到朋友圈里很多小伙伴再纷纷炫耀自己收到的专属圣诞树,也有小伙伴私信我,说还没有自己的圣诞树!!!
在这里插入图片描述
在这里插入图片描述
作为我的粉丝朋友们,我不允许大家还没有专属于自己的圣诞树!我要让大家收到最特别最美丽的圣诞树,于是…冒着…期末挂科…的风险…我重拾了自己失传已久的海龟画图海龟画图全解–值得你一看! (这篇文章写了很久了,是一些海龟画图最基础的操作,不太了解的小伙伴们可以拿这篇文章来快速入门海龟画图!)
终于…经过…昨天…一个晚上…的艰苦…奋斗,我觉得我又行了!
从最底层开始,我一步一步完善代码设计出了:圣诞树+落叶+雪花+背景音乐+浪漫弹窗 五合一版圣诞树???! 话不多说,先看效果:
在这里插入图片描述

在这里插入图片描述
???哎嘿嘿,是不是非常的nice呀!看到这先别着急,为了我的期末成绩着想,是不是得先给我来个一键三连呀!!!
在这里插入图片描述

接下来让我们慢慢来聊,请大家前排就坐,爆米花自取哟(点赞+收藏相当于一份爆米花???)

二、五合一版圣诞树制作过程

需要用到的模块:

import turtle as t
import random
import pygame
import threading
import time
import tkinter as tk

这是我们要用到的一些基础库,没有安装的小伙伴们可以安装一下,要求编译器是Python3的环境。基础操作还不会的小伙伴看这里:❤️Python入门这些你必须要知道!
我用的是Pycharm,对Pycharm不懂的小伙伴look这个:全网首发,一篇文章带你走进pycharm的世界

1.基础圣诞树

画主体树的部分看似有些麻烦,但只要你把其中的几个循环看明白了就行了,无非就是几个函数重复控制画笔移动!

t.screensize(bg='black')  # 定义背景颜色,可以自己换颜色

def loving_heart(r):
    l = 2 * r
    t.left(45)
    t.forward(l)
    t.circle(r, 180)
    t.right(90)
    t.circle(r, 180)
    t.forward(l)


# 树函数(递归)
def tree(d, s):
    if d <= 0:
        return
    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)

2.落叶效果

在这里我使用了random函数,通过判断条件控制了两种颜色,大家也可以加入更多的颜色进行绘制落叶:

 if random.randint(1, 2) == 1:
      t.color('tomato')
 else:
      t.color('wheat')

也可以使其变成不同的形状,也没必要全是圆形,时间问题我就没改,大家感兴趣可以再改一下,也可以使落叶在圣诞树上,不用全在圣诞树下:t.circle(4)

# 绘制落叶
for i in range(200):
    a = 200 - 400 * 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)

3.雪花特效

这里我做了很详细的介绍,大家可以参考这个来具体看,还是很好看的:

# 绘制雪花
def drawsnow():  # 定义画雪花的方法
    t.speed(0)
    t.ht()  # 隐藏笔头,ht=hideturtle
    t.pensize(2)  # 定义笔头大小
    for i in range(200):  # 画多少雪花
        t.pencolor("white")  # 定义画笔颜色为白色,其实就是雪花为白色
        t.pu()  # 提笔,pu=penup
        t.setx(random.randint(-350, 350))  # 定义x坐标,随机从-350到350之间选择
        t.sety(random.randint(-100, 350))  # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始
        t.pd()  # 落笔,pd=pendown
        dens = 6  # 雪花瓣数设为6
        snowsize = random.randint(1, 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,小bug
            t.right(int(360 / dens))  # 转动角度
drawsnow()

4.背景音乐

这里使用Pygame模块中的mixer来控制音乐的播放,需要导入本地音乐路径,然后就可以啦!这样会使整个的绘制过程更加浪漫有趣!

file=r'薛之谦 - 迟迟.mp3'		# 音乐的路径
pygame.mixer.init()						# 初始化
track = pygame.mixer.music.load(file)	# 加载音乐文件
pygame.mixer.music.play()				# 开始播放音乐

5.浪漫弹窗

这里使用了tkinter模块来进行小弹窗的绘制,最后是用for循环来实现弹窗的重复性和随机性,这也是我觉得最大的创新之处吧!惊喜重重,满满心意与浪漫,哈哈哈。

# 弹窗制作
def dow():
    window = tk.Tk()
    width = window.winfo_screenwidth()
    height = window.winfo_screenheight()
    a = random.randrange(0, width)
    b = random.randrange(0, height)
    window.title('圣诞节快乐')
    window.geometry("200x50" + "+" + str(a) + "+" + str(b))
    tk.Label(window,
             text='圣诞节快乐!',  # 标签的文字
             bg='pink',  # 背景颜色
             font=('..', 17),  # 字体和字体大小
             width=18, height=2  # 标签长宽
             ).pack()  # 固定窗口位置
    window.mainloop()


threads = []
for i in range(100):  # 需要的弹框数量
    t = threading.Thread(target=dow)
    threads.append(t)
    time.sleep(0.01)
    threads[i].start()

6.署名制作

最后我又简单的加上了自己的署名,算是对自己产权的一种保护吧。虽然没啥用,你们也肯定会给我去掉,但我不管,这就是一种仪式感嗷!

# 写下署名
t.color("red")  # 填充颜色
t.up()  # 抬笔
t.goto(170,-200)
t.down()  # 落笔
t.write("Created:是Dream呀", font=("宋体", 18, "normal"))
t.ht()
# t.done()
t.hideturtle()

三、源码分享

源码来喽:

import turtle as t
import random
import pygame
import threading
import time
import tkinter as tk
file=r'薛之谦 - 迟迟.mp3'		# 音乐的路径
pygame.mixer.init()						# 初始化
track = pygame.mixer.music.load(file)	# 加载音乐文件
pygame.mixer.music.play()				# 开始播放音乐
t.screensize(bg='black')  # 定义背景颜色,可以自己换颜色
def loving_heart(r):
l = 2 * r
t.left(45)
t.forward(l)
t.circle(r, 180)
t.right(90)
t.circle(r, 180)
t.forward(l)
# 树函数(递归)
def tree(d, s):
if d <= 0:
return
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(200):
a = 200 - 400 * 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=hideturtle
t.pensize(2)  # 定义笔头大小
for i in range(200):  # 画多少雪花
t.pencolor("white")  # 定义画笔颜色为白色,其实就是雪花为白色
t.pu()  # 提笔,pu=penup
t.setx(random.randint(-350, 350))  # 定义x坐标,随机从-350到350之间选择
t.sety(random.randint(-100, 350))  # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始
t.pd()  # 落笔,pd=pendown
dens = 6  # 雪花瓣数设为6
snowsize = random.randint(1, 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,小bug
t.right(int(360 / dens))  # 转动角度
drawsnow()
# 写下署名
t.color("red")  # 填充颜色
t.up()  # 抬笔
t.goto(170,-200)
t.down()  # 落笔
t.write("Created:是Dream呀", font=("宋体", 18, "normal"))
t.ht()
# t.done()
t.hideturtle()
time.sleep(2)
# 弹窗制作
def dow():
window = tk.Tk()
width = window.winfo_screenwidth()
height = window.winfo_screenheight()
a = random.randrange(0, width)
b = random.randrange(0, height)
window.title('圣诞节快乐')
window.geometry("200x50" + "+" + str(a) + "+" + str(b))
tk.Label(window,
text='圣诞节快乐!',  # 标签的文字
bg='pink',  # 背景颜色
font=('..', 17),  # 字体和字体大小
width=18, height=2  # 标签长宽
).pack()  # 固定窗口位置
window.mainloop()
threads = []
for i in range(100):  # 需要的弹框数量
t = threading.Thread(target=dow)
threads.append(t)
time.sleep(0.01)
threads[i].start()

四、?美好祝愿?

希望大家在圣诞节都可以和喜欢的人在一起,送上那棵专属于她or他的圣诞树???!天天开心,好好生活,我一直都在哟~???(有任何问题的话,欢迎评论区或者私信我嗷,我都会看的!)

五、原工程文件分享

如果你实在是不懂Python,那就直接下载这个压缩包就可以把,一键运行即可,需要自取:
圣诞树表白源码+素材+拿去直接用

?往期文章—-好文推荐?

[Dream公开课]零基础玩转Python基础篇—-第一节:Python的自我介绍

??? 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~
在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/164247.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ConcurrentHashMap 1.7和1.8区别

    ConcurrentHashMap 1.7和1.8区别ConcurrentHashMap与HashMap和Hashtable最大的不同在于:put和get两次Hash到达指定的HashEntry,第一次hash到达Segment,第二次到达Segment里面的Entry,然后在遍历entry链表(1)从1.7到1.8版本,由于HashEntry从链表变成了红黑树所以concurrentHashMap的时间复杂度从O(n)到O…

  • SQL SERVER实例解析

    什么是SQLSERVER实例SQLSERVER实例的概念和“类与对象”的概念很相似。可以把SQLSERVER的安装程序看做是一个类,安装过程则是创建对象的过程,创建出来的对象称为“SQLSE

    2021年12月22日
  • 2020朝花夕拾-不务正业的大学生做了什么比赛?[通俗易懂]

    2020朝花夕拾-不务正业的大学生做了什么比赛?[通俗易懂]朝花夕拾,旧事重提之意。恰逢CSDN年终征文,所以写作本文为年终总结,实为大学四年的总结,和CSDN一起成长参与各类竞赛的回忆。四年里和小伙伴们一起辛苦奋斗做了那么多比赛,当比赛结束,那些作品便无人问津了,放在学校的犄角旮旯里随着时间风化,也许并没有那么完善,但是对于当时付出时间和精力的我们来说,尤为珍贵,因此今天将它们一一回顾,作为纪念。

  • 设计模式(五)适配器模式Adapter(结构型)

    设计模式(五)适配器模式Adapter(结构型)设计模式(五)适配器模式Adapter(结构型)1.概述:接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源适配器。………

  • 在北京的那三年——实习

    在北京的那三年——实习

  • flake8 vscode_vscode报错怎么看

    flake8 vscode_vscode报错怎么看在用vscode编译python时,自带的flake8报一些不必要的错误,解决办法:{“python.linting.pylintEnabled”:false,”python.linting.enabled”:true,”python.linting.flake8Enabled”:true,”python.linting.flake8Args”:[“–max-line-length=120″,”–ignore=E4

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号