Python精美圣诞树

系列文章

序号直达链接
炫酷系列
1Python制作一个无法拒绝的表白界面
2Python满屏飘字表白代码
3Python无限弹窗满屏表白代码
4Python李峋同款可写字版跳动的爱心
5Python流星雨代码
6Python漂浮爱心代码
7Python爱心光波代码
8Python普通的玫瑰花代码
9Python炫酷的玫瑰花代码
10Python多彩的玫瑰花代码
节日系列
1Python动漫风烟花秀代码
2Python新年烟花秀代码
3Python圣诞礼物代码
4Python画圣诞树代码
5Python可爱版圣诞树丨绿色
6Python可爱版圣诞树丨粉色
7Python大雪纷飞代码
8Python生日蛋糕代码
9Python五彩气球代码
10Python国庆祝福代码
11Python万圣礼物代码
12Python愚人节礼物代码
13Python浪漫星空代码
14Python樱花树代码
动漫系列
1Python名侦探柯南
2Python喜羊羊
3Python懒羊羊
4Python沸羊羊
5Python小灰灰
6Python小香香
7Python灰太狼
8Python海绵宝宝
9Python哆啦A梦
10Python凯蒂猫
11Python猫和老鼠
12Python草莓熊
13Python迷你皮卡丘
14Python高级皮卡丘
15Python豪华皮卡丘
16Python史迪仔
17Python小熊猫
18Python蜘蛛侠
19Python可爱版蜡笔小新
20Python萌萌的蜡笔小新
21Python罗小黑
22Python猪猪侠
炫酷系列
1  Python张万森下雪了
2Python一闪一闪亮晶晶
3Python黑客帝国代码雨
4Python七彩花朵
5Python模拟3D星空
6Python金榜题名
7Python满天星

写在前面 

最近在各大社交平台看到好多圣诞树,看到大佬们画的圣诞树一个比一个精致,我也特别想尝试画一棵特别的圣诞树。下面是我画的一棵简易的圣诞树,虽然和网络上大佬们的圣诞树相比不是很精致,但是对于萌新们来说,画这样一棵简易的圣诞树还是非常轻松的。

ps:重要的不是圣诞树,重要的是你的心意哦~ 

技术需求

让我们先来学习Python画图小工具——Turtle(小海龟) 

小海龟(Turtle)是Python中画图的一个重要的包,里面包含丰富的画图工具以及画图的各种功能,当你学会了用Turtle画图后,你可以画任何你想画的图案,此时你就可以在圣诞树上添加你的装饰,把一棵简易的圣诞树变成精致的圣诞树了哈哈哈。是不是已经迫不及待啦,那就让我们一起来看看叭~

1.1 Turtle画板 

Turtle的画板大小可以用turtle.screensize()函数来设置:

turtle.screensize(width,height,bg):设置画板的大小,包含长和宽,width为宽,height为高,bg为画布颜色

1.2 Turtle画笔 

Turtle的画笔有几个常用的函数,例如:

①turtle.penup():抬起画笔,此时移动画笔不会在画布上留下痕迹哦

②turtle.pendown():放下画笔,与turtle.penup相对应,放下画笔后就可以继续画画了(放下画笔后画画会在画布上留下痕迹)

③turtle.pensize():控制画笔的大小(可以根据需求自行定义画笔的大小哦)

④turtle.pencolor():控制画笔的颜色(可以自己在网上查阅所有python可以使用的颜色,python里面可以用的颜色有很多的哦)

⑤turtle.hideturtle():隐藏画笔(隐藏画笔以后画图时画笔就看不到了)

1.3 Turtle画图

在画图的过程中,我们经常要使用一些简单的移动函数:

①turtle.forward(x):将画笔向前移动x个像素(x可以理解为距离)

②turtle.backward(x):将画笔向后退x个像素(x可以理解为距离)

③turtle.left(n):将画笔向左旋转n度

④turtle.right(n):将画笔向右旋转n度

⑤turtle.speed():设置画笔画图的速度(1~10递增,0最快)

1.4 Turtle填色

在画好图后,我们经常需要对其进行填色,这里可以用turtle.fillcolor()函数,括号里写入你想填充的颜色即可。

在使用turtle.fillcolor()函数要注意其基本格式为:

turtle.beginfill()     #开始填充

turtle.fillcolor()      #输入填充的颜色

turtle.endfill()        #结束填充

1.5 Turtle写字

