Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/data/en/graphics/tree
diff options
context:
space:
mode:
Diffstat (limited to 'data/en/graphics/tree')
-rw-r--r--data/en/graphics/tree75
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()