#!/usr/bin/env python3""" turtlegraphics-example-suite:tdemo_forest.pyDisplays a 'forest' of 3 breadth-first-treessimilar to the one in tree.For further remarks see tree.pyThis example is a 'breadth-first'-rewrite ofa Logo program written by Erich Neuwirth. Seehttp://homepage.univie.ac.at/erich.neuwirth/"""from turtle import Turtle, colormode, tracer, mainloopfrom random import randrangefrom time import perf_counter as clockdef symRandom(n):return randrange(-n,n+1)def randomize( branchlist, angledist, sizedist ):return [ (angle+symRandom(angledist),sizefactor*1.01**symRandom(sizedist))for angle, sizefactor in branchlist ]def randomfd( t, distance, parts, angledist ):for i in range(parts):t.left(symRandom(angledist))t.forward( (1.0 * distance)/parts )def tree(tlist, size, level, widthfactor, branchlists, angledist=10, sizedist=5):# benutzt Liste von turtles und Liste von Zweiglisten,# fuer jede turtle eine!if level > 0:lst = []brs = []for t, branchlist in list(zip(tlist,branchlists)):t.pensize( size * widthfactor )t.pencolor( 255 - (180 - 11 * level + symRandom(15)),180 - 11 * level + symRandom(15),0 )t.pendown()randomfd(t, size, level, angledist )yield 1for angle, sizefactor in branchlist:t.left(angle)lst.append(t.clone())brs.append(randomize(branchlist, angledist, sizedist))t.right(angle)for x in tree(lst, size*sizefactor, level-1, widthfactor, brs,angledist, sizedist):yield Nonedef start(t,x,y):colormode(255)t.reset()t.speed(0)t.hideturtle()t.left(90)t.penup()t.setpos(x,y)t.pendown()def doit1(level, pen):pen.hideturtle()start(pen, 20, -208)t = tree( [pen], 80, level, 0.1, [[ (45,0.69), (0,0.65), (-45,0.71) ]] )return tdef doit2(level, pen):pen.hideturtle()start(pen, -135, -130)t = tree( [pen], 120, level, 0.1, [[ (45,0.69), (-45,0.71) ]] )return tdef doit3(level, pen):pen.hideturtle()start(pen, 190, -90)t = tree( [pen], 100, level, 0.1, [[ (45,0.7), (0,0.72), (-45,0.65) ]] )return t# Hier 3 Baumgeneratoren:def main():p = Turtle()p.ht()tracer(75,0)u = doit1(6, Turtle(undobuffersize=1))s = doit2(7, Turtle(undobuffersize=1))t = doit3(5, Turtle(undobuffersize=1))a = clock()while True:done = 0for b in u,s,t:try:b.__next__()except:done += 1if done == 3:breaktracer(1,10)b = clock()return "runtime: %.2f sec." % (b-a)if __name__ == '__main__':main()mainloop()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。