Python精美圣诞树
系列文章
序号 | 直达链接 |
炫酷系列 | |
1 | Python制作一个无法拒绝的表白界面 |
2 | Python满屏飘字表白代码 |
3 | Python无限弹窗满屏表白代码 |
4 | Python李峋同款可写字版跳动的爱心 |
5 | Python流星雨代码 |
6 | Python漂浮爱心代码 |
7 | Python爱心光波代码 |
8 | Python普通的玫瑰花代码 |
9 | Python炫酷的玫瑰花代码 |
10 | Python多彩的玫瑰花代码 |
节日系列 | |
1 | Python动漫风烟花秀代码 |
2 | Python新年烟花秀代码 |
3 | Python圣诞礼物代码 |
4 | Python画圣诞树代码 |
5 | Python可爱版圣诞树丨绿色 |
6 | Python可爱版圣诞树丨粉色 |
7 | Python大雪纷飞代码 |
8 | Python生日蛋糕代码 |
9 | Python五彩气球代码 |
10 | Python国庆祝福代码 |
11 | Python万圣礼物代码 |
12 | Python愚人节礼物代码 |
13 | Python浪漫星空代码 |
14 | Python樱花树代码 |
动漫系列 | |
1 | Python名侦探柯南 |
2 | Python喜羊羊 |
3 | Python懒羊羊 |
4 | Python沸羊羊 |
5 | Python小灰灰 |
6 | Python小香香 |
7 | Python灰太狼 |
8 | Python海绵宝宝 |
9 | Python哆啦A梦 |
10 | Python凯蒂猫 |
11 | Python猫和老鼠 |
12 | Python草莓熊 |
13 | Python迷你皮卡丘 |
14 | Python高级皮卡丘 |
15 | Python豪华皮卡丘 |
16 | Python史迪仔 |
17 | Python小熊猫 |
18 | Python蜘蛛侠 |
19 | Python可爱版蜡笔小新 |
20 | Python萌萌的蜡笔小新 |
21 | Python罗小黑 |
22 | Python猪猪侠 |
炫酷系列 | |
1 | Python张万森下雪了 |
2 | Python一闪一闪亮晶晶 |
3 | Python黑客帝国代码雨 |
4 | Python七彩花朵 |
5 | Python模拟3D星空 |
6 | Python金榜题名 |
7 | Python满天星 |
写在前面
最近在各大社交平台看到好多圣诞树,看到大佬们画的圣诞树一个比一个精致,我也特别想尝试画一棵特别的圣诞树。下面是我画的一棵简易的圣诞树,虽然和网络上大佬们的圣诞树相比不是很精致,但是对于萌新们来说,画这样一棵简易的圣诞树还是非常轻松的。
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)`是用来尽可能减少这种延迟,提高绘图速度。
此外,代码中有注释掉的一部分,这部分可能是作者用来测试单个函数的调用,或者是不同的版本。在最终版本中,这些代码没有被执行。
运行这段代码将会创建一个漂亮的圣诞场景,适合用于节日贺卡或者作为编程学习中的趣味项目。
写在后面
我是一只有趣的兔子,感谢你的喜欢!
作者:Want595