"""
Ejemplo de Fractales usando recursividad
Sample Python/Pygame Programs
Simpson College Computer Science
http://programarcadegames.com/
http://simpson.edu/computer-science/
"""
import pygame
# Definimos algunos colores
NEGRO = (0, 0, 0)
BLANCO = (255, 255, 255)
def dibujo_recursivo(x, y, largo, alto, cuenta):
# Dibujamos el rectángulo
# pygame.draw.rect(pantalla,NEGRO,[x,y,largo,alto],1)
pygame.draw.line(pantalla,
NEGRO,
[x + largo*.25,alto//2+y],
[x + largo*.75,alto//2+y],
3)
pygame.draw.line(pantalla,
NEGRO,
[x+largo*.25,(alto*.5)//2+y],
[x+largo*.25,(alto*1.5)//2+y],
3)
pygame.draw.line(pantalla,
NEGRO,
[x + largo*.75,(alto*.5)//2+y],
[x + largo*.75,(alto*1.5)//2+y],
3)
if cuenta > 0:
cuenta -= 1
# Arriba izquierda
dibujo_recursivo(x, y, largo // 2, alto // 2, cuenta)
# Arriba derecha
dibujo_recursivo(x + largo // 2, y, largo // 2, alto // 2, cuenta)
# Abajo izquierda
dibujo_recursivo(x, y + largo // 2, largo // 2, alto // 2, cuenta)
# Abajo derecha
dibujo_recursivo(x + largo // 2, y + largo // 2, largo // 2, alto // 2, cuenta)
pygame.init()
# Establecemos el alto y largo de la pantalla
dimensiones = [700, 500]
pantalla = pygame.display.set_mode(dimensiones)
pygame.display.set_caption("Mi Juego")
#Iteramos hasta que el usuario haga click sobre el botón de cerrar
hecho = False
# Usado para gestionar cuán rápido se actualiza la pantalla
reloj = pygame.time.Clock()
# -------- Bucle Principal del Programa -----------
while not hecho:
for evento in pygame.event.get(): # El usuario hizo algo
if evento.type == pygame.QUIT: # Si el usuario hace click sobre cerrar
hecho = True # Marca que ya lo hemos hecho, de forma que abandonamos el bucle
# Limpia la pantalla y establece su color de fondo
pantalla.fill(BLANCO)
# TODO EL CÓDIGO DE DIBUJO DEBERÍA IR DEBAJO DE ESTE COMENTARIO
nivel_fractal = 3
dibujo_recursivo(0, 0, 700, 700, nivel_fractal)
# TODO EL CÓDIGO DE DIBUJO DEBERÍA IR ENCIMA DE ESTE COMENTARIO
# # Avancemos y actualicemos la pantalla con lo que hemos dibujado.
pygame.display.flip()
# Limitamos a 20 fotogramas por segundo
reloj.tick(20)
# Pórtate bien con el IDLE. Si nos olvidamos de esta línea, el programa se 'colgará'
# en la salida.
pygame.quit()