Python画一棵浪漫的圣诞树(2022)

技术

点击关注,这个圣诞我们一起过

一起去喝热红酒吧ヾ(≧▽≦*)o

picture.image

“圣诞节快来了,她还在你身边吗”

picture.image

MERRY CHRISTMAS

picture.image

写在前面

这是小编去年画的圣诞树哦,因为去年写的文章太 太太随便了,所以小编决定重新排版一下!

picture.image

MERRY CHRISTMAS

picture.image

picture.image

merry christmas

圣诞节是西方世界最盛大的节日之一,由基督教起源,纪念耶稣基督的诞生。圣诞节的日期定为每年的12月25日,是一个全球性的节日,被许多国家和地区的人民庆祝。

圣诞节的起源可以追溯到公元前4世纪,当时教皇尼西亚一世在公元336年将12月25日定为耶稣基督的诞辰日。圣诞节的庆祝方式有很多种,但是最普遍的方式就是家庭聚会、礼物交换、烤火炉、唱歌、食用传统的圣诞大餐和观看圣诞节游行和灯饰。

在圣诞节的前夕,许多人家里都会装饰圣诞树。圣诞树是一种常见的装饰,通常是挂上彩灯、小礼物、彩球等。传统上,许多家庭也会挂上饰有圣诞故事的彩球,这些彩球象征着耶稣基督的诞生。

在圣诞节当天,人们会在家庭聚会中交换礼物,这是圣诞节庆祝的重要活动。传统上,平安夜,家庭成员会相聚在一起吃圣诞晚餐,然后交换礼物,并一起唱圣诞歌曲。很多人也会去教堂参加宗教仪式,祷告、唱诗和庆祝耶稣基督的诞生。

圣诞节还有许多美食,不同地区的传统食品不同,但是许多地方都会有烤火鸡或火腿作为主菜,派和蛋糕作为甜点。

当然,圣诞节的庆祝方式不仅限于家庭聚会,许多城市和小镇还会举行圣诞游行和灯饰活动。游行中会有各种各样的节日装饰和表演,还会有圣诞老人的出现,向孩子们发放礼物。

总之,圣诞节是一个欢乐、温馨、家庭团聚的节日。它不仅象征着耶稣基督的诞生,也代表了爱与关怀。在这个节日里,人们不仅会享受美食,交换礼物,还会分享快乐和温暖。

picture.image

圣诞树(2022)

picture.image

picture.image

环境搭建见如何下载安装PyCharm并搭建Python开发环境

picture.image

完整程序


            
import turtle
            
import turtle as t
            
import random as r
            
def star():     #画圣诞树顶的大星星
            
    t.hideturtle()      #隐藏画笔
            
    t.pensize(2)        #给画笔设置大小
            
    t.pencolor("gold")  #给画笔设置颜色,'gold'表示金色
            
    t.up()              #提起画笔,画笔移动时不会画画
            
    t.forward(5)        #将画笔向前移5个像素(此时画笔方向向右,即向右移动5个像素)
            
    t.down()            #画笔放下,画笔移动时会产生轨迹
            
    t.begin_fill()      #给星星填充颜色
            
    for i in range(5):  #因为是五角星,所以要循环五次画五个角
            
        t.forward(20)
            
        t.right(144)
            
        t.forward(20)
            
        t.left(72)
            
    t.fillcolor('yellow')   #设置填充的颜色
            
    t.end_fill()
            
    return
            
def stars():          #画圣诞树上的小星星
            
    t.hideturtle()       #隐藏画笔
            
    t.speed(0)           #设置画画速度,0为最快速
            
    t.pensize(5)         #设置画笔大小
            
    for i in range(5):   #循环五次画五个角,与画大星星一样
            
        t.forward(5)
            
        t.right(144)
            
        t.forward(5)
            
        t.left(72)
            
    return
            
