python - Python:3个分支树
问题描述
我想出了如何制作一棵树,但它有时会产生随机设计。相反,我想知道如何制作一棵三枝树,所有东西都统一。谢谢!
import turtle
import random
turtle.speed(0)
turtle.hideturtle()
turtle.tracer(0,0)
def draw_line(x,y,angle,length,color,size):
turtle.up()
turtle.goto(x,y)
turtle.seth(angle)
turtle.color(color)
turtle.pensize(size)
turtle.down()
turtle.forward(length)
def draw_tree(x,y,angle,length,color,size,thiccness,n):
if n == 0:
return
if n <= 3:
color = 'lime green'
draw_line(x,y,angle,length,color,size)
cx = turtle.xcor()
cy = turtle.ycor()
draw_tree(cx,cy,angle-thiccness+random.uniform(-8,8),length/(1.3+random.uniform(-.2,.2)),color,size*(0.8+random.uniform(-.1,.1)),thiccness,n-1)
draw_tree(cx,cy,angle+thiccness+random.uniform(-8,8),length/(1.3+random.uniform(-.2,.2)),color,size*(0.8+random.uniform(-.1,.1)),thiccness,n-1)
draw_tree(0,-350,90,150,'brown',10,30,10)
turtle.update()
解决方案
我不得不说我喜欢你的程序当前生成的树,因为它们更像是真正的树,而且每一棵树都不同。如果我们从您的代码中删除随机元素,并添加一个中间分支,那么我们将获得您想要的一棵统一树,并且只有您想要的一棵统一树:
from turtle import Screen, Turtle, Vec2D
THICKNESS = 30
def draw_line(position, angle, length, size, color):
turtle.penup()
turtle.goto(position)
turtle.setheading(angle)
turtle.color(color)
turtle.pensize(size)
turtle.pendown()
turtle.forward(length)
def draw_tree(position, angle, length, size, color, n):
if n == 0:
return
if n <= 3:
color = 'green'
draw_line(position, angle, length, size, color)
position = turtle.position()
length /= 1.4
size *= 0.7
draw_tree(position, angle - THICKNESS, length, size, color, n - 1)
draw_tree(position, angle, length, size, color, n - 1)
draw_tree(position, angle + THICKNESS, length, size, color, n - 1)
screen = Screen()
screen.tracer(False)
turtle = Turtle(visible=False)
draw_tree(Vec2D(0, -350), 90, 150, 10, 'brown', 9)
screen.update()
screen.tracer(True)
screen.exitonclick()
推荐阅读
- python - Yolo 从头开始数据集和输出
- php - 在MYSQL中查询json文本数据里面的特定文本
- java - java.lang.NoSuchMethodError:java.io.ByteArrayOutputStream.toString
- c# - 搜索适用于除日期字段之外的所有字段
- react-native - React Native Expo - 定位服务
- angularjs - ng-model 不与 ng-options 选择绑定
- sql - 如何包含在某一天不重要的值 (APEX)
- python - 如何在 Python 中调用 C 代码来进行两种语言的交互?
- apache-kafka - Kafka 消费者配置以间隔获取
- google-apps-script - 谷歌应用脚本 - 从另一个人保存到文件夹