用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 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
Python去掉字符串中空格的方法
Mar 11 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
Python类反射机制使用实例解析
Dec 30 Python
python标识符命名规范原理解析
Jan 10 Python
Python中常用的高阶函数实例详解
Feb 21 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
Python实现随机生成迷宫并自动寻路
Jun 13 Python
Python装饰器详细介绍
Mar 25 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中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
VUE重点问题总结
2018/03/19 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
给Python入门者的一些编程建议
2015/06/15 Python
让Python代码更快运行的5种方法
2015/06/21 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
python之消除前缀重命名的方法
2018/10/21 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
python ubplot使用方法解析
2020/01/10 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
django迁移文件migrations的实现
2020/03/31 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
Python如何急速下载第三方库详解
2020/11/02 Python
酒店端午节促销方案
2014/02/18 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
机关搬迁方案
2014/05/18 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
工商局调档介绍信
2015/10/22 职场文书
几款流行的HTML5 UI框架比较(小结)
2021/04/08 HTML / CSS
python图片灰度化处理的几种方法
2021/06/23 Python
CentOS安装Nginx并部署vue
2022/04/12 Servers