O código abaixo gera uma árvore a partir da especificação do ponto (objeto) inicial, que, recursivamente, gera os demais pontos da estrutura.
from graphics import *
import random
import time
class Ponto:
def __init__(self,x,y,niveis):
self.x, self.y, self.nivel = x,y,niveis
self.pontos = []
if (self.nivel > 1):
self.criaPontos()
def criaPontos(self):
delta = 1-0.08*(5-self.nivel)
self.pontos.append(Ponto(self.x-delta,self.y-1,self.nivel-1))
self.pontos.append(Ponto(self.x ,self.y-1,self.nivel-1))
self.pontos.append(Ponto(self.x+delta,self.y-1,self.nivel-1))
def desenhaPonto(self,win):
c = Circle(Point(self.x*100, self.y*100), 7)
c.setFill(CorAleatoria())
c.draw(win)
time.sleep(0.15)
if (len(self.pontos)>0):
for i in range(3):
pto = self.pontos[i]
l = Line( Point(self.x*100, self.y*100), Point(pto.x*100, pto.y*100))
l.draw(win)
time.sleep(0.15)
pto.desenhaPonto(win)
def CorAleatoria():
cores=["red","white","blue","green","yellow"]
return cores[random.randint(0,4)]
if __name__ == "__main__":
niveisDaArvore = 5
arvore_OO = Ponto(5,5,niveisDaArvore) # xInicial, YInicial = 5,5
#Desenha a árvore
win = GraphWin("Minha Árvore O.O.", 1000, 600)
arvore_OO.desenhaPonto(win)
win.getMouse() # aguarda click na janela
win.close()
