用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统计文本文件内单词数量的方法
May 30 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
python多任务及返回值的处理方法
Jan 22 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
Python基础之函数的定义与使用示例
Mar 23 Python
Python FFT合成波形的实例
Dec 04 Python
深入理解Python 多线程
Jun 16 Python
Python爬虫教程知识点总结
Oct 19 Python
python两种获取剪贴板内容的方法
Nov 06 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 Python
Python上下文管理器Content Manager
Jun 26 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
php不使用插件导出excel的简单方法
2014/03/04 PHP
php使用websocket示例详解
2014/03/12 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
range 标准化之获取
2011/08/28 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
Python算法之栈(stack)的实现
2014/08/18 Python
python中类的一些方法分析
2014/09/25 Python
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
小学生演讲稿
2014/01/12 职场文书
小学生读书感言
2014/02/12 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
马智宇结婚主持词
2014/04/01 职场文书
作风大整顿心得体会
2014/09/10 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
利用Pycharm连接服务器的全过程记录
2021/07/01 Python