1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# tree
import pippy, pygame, sys
from pygame.locals import *
from random import *
import math
# always need to init first thing
pygame.init()
# create the window and keep track of the surface
# for drawing into
screen = pygame.display.set_mode()
# ask for screen's width and height
width, height = screen.get_size()
# turn off the cursor
pygame.mouse.set_visible(False)
color = (250, 250, 250)
min_factor = 0.8
max_factor = 0.9
start_length = 130
min_length = 40
min_angle_delta = 0.4
max_angle_delta = 0.5
# start the screen all black
bgcolor = (0,0,0)
screen.fill(bgcolor)
def draw_tree(x, y, length, angle):
x2 = x + length * math.sin(angle)
y2 = y - length * math.cos(angle)
pygame.draw.line(screen, color, (x, y), (x2, y2))
if length > min_length:
# draw left branch
left_angle = angle - \
uniform(min_angle_delta, max_angle_delta)
left_length = length * \
uniform(min_factor, max_factor)
draw_tree(x2, y2, left_length, left_angle)
# draw middle branch
middle_length = length * \
uniform(min_factor, max_factor)
draw_tree(x2, y2, middle_length, angle)
# draw right branch
right_angle = angle + \
uniform(min_angle_delta, max_angle_delta)
right_length = length * \
uniform(min_factor, max_factor)
draw_tree(x2, y2, right_length, right_angle)
# clear the screen
screen.fill(bgcolor)
# draw a tree, starting at the bottom centre of the
# screen
draw_tree((width / 2), height - 20, start_length, 0)
pygame.display.flip()
while pippy.pygame.next_frame():
# chill until escape key is pressed
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
sys.exit()
|