用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中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
python 采集中文乱码问题的完美解决方法
Sep 27 Python
python 网络编程详解及简单实例
Apr 25 Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
基于Python os模块常用命令介绍
Nov 03 Python
python机器学习之神经网络(三)
Dec 20 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 Python
python selenium xpath定位操作
Sep 01 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 Python
python3中for循环踩过的坑记录
Dec 14 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
乱谈我对耳机、音箱的感受
2021/03/02 无线电
php堆排序(heapsort)练习
2013/11/13 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
用JS写的一个TableView控件代码
2010/01/23 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
JS与SQL方式随机生成高强度密码示例
2018/12/29 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
Python操作列表的常用方法分享
2014/02/13 Python
跟老齐学Python之Python文档
2014/10/10 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
Python虚拟环境venv用法详解
2020/05/25 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
铁路个人事迹材料
2014/01/30 职场文书
安全大检查反思材料
2014/01/31 职场文书
端午节活动策划方案
2014/03/09 职场文书
2014年行政工作总结
2014/11/19 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB