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