def stares():           #循环画圣诞树上的小星星
            
    t.hideturtle()      #隐藏画笔
            
    x1=-110   #x1赋初值
            
    x2=110    #x2赋初值
            
    y1=-40    #y1赋初值
            
    y2=-15    #y2赋初值
            
    n=0       #n用来控制在圣诞树两边画星星
            
    c = ['red', 'orange', 'yellow', 'brown', 'cyan', 'pink', 'blue', 'blueviolet','gold','white']    #星星的颜色,可自定义
            
    for i in c:   #循环画不同颜色的星星
            
        t.pencolor(i)     #每次从颜色列表c中按序取一个颜色
            
        t.up()      #找画星星的位置时要记得提起画笔
            
        if n%2==0:        #当n为偶数时在圣诞树左边画星星
            
            t.setx(r.randint(x1,0))
            
            t.sety(r.randint(y1,y2))
            
        else:             #当n为奇数时在圣诞树右边画星星
            
            t.setx(r.randint(0,x2))
            
            t.sety(r.randint(y1,y2))
            
        t.down()
            
        stars()     #开始画星星
            
        x1+=10      #每次画完记得按圣诞树的层数要将x1,x2减小,y1,y2上移
            
        x2-=10
            
        y1+=25
            
        y2+=25
            
        n+=1        #n=n+1
            
def tree(d,s):      #运用递归的方法画圣诞树
            
    t.hideturtle()              #隐藏画笔
            
    t.pencolor('limegreen')     #画笔颜色置为绿色,用来画树
            
    t.pensize(5)                #画笔大小为5
            
    t.speed(0)                  #最快速度画树(其实挺慢的)
            
    if d<=0:
            
        return
            
    t.forward(s)
            
    tree(d-1,s*0.8)
            
    t.right(120)
            
    tree(d-3,s*0.5)
            
    t.right(120)
            
    tree(d-3,s*0.5)
            
    t.right(120)
            
    t.backward(s)
            
def trees():          #画完整的圣诞树
            
    t.hideturtle()          #隐藏画笔
            
    t.left(90)              #将画笔向左旋转90度
            
    t.up()                  #提起画笔
            
    t.goto(0,-110)          #移动画笔到坐标(0,-110)处开始画树
            
    t.down()
            
    t.pencolor('saddlebrown')   #先画树根,将画笔置为棕色
            
    t.pensize(20)           #树根比较粗,画笔大小设置大一点
            
    t.forward(50)           #树根长度为50个像素
            
    t.up()                  #提笔
            
    t.goto(0,-50)           #将画笔移到(0,-50)处
            
    t.down()
            
    tree(15,60)             #调用画树的递归函数,慢慢画树
            
    t.goto(0,250)           #画完树后,将画笔移到(0250)的位置,准备画大星星
            
    t.down()
            
    t.right(90)             #将画笔向右旋转90度,指向右方,准备画大星星
            
    star()                  #画大星星
            
def snow():            #画雪花(全屏)
            
    t.hideturtle()     #隐藏画笔
            
    t.pensize(2)       #画笔大小
            
    t.speed(0)         #画雪花的速度
            
    for i in range(500):          #循环画500个雪花
            
        t.pencolor('white')       #雪花是白色的
            
        t.penup()                 #提笔
            
        t.setx(r.randint(-1000,1000))     #在画布上随机找点
            
        t.sety(r.randint(-1000,1000))
            
        t.pendown()
            
        snowsize=r.randint(4,10)          #雪花大小
            
        for i in range(6):            #画雪花(雪花为六瓣,需要循环六次)
            
            t.forward(int(snowsize))
            
            t.backward(int(snowsize))
            
            t.left(60)
            
def gift():       #画正方体礼物盒
            
    t.hideturtle()       #隐藏画笔
            
    t.speed(0)           #画笔速度
            
    x=40    #礼物盒的长和宽,我设置为正方形礼物盒,长宽高相等
            
    y=16    #由于是立体图形,宽与长不一样
            
    for i in range(4):    #以下为画礼物盒的方法(x,y的值可以自行修改)
            
        t.forward(x)
            
        t.left(90)
            
    t.up()
            
    t.left(45)
            
    t.forward(y)
            
    t.right(45)
            
    t.down()
            
    for i in range(4):
            
        t.forward(x)
            
        t.left(90)
            
    t.up()
            
    t.right(135)
            
    t.forward(y)
            
    t.down()
            
    t.left(180)
            
    t.forward(y)
            
    t.backward(y)
            
    t.right(45)
            
    t.forward(x)
            
    t.left(45)
            
    t.forward(y)
            
    t.backward(y)
            
    t.left(45)
            
    t.forward(x)
            
    t.right(45)
            
    t.forward(y)
            
    t.backward(y)
            
    t.left(135)
            
    t.forward(x)
            
    t.right(135)
            
    t.forward(y)
            
    t.backward(y)
            
    t.right(135)
            
    t.forward(x)
            
    t.left(90)
            
