用python画草_如何优雅的画一颗大树.py

这篇博客展示了如何使用Python的turtle库绘制一棵艺术感的大树。通过定义路径指令和转换规则,作者逐步解释了如何通过递归方式生成复杂的树形图案。代码中包含了颜色和线条宽度的变化,使得绘制出的树更富有层次感。
摘要由CSDN通过智能技术生成

# -*- coding: utf-8 -*-

# Author : Mifen

# Email : 2952277346@qq.com

# Date : 2018/9/7

import time

import turtle as t

from turtle import *

t.setup(1280,720)

t.speed(0)

t.pensize(1)

length = 13

path = 'F'

angle = 22

up()

color("#262626;")

goto(-600,300)

write('Author:Mifen',font=("微软雅黑", 18))

goto(-600,250)

write('E-mail :2952277346@qq.com',font=("微软雅黑", 18))

goto(-600,-350)

down()

expalnation = {

'F':'画线',

'x':'-',

'+':'逆时针旋转',

'-':'顺时针旋转',

'[':'记录当前位置',

']':'恢复上一个位置',

'a':'上色',

'b':'上色',

'c':'上色'

}

rules = {

'F':'aFF-[b-F+F+F]+[c+F-F-F]'

}

def draw_path(path,expalnation):

posList ,angleList= [],[]

t.up()

t.goto(0,-350)

t.down()

t.lt(90)

for symbol in path:

if symbol == 'F':

t.forward(length)

elif symbol == '+':

t.left(angle)

elif symbol == '-':

t.rt(angle)

elif symbol == '[':

posList.append(t.pos())

angleList.append(t.heading())

elif symbol == 'a':

t.pensize(4)

t.color("#8c503c")

elif symbol == 'b':

t.color("#4ab441")

t.pensize(3)

elif symbol == 'c':

t.pensize(2)

t.color("#18b418")

elif symbol == ']':

t.up()

t.home()

t.goto(posList.pop())

t.left(angleList.pop())

t.down()

def apply_rules(path,rules):

L = [_ for _ in path]

for i in range(len(L)):

symbol = L[i]

if symbol == 'F':

L[i] = rules[symbol]

path = ''.join(L)

return path

for _ in range(4):

path = apply_rules(path,rules)

draw_path(path,expalnation)

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值