在完成整个画图后,我们还需要最重要的一步,那就是写给那个她的祝福语,这才是画图的意义,在这里,我们用turtle.write()函数进行写字:

turtle.write(" ",move,align,font):

第一个位置双引号内填入要写的字,快写上你想对她说的祝福吧

move(可选):在默认情况下,move为false。如果move为true,则笔将移动到右下角

align(可选):可取值是left即左、center即中、right即右之一,是字符串格式

font(可选):字体三元组(fontname、fontsize、fonttype),fontname即字体名称(字符串格式,如“宋体”),fontsize即字体大小),fonttype即字体类型如:normal(普通)、bold(粗体)、italic(斜体)

完整代码

在了解画图的基本原理后,让我们一起为她画一棵圣诞树叭~

经过上面的学习,相信你一定迫不及待想要尝试了吧,让我们一起打开Pycharm,为她定做一棵特别的圣诞树吧!

2.1 画一棵最简单的小树

这是一棵非常非常简易的小小圣诞树哈哈哈~

让我们一起来看看这颗小小的圣诞树如何构造出来的叭~

完整程序 

import turtle as t
import random as r
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.up()
    t.goto(0,-110)
    t.down()
    t.left(90)
    treet(10,60)
    t.done()  

程序分析 

这是一个python程序,程序需要导入turtle和random模块。程序主要的功能是利用递归的方法画圣诞树,首先隐藏画笔,设置画笔颜色为绿色,设置画笔大小为5,设置速度为最快速度。递归的终止条件是当树的深度为0时,函数返回。否则,画出一条长度为s的线,然后递归画出深度为d-1时的树,向右旋转120度,递归画出深度为d-3时的树,再向右旋转120度,递归画出深度为d-3时的树,最后向右旋转120度并向后退s个距离。主函数中,将画笔移动到坐标原点下面110个像素的位置,向左旋转90度,然后调用treet函数画出深度为10、长度为60的圣诞树,最后结束程序。

2.2 画一棵豪华圣诞树

完整程序

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

程序分析

这段代码是使用Python的`turtle`图形库来绘制一个圣诞场景,包括一棵装饰有星星的圣诞树、一些礼物盒、以及全屏的雪花,并在底部写上祝福语“Merry Christmas!”。下面是对代码的主要部分进行分析:

1. `star()` 函数:用于画出圣诞树顶的大星星。它通过循环五次来画出五角星的五个角,并且填充了黄色。

2. `stars()` 函数:这是一个小星星的绘制函数,但是这个函数并没有被直接调用,它的功能是在`stares()`中使用,用来画圣诞树上的小星星。

3. `stares()` 函数:此函数负责随机地在圣诞树的左右两边画不同颜色的小星星。它利用了一个颜色列表`c`,每次从列表中取色并根据一定的规则调整位置来确保星星分布在树的两侧。

4. `tree(d,s)` 和 `treet(d,s)` 函数:这两个函数都是递归函数,用来绘制圣诞树。它们之间几乎是相同的,只有`treet()`没有被调用。`tree()`函数通过递归的方式减少树枝的长度和分叉的数量来模拟圣诞树的形状。

5. `trees()` 函数:这是用来画完整的圣诞树的主函数。它先画树干,然后调用`tree()`函数画树的部分,最后移动到顶部调用`star()`函数画大星星。

6. `snow()` 函数:用来在整个屏幕上随机分布雪花。每个雪花是一个六边形的结构,大小随机。

7. `gift()` 函数:定义了如何画一个立体的正方体礼物盒。

8. `gifts()` 函数:在特定的位置画多个不同颜色的礼物盒。

9. `writes()` 函数:在指定位置写上祝福语“Merry Christmas!”。

10. 主函数部分:设置了背景颜色为黑色,调用了上述函数来绘制整个场景,并且使用`t.done()`来保持窗口打开直到用户关闭。

注意:`turtle`模块默认情况下会有一些延迟,这可能会影响绘图速度。代码中`t.Turtle().screen.delay(0)`是用来尽可能减少这种延迟,提高绘图速度。

此外,代码中有注释掉的一部分,这部分可能是作者用来测试单个函数的调用,或者是不同的版本。在最终版本中,这些代码没有被执行。

运行这段代码将会创建一个漂亮的圣诞场景,适合用于节日贺卡或者作为编程学习中的趣味项目。

写在后面

我是一只有趣的兔子,感谢你的喜欢! 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Want595

感谢小伙伴的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值