目录
一、前言
二、创意名
三、效果展示
四、实现步骤
五、编码实现
一、前言
一年一度的圣诞节又要来喽~在这么浪漫的节日里怎么能少的了一个浪漫的程序员呢~让我们一起画个圣诞树,送给你喜欢的那个人吧~
二、创意名
Python浪漫圣诞树,具体源码见:
【圣诞节限定】教你用Python画圣诞树,做个浪漫的程序员(源代码)-Python文档类资源-CSDN下载
三、效果展示
四、实现步骤
用Python的小海龟实现
具体分为五个步骤:
(1)圣诞树
(2)星星
(3)礼物
(4)雪花
(5)祝福
五、编码实现
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) #画完树后,将画笔移到(0,250)的位置,准备画大星星 t.down() t.right(90) #将画笔向右旋转90度,指向右方,准备画大星星 star() #画大星星
2. 星星
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
3. 雪花
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)
4. 礼物
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()
5. 祝福
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为粗体(可自行修改要写的字)