Turtle 迷你项目 - Udacity - Python - 围绕另一个形状绘制/移动一个形状
Turtle Mini-Project - Udacity - Python - Drawing / moving a shape around another shape
我想做一朵花,从它的大致中心画出黄线,画出整个圆周。
我遇到的问题是要画一条线,转到中心,然后再次画出相同的长度,但比前一条大 10 度。
我不知道该怎么做,这条线要么反复来回弹跳,要么绕着一边旋转(比如当我做一个尖头的形状时)。
那么我如何让这条黄线回拨,并逐渐羽化/让尖锐的形状不断地画出完整的 360 度?
我想这是我的第一个 'real' 程序。我以前没有编程经验,才开始这样做几天。我在函数 "draw_feather()" 中使用的代码来自另一个站点,因为我不知道如何在圆中旋转三角形。
import turtle
def draw_fractal(ink):
for i in range(1,37):
ink.circle(50)
ink.right(10)
def draw_feather(ink):
while True:
ink.forward(200)
ink.left(170)
if abs(ink.pos()) < 1:
break
def draw_stem(ink):
ink.goto(1,-400)
ink.home()
ink.goto(5,-400)
ink.home()
ink.goto(3,-400)
def Draw():
window = turtle.Screen()
window.bgcolor =("White")
R = turtle.Turtle()
R.shape("circle")
R.color("Red")
R.setpos(4,3)
R.speed(100)
G = turtle.Turtle()
G.shape("circle")
G.color("Green")
G.setpos(3,3)
G.speed(100)
B = turtle.Turtle()
B.shape("circle")
B.color("Blue")
B.setpos(2,3)
B.speed(100)
Stem = turtle.Turtle()
Stem.shape("circle")
Stem.speed(100)
Feather = turtle.Turtle()
Feather.shape("circle")
Feather.speed(100)
Feather.color("Yellow")
draw_fractal(R)
draw_fractal(G)
draw_fractal(B)
draw_feather(Feather)
draw_stem(Stem)
window.exitonclick()
Draw()
下面是您的代码的返工,以按照您的描述执行:
import turtle
def draw_flower(ink):
ink.up()
ink.home()
for degrees in range(10, 370, 10):
ink.down()
ink.forward(200)
ink.up()
ink.home() # resets angle to 0 degrees
ink.left(degrees) # so absolute angle, not relative
def draw_stem(ink):
ink.goto(1, -400)
ink.home()
ink.goto(5, -400)
ink.home()
ink.goto(3, -400)
def Draw():
window = turtle.Screen()
window.bgcolor("white")
stem = turtle.Turtle()
stem.color("green")
stem.speed("fast")
draw_stem(stem)
flower = turtle.Turtle()
flower.color("yellow")
flower.speed("fastest")
draw_flower(flower)
Draw()
turtle.done()
只需转到屏幕中央,画一条黄线,重新回到屏幕中央,轻轻转动并重复。请注意,turtle.home()
方法会影响海龟的角度,因此我们必须为此进行调整:
此外,100 对 turtle.speed()
没有任何意义,因为它大于 10 -- 使用符号参数来明确您的意图。
我想做一朵花,从它的大致中心画出黄线,画出整个圆周。
我遇到的问题是要画一条线,转到中心,然后再次画出相同的长度,但比前一条大 10 度。
我不知道该怎么做,这条线要么反复来回弹跳,要么绕着一边旋转(比如当我做一个尖头的形状时)。
那么我如何让这条黄线回拨,并逐渐羽化/让尖锐的形状不断地画出完整的 360 度?
我想这是我的第一个 'real' 程序。我以前没有编程经验,才开始这样做几天。我在函数 "draw_feather()" 中使用的代码来自另一个站点,因为我不知道如何在圆中旋转三角形。
import turtle
def draw_fractal(ink):
for i in range(1,37):
ink.circle(50)
ink.right(10)
def draw_feather(ink):
while True:
ink.forward(200)
ink.left(170)
if abs(ink.pos()) < 1:
break
def draw_stem(ink):
ink.goto(1,-400)
ink.home()
ink.goto(5,-400)
ink.home()
ink.goto(3,-400)
def Draw():
window = turtle.Screen()
window.bgcolor =("White")
R = turtle.Turtle()
R.shape("circle")
R.color("Red")
R.setpos(4,3)
R.speed(100)
G = turtle.Turtle()
G.shape("circle")
G.color("Green")
G.setpos(3,3)
G.speed(100)
B = turtle.Turtle()
B.shape("circle")
B.color("Blue")
B.setpos(2,3)
B.speed(100)
Stem = turtle.Turtle()
Stem.shape("circle")
Stem.speed(100)
Feather = turtle.Turtle()
Feather.shape("circle")
Feather.speed(100)
Feather.color("Yellow")
draw_fractal(R)
draw_fractal(G)
draw_fractal(B)
draw_feather(Feather)
draw_stem(Stem)
window.exitonclick()
Draw()
下面是您的代码的返工,以按照您的描述执行:
import turtle
def draw_flower(ink):
ink.up()
ink.home()
for degrees in range(10, 370, 10):
ink.down()
ink.forward(200)
ink.up()
ink.home() # resets angle to 0 degrees
ink.left(degrees) # so absolute angle, not relative
def draw_stem(ink):
ink.goto(1, -400)
ink.home()
ink.goto(5, -400)
ink.home()
ink.goto(3, -400)
def Draw():
window = turtle.Screen()
window.bgcolor("white")
stem = turtle.Turtle()
stem.color("green")
stem.speed("fast")
draw_stem(stem)
flower = turtle.Turtle()
flower.color("yellow")
flower.speed("fastest")
draw_flower(flower)
Draw()
turtle.done()
只需转到屏幕中央,画一条黄线,重新回到屏幕中央,轻轻转动并重复。请注意,turtle.home()
方法会影响海龟的角度,因此我们必须为此进行调整:
此外,100 对 turtle.speed()
没有任何意义,因为它大于 10 -- 使用符号参数来明确您的意图。