You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
2.9 KiB
131 lines
2.9 KiB
3 years ago
|
import turtle as t
|
||
|
import math
|
||
|
import time
|
||
|
import sys
|
||
|
|
||
|
|
||
|
def polygon(n=4, radius=90., offset=(0, 0), alpha_offset=0, direction=1):
|
||
|
t.penup()
|
||
|
t.goto(radius * math.cos(alpha_offset) + offset[0], radius * math.sin(alpha_offset) + offset[1])
|
||
|
t.pendown()
|
||
|
for i in range(n):
|
||
|
angle = direction * (i + 1) * 2 * math.pi / n + alpha_offset
|
||
|
t.goto(radius * math.cos(angle) + offset[0], radius * math.sin(angle) + offset[1])
|
||
|
|
||
|
|
||
|
def star(n=5, r=160):
|
||
|
# step = n // 2
|
||
|
for i in range(n):
|
||
|
t.forward(r)
|
||
|
t.right(180 - 180 * 1 / n)
|
||
|
|
||
|
|
||
|
num = int(sys.argv[1] if len(sys.argv) > 1 else input('Task: '))
|
||
|
t.shape('turtle')
|
||
|
if num == 3:
|
||
|
polygon()
|
||
|
elif num == 4:
|
||
|
polygon(100)
|
||
|
elif num == 5:
|
||
|
for r in range(70, 160, 10):
|
||
|
polygon(4, r)
|
||
|
elif num == 9:
|
||
|
for n in range(3, 10):
|
||
|
rad = 90 / (2 * math.sin(2 * math.pi / (2 * n)))
|
||
|
polygon(n, rad)
|
||
|
elif num == 10:
|
||
|
n = 6
|
||
|
alpha = 2 * math.pi / n
|
||
|
r = 90
|
||
|
for i in range(n):
|
||
|
polygon(100, r, (r * math.cos(alpha * i), r * math.sin(alpha * i)), -(math.pi - alpha * i))
|
||
|
elif num == 11:
|
||
|
for n in range(5):
|
||
|
r = 70 + 10 * n
|
||
|
polygon(100, r, (r, 0), math.pi)
|
||
|
polygon(100, r, (-r, 0), direction=-1)
|
||
|
|
||
|
elif num == 6:
|
||
|
n, r = input('n: '), 90
|
||
|
for i in range(n):
|
||
|
t.goto(r * math.cos(i * 2 * math.pi / n), r * math.sin(i * 2 * math.pi / n))
|
||
|
t.stamp()
|
||
|
t.goto(0, 0)
|
||
|
elif num == 7:
|
||
|
k = 20 / (2 * math.pi)
|
||
|
step = 100
|
||
|
n = 20
|
||
|
for phi_ in range(0, int(n * 2 * math.pi * step)):
|
||
|
phi = phi_ / step
|
||
|
r = k * phi
|
||
|
t.goto(r * math.cos(phi), r * math.sin(phi))
|
||
|
elif num == 8:
|
||
|
for n in range(1, 20):
|
||
|
# right
|
||
|
t.forward(10 * n)
|
||
|
t.left(90)
|
||
|
# up
|
||
|
t.forward(10 * (2 * n))
|
||
|
t.left(90)
|
||
|
# left
|
||
|
t.forward(10 * (2 * n))
|
||
|
t.left(90)
|
||
|
# down
|
||
|
t.forward(10 * (n * 2 + 1))
|
||
|
t.left(90)
|
||
|
t.forward(10 * n)
|
||
|
elif num == 12:
|
||
|
t.right(90)
|
||
|
for _ in range(10):
|
||
|
t.circle(50, 180)
|
||
|
t.circle(10, 180)
|
||
|
elif num == 13:
|
||
|
t.fillcolor('yellow')
|
||
|
t.begin_fill()
|
||
|
t.circle(100)
|
||
|
t.end_fill()
|
||
|
t.penup()
|
||
|
t.goto(-50, 110)
|
||
|
t.pendown()
|
||
|
t.fillcolor('blue')
|
||
|
t.begin_fill()
|
||
|
t.circle(20)
|
||
|
t.end_fill()
|
||
|
t.penup()
|
||
|
t.goto(50, 110)
|
||
|
t.pendown()
|
||
|
t.fillcolor('blue')
|
||
|
t.begin_fill()
|
||
|
t.circle(20)
|
||
|
t.end_fill()
|
||
|
t.up()
|
||
|
t.goto(-60, 155)
|
||
|
t.down()
|
||
|
|
||
|
t.width(3)
|
||
|
t.setheading(-10)
|
||
|
t.forward(30)
|
||
|
t.up()
|
||
|
t.goto(60, 155)
|
||
|
t.down()
|
||
|
t.setheading(180 + 10)
|
||
|
t.forward(30)
|
||
|
|
||
|
t.up()
|
||
|
t.goto(0, 100)
|
||
|
t.down()
|
||
|
t.width(15)
|
||
|
t.setheading(270)
|
||
|
t.forward(25)
|
||
|
|
||
|
t.up()
|
||
|
t.goto(-40, 30)
|
||
|
t.down()
|
||
|
t.color('red')
|
||
|
t.seth(0)
|
||
|
t.forward(80)
|
||
|
elif num == 14:
|
||
|
star()
|
||
|
time.sleep(float(sys.argv[2]) if len(sys.argv) > 2 else 10)
|
||
|
|