def gifts():            #画多个正方体礼物盒
            
    t.hideturtle()      #隐藏画笔
            
    t.penup()           #提笔
            
    t.goto(-180,-150)    #将画笔移到(-180,-150)的位置准备画礼物盒
            
    t.pendown()
            
    t.pensize(5)         #画笔大小
            
    c=['red','orange','yellow','green','cyan','blue','blueviolet']    #礼物盒的颜色
            
    for i in c:          #循环画不同颜色的礼物盒
            
        t.up()
            
        t.forward(40)
            
        t.down()
            
        t.pencolor(i)
            
        gift()
            
def writes():       #写字:“圣诞快乐!”
            
    t.pencolor("cyan")      #画笔颜色,天蓝色
            
    t.hideturtle()          #隐藏画笔
            
    t.up()
            
    t.goto(-160,-250)       #从(-160,-250)开始写字
            
    t.down()
            
    t.write("Merry Christmas!",font=("Comic Sans MS",30,"bold"))   #开始写字,"Merry Christmas!"为要写的字,"Comic Sans MS"为字体,30为字的大小,bold为粗体(可自行修改要写的字)
            
def treet(d,s):      #运用递归的方法画圣诞树
            
    t.hideturtle()              #隐藏画笔
            
    t.pencolor('limegreen')     #画笔颜色置为绿色,用来画树
            
    t.pensize(5)                #画笔大小为5
            
    t.speed(0)                  #最快速度画树(其实挺慢的)
            
    if d<=0:
            
        return
            
    t.forward(s)
            
    treet(d-1,s*0.8)
            
    t.right(120)
            
    treet(d-3,s*0.5)
            
    t.right(120)
            
    treet(d-3,s*0.5)
            
    t.right(120)
            
    t.backward(s)
            
if __name__ == '__main__':      #主函数
            
    '''
            
    t.bgcolor('black')
            
    t.up()
            
    t.goto(0,-110)
            
    t.down()
            
    t.left(90)
            
    treet(10,60)
            
    t.done()
            
    '''
            
    turtle.bgcolor("black")
            
    turtle.setup(1.0,1.0)
            
    turtle.title("圣诞树(2022)")
            
    # turtle.tracer(0)   #直接画完
            
    t = turtle.Turtle()
            
    t.screen.delay(0)    #加速画
            
    trees()         #画圣诞树
            
    stares()        #画树上的星星
            
    gifts()         #画礼物盒
            
    writes()        #写祝福语
            
    snow()          #下雪(画雪花)
            
    turtle.mainloop()        #将画板停住(否则画完画会自动退出画画界面)
        

picture.image

具体分析

picture.image

picture.image

本程序利用Python的turtle库进行绘图,通过递归的方法画出了一个立体的圣诞树,并在树上画出了一些星星,同时画出了一些彩色的礼物盒和下雪的效果。具体实现过程如下:

picture.image

picture.image

0 1

首先定义了一个画大星星的函数star(),并使用了turtle库的一些方法,如up()(提起画笔)、down()(放下画笔)、forward()(向前移动)、right()(向右旋转)、left()(向左旋转)、begin_fill()(开始填充颜色)、end_fill()(结束填充颜色)等。

0 2

接着定义了一个画小星星的函数stars(),它与画大星星的方法类似,只是大小不同。

0 3

然后定义了一个循环画星星的函数stares(),它调用了之前的两个画星星的函数,并使用了循环、randint()(随机生成整数)等方法,来实现在圣诞树的不同位置画出不同颜色的星星。

0 4

接着定义了一个递归函数tree(),它用来画圣诞树。在tree()函数中,先画出了树干,然后使用递归的方式画出了整个圣诞树。

