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