X Tutup
from turtle import * import random import time tracer(10000, 0) def branch(x, y, direction, branch_length): # if the branch is too small, just quit if branch_length < 5: return # draw the "trunk" trunk_size = max(branch_length / 7.0, 1) + random.randint(-1, 1) pensize(trunk_size) for i in range(4): forward(branch_length / 4.0 + random.randint(-10, 10)) left(random.randint(-8, 8)) if random.randint(0, 5) == 0: tiny_branch_angle = random.randint(-LEFT_ANGLE, RIGHT_ANGLE) right(tiny_branch_angle) branch(xcor(), ycor(), heading(), branch_length / 2) left(tiny_branch_angle) pensize(trunk_size) if random.randint(0, 5) == 0: branch_length = branch_length * 0.9 # draw the two branches, which are fractal trees if random.randint(0, 9) != 0: left(LEFT_ANGLE) branch(xcor(), ycor(), heading(), branch_length - LEFT_DECREASE) right(LEFT_ANGLE) if random.randint(0, 9) != 0: right(RIGHT_ANGLE) branch(xcor(), ycor(), heading(), branch_length - RIGHT_DECREASE) left(RIGHT_ANGLE) # return back to the starting point penup() goto(x, y) setheading(direction) pendown() def draw_tree(x, y, direction, seed): global LEFT_ANGLE, RIGHT_ANGLE, LEFT_DECREASE, RIGHT_DECREASE # go to the starting point penup() goto(x, y) setheading(direction) pendown() # try changing these values and looking at the results random.seed(seed) LEFT_ANGLE = random.randint(10, 30) RIGHT_ANGLE = random.randint(10, 30) LEFT_DECREASE = random.randint( 6, 15) RIGHT_DECREASE = random.randint( 6, 15) START_SIZE = random.randint(80, 120) branch(x, y, direction, START_SIZE) update() draw_tree(0, -310, 90, 12393) exitonclick()
X Tutup