首页 > 其他分享 >Turtle 库绘制樱花

Turtle 库绘制樱花

时间:2024-08-22 16:16:40浏览次数:5  
标签:Turtle 樱花 random Tree import 绘制

Turtle 库绘制樱花

创建时间: 2024-08-12

一、完整代码

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()

二、代码知识

2.1 导入所需的模块

turtle 库并将其重命名为 T ,还导入了 random 用于生成随机数,time 用于控制时间间隔。

import turtle as T
import random
import time

2.2 定义了 Tree 函数

用于绘制樱花的躯干。在这个函数中,通过判断分支的长度来设置画笔的颜色和粗细。然后,向前绘制一段长度,并随机地进行右转和左转操作,递归地调用自身来绘制更细的分支。绘制完一个分支后,将画笔抬起并后退回到起始位置。

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()

2.3 定义了 Petal 函数

用于绘制掉落的花瓣。通过循环生成随机的位置和距离,绘制出一个个花瓣。

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)

2.4在主程序中,创建了 Turtle 对象 t

设置了隐藏画笔、屏幕追踪速度和画布背景等。

# 绘图区域
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 函数绘制樱花的躯干,再调用 Petal 函数绘制掉落的花瓣。

# 画樱花的躯干
Tree(60, t)
# 掉落的花瓣
Petal(200, t)
w.exitonclick()

使用 w.exitonclick() 使得窗口在用户点击时关闭。

三、效果

3.1 过程

3.2 效果(每次绘制都不一样)

标签:Turtle,樱花,random,Tree,import,绘制
From: https://www.cnblogs.com/suifeng2000/p/18374124

相关文章

  • QT+OpenGL使用一组顶点绘制两个三角形
    一、概述需求:使用一组顶点坐标绘制两个三角形。ps:此需求和绘制一个三角形并没有什么不同,只是把顶点坐标由三个改成了6个。依次类推,如果想要绘制多边形或者更多的三角形,只需要定义不同的顶点就行了。效果:二、代码示例1.定义顶点floatvertices[18]={......
  • 用GDI+旋转多边形来绘制一个时钟摸拟小程序
    效果图 在头文件类中声明变量TCHARm_dayStr[4];//日期TCHARm_weekStr[4];//星期Gdiplus::Font*m_pFont;//字体Gdiplus::StringFormatm_strFormat;//格式化字符串Gdiplus::Pen*m_pPen;//画笔Gdiplus::So......
  • 学习python基础二之python基本图形绘制
    1.课前实例  1.1蟒蛇绘制importturtleast#turtle库取别名为tt.setup(650,350,200,200)t.penup()t.fd(-250)t.pendown()t.pensize(25)t.pencolor("purple")t.seth(-40)foriinrange(4):t.circle(40,80)t.circle(-40,80)t.circle(40,80/2......
  • Origin绘制投影能带气泡图
    http://【Origin教程(5)——以投影能带为例绘制气泡图】https://www.bilibili.com/video/BV1bY4y1H7cS?vd_source=ef6b729b4f55ce688e98f754cad88d00本文参考上述B站视频,建议先看视频再看笔记,综合看容易看懂。前提:vasp计算能带时INCAR中要设置LORBIT=11用vaspkit导出每种元素......
  • QT+OpenGL 使用VAO、VBO、EBO结合绘制一个正方形
    一、概述需求:绘制一个正方形,可以控制正方形的颜色、可以切换正方形为线框模式/填充模式绘制流程:1.定义一个顶点着色器和片元着色器shader2.Qt创建一个Widget并继承QOpenGLWidget、QOpenGLFunctions,并重写initializeGL()、resizeGL(w,h)、pai......
  • 如何用纯CSS绘制三角形--03
    下拉菜单中的箭头通常用于提示用户点击以展开菜单。CSS三角形实现这个箭头: <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • 如何用纯CSS绘制三角形
    要用纯CSS绘制三角形,可以通过利用CSS中的border属性来实现。具体来说,核心原理是通过设置不同方向的边框颜色和宽度来形成三角形效果。以下是写技术博客时可以介绍的几个要点:1.三角形的基本原理CSS三角形的关键在于设置一个元素的宽高为0,同时通过边框来创建三角形。例如:.trian......
  • 如何用纯CSS绘制三角形--02
    通过结合@keyframes动画,让三角形实现旋转、移动等动态效果 代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • 前端使用 Konva 实现可视化设计器(21)- 绘制图形(椭圆)
    本章开始补充一些基础的图形绘制,比如绘制:直线、曲线、圆/椭形、矩形。这一章主要分享一下本示例是如何开始绘制一个图形的,并以绘制圆/椭形为实现目标。请大家动动小手,给我一个免费的Star吧~大家如果发现了Bug,欢迎来提Issue哟~github源码gitee源码示例地址接下来主要......
  • 【Python爬虫+可视化】利用Python爬取天气数据并实现数据可视化,绘制天气轮播图,一个完
    要使用Python爬取天气数据并实现数据可视化,特别是绘制天气轮播图(指的是随时间变化的天气图表),我们可以使用几个流行的库:requests 用于网络请求,pandas 用于数据处理,matplotlib 或 plotly 用于数据可视化。此外,为了处理时间序列数据,pandas 的日期时间功能非常有用。先来看......