mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +00:00 
			
		
		
		
	 b992a0e102
			
		
	
	
		b992a0e102
		
	
	
	
	
		
			
			requires them. Disable executable bits and shebang lines in test and benchmark files in order to prevent using a random system python, and in source files of modules which don't provide command line interface. Fixed shebang line to use python3 executable in the unittestgui script.
		
			
				
	
	
		
			162 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env python3
 | |
| """      turtle-example-suite:
 | |
| 
 | |
|         tdemo_bytedesign.py
 | |
| 
 | |
| An example adapted from the example-suite
 | |
| of PythonCard's turtle graphics.
 | |
| 
 | |
| It's based on an article in BYTE magazine
 | |
| Problem Solving with Logo: Using Turtle
 | |
| Graphics to Redraw a Design
 | |
| November 1982, p. 118 - 134
 | |
| 
 | |
| -------------------------------------------
 | |
| 
 | |
| Due to the statement
 | |
| 
 | |
| t.delay(0)
 | |
| 
 | |
| in line 152, which sets the animation delay
 | |
| to 0, this animation runs in "line per line"
 | |
| mode as fast as possible.
 | |
| """
 | |
| 
 | |
| import math
 | |
| from turtle import Turtle, mainloop
 | |
| from time import clock
 | |
| 
 | |
| # wrapper for any additional drawing routines
 | |
| # that need to know about each other
 | |
| class Designer(Turtle):
 | |
| 
 | |
|     def design(self, homePos, scale):
 | |
|         self.up()
 | |
|         for i in range(5):
 | |
|             self.forward(64.65 * scale)
 | |
|             self.down()
 | |
|             self.wheel(self.position(), scale)
 | |
|             self.up()
 | |
|             self.backward(64.65 * scale)
 | |
|             self.right(72)
 | |
|         self.up()
 | |
|         self.goto(homePos)
 | |
|         self.right(36)
 | |
|         self.forward(24.5 * scale)
 | |
|         self.right(198)
 | |
|         self.down()
 | |
|         self.centerpiece(46 * scale, 143.4, scale)
 | |
|         self.getscreen().tracer(True)
 | |
| 
 | |
|     def wheel(self, initpos, scale):
 | |
|         self.right(54)
 | |
|         for i in range(4):
 | |
|             self.pentpiece(initpos, scale)
 | |
|         self.down()
 | |
|         self.left(36)
 | |
|         for i in range(5):
 | |
|             self.tripiece(initpos, scale)
 | |
|         self.left(36)
 | |
|         for i in range(5):
 | |
|             self.down()
 | |
|             self.right(72)
 | |
|             self.forward(28 * scale)
 | |
|             self.up()
 | |
|             self.backward(28 * scale)
 | |
|         self.left(54)
 | |
|         self.getscreen().update()
 | |
| 
 | |
|     def tripiece(self, initpos, scale):
 | |
|         oldh = self.heading()
 | |
|         self.down()
 | |
|         self.backward(2.5 * scale)
 | |
|         self.tripolyr(31.5 * scale, scale)
 | |
|         self.up()
 | |
|         self.goto(initpos)
 | |
|         self.setheading(oldh)
 | |
|         self.down()
 | |
|         self.backward(2.5 * scale)
 | |
|         self.tripolyl(31.5 * scale, scale)
 | |
|         self.up()
 | |
|         self.goto(initpos)
 | |
|         self.setheading(oldh)
 | |
|         self.left(72)
 | |
|         self.getscreen().update()
 | |
| 
 | |
|     def pentpiece(self, initpos, scale):
 | |
|         oldh = self.heading()
 | |
|         self.up()
 | |
|         self.forward(29 * scale)
 | |
|         self.down()
 | |
|         for i in range(5):
 | |
|             self.forward(18 * scale)
 | |
|             self.right(72)
 | |
|         self.pentr(18 * scale, 75, scale)
 | |
|         self.up()
 | |
|         self.goto(initpos)
 | |
|         self.setheading(oldh)
 | |
|         self.forward(29 * scale)
 | |
|         self.down()
 | |
|         for i in range(5):
 | |
|             self.forward(18 * scale)
 | |
|             self.right(72)
 | |
|         self.pentl(18 * scale, 75, scale)
 | |
|         self.up()
 | |
|         self.goto(initpos)
 | |
|         self.setheading(oldh)
 | |
|         self.left(72)
 | |
|         self.getscreen().update()
 | |
| 
 | |
|     def pentl(self, side, ang, scale):
 | |
|         if side < (2 * scale): return
 | |
|         self.forward(side)
 | |
|         self.left(ang)
 | |
|         self.pentl(side - (.38 * scale), ang, scale)
 | |
| 
 | |
|     def pentr(self, side, ang, scale):
 | |
|         if side < (2 * scale): return
 | |
|         self.forward(side)
 | |
|         self.right(ang)
 | |
|         self.pentr(side - (.38 * scale), ang, scale)
 | |
| 
 | |
|     def tripolyr(self, side, scale):
 | |
|         if side < (4 * scale): return
 | |
|         self.forward(side)
 | |
|         self.right(111)
 | |
|         self.forward(side / 1.78)
 | |
|         self.right(111)
 | |
|         self.forward(side / 1.3)
 | |
|         self.right(146)
 | |
|         self.tripolyr(side * .75, scale)
 | |
| 
 | |
|     def tripolyl(self, side, scale):
 | |
|         if side < (4 * scale): return
 | |
|         self.forward(side)
 | |
|         self.left(111)
 | |
|         self.forward(side / 1.78)
 | |
|         self.left(111)
 | |
|         self.forward(side / 1.3)
 | |
|         self.left(146)
 | |
|         self.tripolyl(side * .75, scale)
 | |
| 
 | |
|     def centerpiece(self, s, a, scale):
 | |
|         self.forward(s); self.left(a)
 | |
|         if s < (7.5 * scale):
 | |
|             return
 | |
|         self.centerpiece(s - (1.2 * scale), a, scale)
 | |
| 
 | |
| def main():
 | |
|     t = Designer()
 | |
|     t.speed(0)
 | |
|     t.hideturtle()
 | |
|     t.getscreen().delay(0)
 | |
|     t.getscreen().tracer(0)
 | |
|     at = clock()
 | |
|     t.design(t.position(), 2)
 | |
|     et = clock()
 | |
|     return "runtime: %.2f sec." % (et-at)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     msg = main()
 | |
|     print(msg)
 | |
|     mainloop()
 |