Lev
3 years ago
commit
11ee4e318c
3 changed files with 578 additions and 0 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,130 @@
|
||||
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) |
||||
|
Loading…
Reference in new issue