0 5

然后定义了一个画多个礼物盒的函数gifts(),它调用了之前画一个礼物盒的方法gift(),并使用了循环和randint()方法,在画板上随机画出不同颜色的礼物盒。

0 6

接着定义了一个写祝福语的函数writes(),它使用了write()方法,可以在画板上写出想写的文字。

0 7

最后定义了一个下雪的函数snow(),它使用了randint()方法,在画板上随机画出一些雪花效果。

0 8

在主函数中,依次调用了之前定义的函数,并在最后使用了turtle.mainloop()方法,让画板一直保持在屏幕上,直到手动关闭。

picture.image

picture.image

通过以上的实现方法,我们就可以用Python编写一个圣诞树的绘图程序啦!

picture.image

picture.image

**picture.image

系列 文章**

picture.image

表白 系列

MERRY CHRISTMAS

  1. Python李峋同款跳动的爱心代码(可写字版)

  2. 一起来看python流星雨吧!(含表白界面)

  3. 无限弹窗!满屏表白代码来啦,快来看看吧

  4. 抖音同款满屏飘字表白代码(Python版)

  5. C语言满屏飘字表白代码(可修改文案)

  6. 我用C语言实现的文字跑马灯,简直是程序员的表白神器!

  7. C语言实现跳动的爱心完整代码

  8. 如何用Java实现一个可以写字的动态爱心

  9. 一起用C语言画个爱心吧!

  10. Python爱心光波代码

  11. Python漂浮爱心源码

  12. 叮咚,您的玫瑰花已送达~

picture.image

节日 系列

MERRY CHRISTMAS

  1. 专属于程序员的生日蛋糕,你会做了吗?

  2. 目光所至皆华夏,五星闪耀为信仰

  3. 中秋佳节将至,一起来赏月吧

  4. 让代码创造童话,共建快乐世界

  5. 这个冬天让我们用python送她一场飘雪吧!

  6. 一起用c语言模拟大雪纷飞的效果吧!

  7. Python恶搞代码

  8. Python烟花秀源码

  9. 这棵python圣诞树有亿点好看(含圣诞祝福)

  10. 让代码创造童话,共建快乐世界

  11. 终于要到我这只可爱鬼的节日啦!

picture.image

动漫 系列

MERRY CHRISTMAS

  1. 我用python实现了一只呆萌的喜羊羊!

  2. 教你用python实现一只可爱的懒羊羊!

  3. 这难道是用python实现的灰太狼?

  4. 谁会拒绝一只呆萌的小灰灰呢~

  5. 狼来啦!用代码画一只可爱的小香香吧~

  6. 用代码画一个海绵宝宝吧!

  7. 送你一只用python实现的哆啦A梦!

  8. 汤姆永远抓不到杰瑞,我们的故事永远不会结束

  9. 如何用python实现抖音爆火的草莓熊?

  10. 粉红色限定丨你好我是HelloKitty!

  11. 真相只有一个!名侦探柯南来袭~

  12. 我用python实现了三只可爱的皮卡丘!

  13. 难道美羊羊和沸羊羊在一起了?

picture.image

更多精彩

MERRY CHRISTMAS

  1. 樱花树下的约定,是承诺也是青春

  2. 一闪一闪亮晶晶,漫天都是小星星吖

  3. 三十行代码教你实现《黑客帝国》炫酷代码雨

  4. 在最黑暗的日子里,试着仰望星空吧

  5. “张万森,好久不见”(Python背景图)

  6. 张万森,下雪了(Python)

  7. 陪你看一场冬雪(大雪纷飞Python版)

picture.image

写在 后面

picture.image

我是一只有趣的兔子

感谢你的喜欢!

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生可观测性技术的落地实践
云原生技术和理念在近几年成为了备受关注的话题。应用通过云原生改造,变得更动态、弹性,可以更好地利用云的弹性能力。但是动态、弹性的环境也给应用以及基础设施的观测带来了更大的挑战。本次分享主要介绍了云原生社区中可观测性相关的技术和工具,以及如何使用这些工具来完成对云原生环境的观测。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论