diff options
Diffstat (limited to 'data/en/graphics/tree')
-rw-r--r-- | data/en/graphics/tree | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/data/en/graphics/tree b/data/en/graphics/tree new file mode 100644 index 0000000..adc179f --- /dev/null +++ b/data/en/graphics/tree @@ -0,0 +1,75 @@ +# 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() |