用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中的localtime()方法使用详解
May 22 Python
python学习之编写查询ip程序
Feb 27 Python
python数据类型_元组、字典常用操作方法(介绍)
May 30 Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
python 解压pkl文件的方法
Oct 25 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
django xadmin 管理器常用显示设置方式
Mar 11 Python
Python获取对象属性的几种方式小结
Mar 12 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
Python word文本自动化操作实现方法解析
Nov 05 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
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
项目合作协议书范本
2014/04/16 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
出国留学单位推荐信
2015/03/26 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技