用python绘制樱花树


Posted in Python onOctober 09, 2020

黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开。那么今天就一起来看看怎样在python中画一棵美丽的樱花树~

说到用python画画,那当然就是小乌龟Turtle库了,为啥是turtle呢,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

一、安装与引入

安装没有什么难度直接pip安装就可以

pip install turtle

可使用以下3种方法引入:

用python绘制樱花树

二、使用

turtle库使用起来也很简单,主要就是利用几个核心的控制代码

turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点,

turtle.fd(d):以当前方向,往前行进d像素。

turtle.bk(d):保持当前方向不变,往后退行d像素。

turtle.circle(r,angle):以r为半径圆的angle角度旋转。

turtle.penup():抬笔

turtle.pendown():落笔

urtle.left(angle):向左旋转angle度。

turtle.right(angle):向右旋转angle度。

比如绘制树干部分的代码可以这样写

def Tree(branch, t):
 time.sleep(0.0005)
 if branch > 3:
  if 6 <= branch <= 12: #
   if random.randint(0, 2) == 0: #随机绘制
    t.color('snow') #设置颜色
   else:
    t.color('lightcoral') # 树叶颜色
   t.pensize(branch / 3)
  elif branch < 6:
   if random.randint(0, 1) == 0:
    t.color('snow')
   else:
    t.color('lightcoral') #
   t.pensize(branch / 2)
  else:
   t.color('sienna') # 赭(zhě)色
   t.pensize(branch / 10) # 6
  t.forward(branch)
  a = 1.5 * random.random()
  t.right(20 * a)
  b = 1.5 * random.random()
  Tree(branch - 10 * b, t)
  t.left(40 * a)
  Tree(branch - 10 * b, t)
  t.right(20 * a)
  t.up()
  t.backward(branch)
  t.down()

而写字的部分就不用一笔一划的去绘制,直接使用turtle.write()就可以在指定位置写上你需要的文字。

write(arg,move=false,align='left',font=('arial',8,'normal'))

#arg--将写入Turtle绘画屏幕的文字。

#align(可选)--“左(left)”、“中(center)”或“右(right)”之一。

#font(可选)--(fontname、fontsize、fonttype)。

那么来看看最后效果吧!

用python绘制樱花树

完整源码:

import turtle as T
import random
import time

# 画樱花的躯干(60,t)
def Tree(branch, t):
  time.sleep(0.0005)
  if branch > 3:
    if 8 <= branch <= 12:
      if random.randint(0, 2) == 0:
        t.color('snow') # 白
      else:
        t.color('lightcoral') # 淡珊瑚色
      t.pensize(branch / 3)
    elif branch < 8:
      if random.randint(0, 1) == 0:
        t.color('snow')
      else:
        t.color('lightcoral') # 淡珊瑚色
      t.pensize(branch / 2)
    else:
      t.color('sienna') # 赭(zhě)色
      t.pensize(branch / 10) # 6
    t.forward(branch)
    a = 1.5 * random.random()
    t.right(20 * a)
    b = 1.5 * random.random()
    Tree(branch - 10 * b, t)
    t.left(40 * a)
    Tree(branch - 10 * b, t)
    t.right(20 * a)
    t.up()
    t.backward(branch)
    t.down()

# 掉落的花瓣
def Petal(m, t):
  for i in range(m):
    a = 200 - 400 * random.random()
    b = 10 - 20 * random.random()
    t.up()
    t.forward(b)
    t.left(90)
    t.forward(a)
    t.down()
    t.color('lightcoral') # 淡珊瑚色
    t.circle(1)
    t.up()
    t.backward(a)
    t.right(90)
    t.backward(b)

# 绘图区域
t = T.Turtle()
# 画布大小
w = T.Screen()
t.hideturtle() # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(bg='wheat') # wheat小麦
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')

# 画樱花的躯干
Tree(60, t)
# 掉落的花瓣
Petal(200, t)
w.exitonclick()

以上就是用python绘制樱花树的详细内容,更多关于python绘图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python 实现堆排序算法代码
Jun 05 Python
python中类的一些方法分析
Sep 25 Python
Python的加密模块md5、sha、crypt使用实例
Sep 28 Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
Python设计模式之工厂模式简单示例
Jan 09 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
python中几种自动微分库解析
Aug 29 Python
Python读取csv文件实例解析
Dec 30 Python
python异常处理try except过程解析
Feb 03 Python
Python更换pip源方法过程解析
May 19 Python
Python生成随机验证码代码实例解析
Jun 09 Python
Python logging日志库空间不足问题解决
Sep 14 #Python
Python grpc超时机制代码示例
Sep 14 #Python
python/golang 删除链表中的元素
Sep 14 #Python
Python基于pillow库实现生成图片水印
Sep 14 #Python
python/golang实现循环链表的示例代码
Sep 14 #Python
python实现canny边缘检测
Sep 14 #Python
Python gevent协程切换实现详解
Sep 14 #Python
You might like
PHP语法速查表
2006/12/06 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
windows下ipython的安装与使用详解
2016/10/20 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
Python数据正态性检验实现过程
2020/04/18 Python
python不同系统中打开方法
2020/06/23 Python
python怎么判断素数
2020/07/01 Python
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
中医专业应届生求职信
2013/11/17 职场文书
保密工作目标责任书
2014/07/28 职场文书
装修公司管理制度
2015/08/05 职场文书
MySQL的索引你了解吗
2022/03/13 MySQL