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