mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 18:07:37 +00:00 
			
		
		
		
	 891a1f86d4
			
		
	
	
		891a1f86d4
		
			
		
	
	
	
	
		
			
			The 'wikipedia' example is now 'rosette', describing what it draws. The 'penrose' print output is reduced. The 'tree' '1024' output is eliminated.
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env python3
 | |
| """      turtle-example-suite:
 | |
| 
 | |
|              tdemo_tree.py
 | |
| 
 | |
| Displays a 'breadth-first-tree' - in contrast
 | |
| to the classical Logo tree drawing programs,
 | |
| which use a depth-first-algorithm.
 | |
| 
 | |
| Uses:
 | |
| (1) a tree-generator, where the drawing is
 | |
| quasi the side-effect, whereas the generator
 | |
| always yields None.
 | |
| (2) Turtle-cloning: At each branching point
 | |
| the current pen is cloned. So in the end
 | |
| there are 1024 turtles.
 | |
| """
 | |
| from turtle import Turtle, mainloop
 | |
| from time import perf_counter as clock
 | |
| 
 | |
| def tree(plist, l, a, f):
 | |
|     """ plist is list of pens
 | |
|     l is length of branch
 | |
|     a is half of the angle between 2 branches
 | |
|     f is factor by which branch is shortened
 | |
|     from level to level."""
 | |
|     if l > 3:
 | |
|         lst = []
 | |
|         for p in plist:
 | |
|             p.forward(l)
 | |
|             q = p.clone()
 | |
|             p.left(a)
 | |
|             q.right(a)
 | |
|             lst.append(p)
 | |
|             lst.append(q)
 | |
|         for x in tree(lst, l*f, a, f):
 | |
|             yield None
 | |
| 
 | |
| def maketree():
 | |
|     p = Turtle()
 | |
|     p.setundobuffer(None)
 | |
|     p.hideturtle()
 | |
|     p.speed(0)
 | |
|     p.getscreen().tracer(30,0)
 | |
|     p.left(90)
 | |
|     p.penup()
 | |
|     p.forward(-210)
 | |
|     p.pendown()
 | |
|     t = tree([p], 200, 65, 0.6375)
 | |
|     for x in t:
 | |
|         pass
 | |
| 
 | |
| def main():
 | |
|     a=clock()
 | |
|     maketree()
 | |
|     b=clock()
 | |
|     return "done: %.2f sec." % (b-a)
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     msg = main()
 | |
|     print(msg)
 | |
|     mainloop()
 |