PHP 8.2.30
Preview: bytedesign.py Size: 4.15 KB
//lib64/python3.8/turtledemo/bytedesign.py

#! /usr/bin/python3.8
"""      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.
"""

from turtle import Turtle, mainloop
from time import perf_counter as 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()

Directory Contents

Dirs: 1 × Files: 22

Name Size Perms Modified Actions
- drwxr-xr-x 2024-03-21 10:19:13
Edit Download
4.15 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
951 B lrw-r--r-- 2023-06-06 13:32:21
Edit Download
3.13 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
1.31 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
2.90 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
3.39 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
2.38 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
2.00 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
6.36 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
1.26 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
1.04 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
3.30 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
2.76 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
1.33 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
1.76 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
4.91 KB lrw-r--r-- 2023-10-17 18:12:57
Edit Download
1.37 KB lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
160 B lrw-r--r-- 2023-06-06 13:32:21
Edit Download
1.09 KB lrw-r--r-- 2023-06-06 13:32:21
Edit Download
820 B lrwxr-xr-x 2023-06-06 13:32:21
Edit Download
314 B lrw-r--r-- 2023-06-06 13:32:21
Edit Download
13.91 KB lrw-r--r-- 2023-10-17 18:12:57
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).