用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 相关文章推荐
pip 错误unused-command-line-argument-hard-error-in-future解决办法
Jun 01 Python
Python Property属性的2种用法
Jun 21 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
Python探索之SocketServer详解
Oct 28 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
Python数据类型之List列表实例详解
May 08 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 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正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
js的回调函数详解
2015/01/05 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
2017/06/12 jQuery
JointJS流程图的绘制方法
2018/12/03 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
Python多线程扫描端口代码示例
2018/02/09 Python
使用matplotlib画散点图的方法
2018/05/25 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
python实现决策树分类
2018/08/30 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
法律专业学生的自我评价
2014/02/07 职场文书
数控专业自荐书范文
2014/03/16 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
节水宣传标语口号
2015/12/26 职场文书
学习计划是什么
2019/04/30 职场文书
Python竟然能剪辑视频
2021/05/25 Python
Nginx源码编译安装过程记录
2021/11/17 Servers