#!/usr/bin/env python3""" turtle-example-suite:tdemo_bytedesign.pyAn example adapted from the example-suiteof PythonCard's turtle graphics.It's based on an article in BYTE magazineProblem Solving with Logo: Using TurtleGraphics to Redraw a DesignNovember 1982, p. 118 - 134-------------------------------------------Due to the statementt.delay(0)in line 152, which sets the animation delayto 0, this animation runs in "line per line"mode as fast as possible."""from turtle import Turtle, mainloopfrom time import perf_counter as clock# wrapper for any additional drawing routines# that need to know about each otherclass 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): returnself.forward(side)self.left(ang)self.pentl(side - (.38 * scale), ang, scale)def pentr(self, side, ang, scale):if side < (2 * scale): returnself.forward(side)self.right(ang)self.pentr(side - (.38 * scale), ang, scale)def tripolyr(self, side, scale):if side < (4 * scale): returnself.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): returnself.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):returnself.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()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。