Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/data/graphics/tree
blob: 5a566209db1c411fa0178ec0a3bf01fdab4c1881 (plain)
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
73
74
# tree

import pippy
import pygame
import 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((0, 0), pygame.FULLSCREEN)

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

# do nothing visible until the escape key is pressed
while pippy.pygame.next_frame():
    for event in pygame.event.get():
        if event.type == QUIT:
                sys.exit()

        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                sys.exit()