用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 基础学习第二弹 类属性和实例属性
Aug 27 Python
python中使用urllib2获取http请求状态码的代码例子
Jul 07 Python
Python获取电脑硬件信息及状态的实现方法
Aug 29 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
Python列表元素常见操作简单示例
Oct 25 Python
python 实现dict转json并保存文件
Dec 05 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
利用python对excel中一列的时间数据更改格式操作
Jul 14 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
Python torch.flatten()函数案例详解
Aug 30 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
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
php扩展开发入门demo示例
2019/09/23 PHP
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
JavaScript window.location对象
2014/11/14 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python检测某个变量是否有定义的方法
2015/05/20 Python
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
2014婚礼司仪主持词
2014/03/14 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
安全环保演讲稿
2014/08/28 职场文书
街道务虚会发言材料
2014/10/20 职场文书
作风建设整改方案
2014/10/27 职场文书
毕业典礼邀请函
2015/01/31 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android