Python Turtle 樱花树
盛夏温暖流年 人气:0最近发生了很多事情,工作不开心,爱情无果而终,身边的小伙伴陆陆续续离职。虽然都不是会一下子击垮自己的事情,但是积攒起来,还是会有突然感到疲惫和倦怠的时候,有一种不知道下一步要走向哪里的无力感。
在这个城市留下了很多的回忆,但是身边的人一个个离开,走到现在,似乎没有太多留恋的了,也没想好未来要去哪里。自己是一个始终需要新鲜感的人,在这里停留了太久,大概到了该说再见的时候了吧。
那么,用一个不熟悉的语言,画棵樱花树送给自己吧,代码也可以很浪漫不是吗。520刚刚过了,没有爱情,自己也要好好爱自己才对。
一. 绘制步骤
1. 环境安装
可以参考之前的博客:
2. 图片美化
之前没怎么用过 Python,就对别人的代码进行分析和效果优化好啦,顺便学习一下。
这个是原来的效果图,有点灰蒙蒙的,微微改动,让它明媚一点。
修改之后的代码:
from turtle import * from random import * from math import * def tree(n,l): pd()#下笔 #阴影效果 t = cos(radians(heading()+45))/8+0.25 pencolor(t,t,t) pensize(n/3) forward(l)#画树枝 if n>0: b = random()*15+10 #右分支偏转角度 c = random()*15+10 #左分支偏转角度 d = l*(random()*0.25+0.7) #下一个分支的长度 #右转一定角度,画右分支 right(b) tree(n-1,d) #左转一定角度,画左分支 left(b+c) tree(n-1,d) #转回来 right(c) else: #画叶子 right(90) n=cos(radians(heading()-45))/4+0.5 ran=random() #这里相比于原来随机添加了填充的圆圈,让樱花叶子看起来更多一点 if(ran>0.7): begin_fill() circle(3) fillcolor('pink') #把原来随机生成的叶子换成了统一的粉色 pencolor("pink") circle(3) if(ran>0.7): end_fill() left(90) #添加0.3倍的飘落叶子 if(random()>0.7): pu() #飘落 t = heading() an = -40 +random()*40 setheading(an) dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2) forward(dis) setheading(t) #画叶子 pd() right(90) n = cos(radians(heading()-45))/4+0.5 pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4) circle(2) left(90) pu() #返回 t=heading() setheading(an) backward(dis) setheading(t) pu() backward(l)#退回 bgcolor(0.956,0.9255,0.9882)#设置背景色(把灰色换成淡紫色) ht()#隐藏turtle speed(0)#速度 1-10渐进,0 最快 tracer(0,0) pu()#抬笔 backward(50) left(90)#左转90度 pu()#抬笔 backward(300)#后退300 tree(12,100)#递归7层 done()
之后的效果温暖一点,喜欢这种更有温度的色调:
二. 技术学习
1. turtle 简介
樱花树的绘制效果是通过 Python 中的 turtle 来实现的,Python 的强大之处在于有许多很强大的库,turtle就是其中之一,是 Python 自带的一个库。
2. turtle 绘图的基础知识
turtle库绘制原理:有一只海龟在窗体正中心,在画布上游走,走过的轨迹形成了绘制的图形,海龟由程序控制,可以自由改变颜色、方向宽度等。
(1) . turtle 绘图窗体
setup用来设置窗体大小,后两个参数为非必选参数;
turtle.setup(width,height,startx,starty)
(2) . turtle 的坐标体系
画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向的小乌龟。
这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle 绘图中,就是使用位置方向描述小乌龟(画笔)的状态的。
(3) . turtle 画笔属性
(4) . turtle 绘图命令
运动命令
控制命令
全局控制命令
虽然没有在原来的基础上改动太多的代码,只是简单的给樱花树换了个风格,但是其实也做了很多的尝试和调整,也学到了怎么使用 turtle 。
本篇博客参考了以下博客的代码:使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
加载全部内容