我展示了用Python的Turtle模块绘制的孙子图案,
他要求看到同心圆。
我认为使用海龟circle()
绘制它们会更快
而不是写我自己的代码来生成一个圆圈。哈!我被卡住了。
我看到产生的圆圈在乌龟的周围开始
当前位置及其绘制方向取决于龟的当前
运动的方向,但我无法弄清楚我需要做什么才能得到
同心圆。
我现在不是对有效的生产方式感兴趣
同心圆:我想看看我要做什么才能得到
这种的工作方式:
def turtle_pos(art,posxy,lift):
if lift:
art.penup()
art.setposition(posxy)
art.pendown()
def drawit(tshape,tcolor,pen_color,pen_thick,scolor,radius,mv):
window=turtle.Screen() #Request a screen
window.bgcolor(scolor) #Set its color
#...code that defines the turtle trl
for j in range(1,11):
turtle_pos(trl,[trl.xcor()+mv,trl.ycor()-mv],1)
trl.circle(j*radius)
drawit("turtle","purple","green",4,"black",20,30)
答案 0 :(得分:3)
你可以这样做:
import turtle
turtle.penup()
for i in range(1, 500, 50):
turtle.right(90) # Face South
turtle.forward(i) # Move one radius
turtle.right(270) # Back to start heading
turtle.pendown() # Put the pen back down
turtle.circle(i) # Draw a circle
turtle.penup() # Pen up while we go home
turtle.home() # Head back to the start pos
创建如下图片:
基本上它将乌龟向下移动一个半径长度,以保持所有圆圈的中心点在同一地点。
答案 1 :(得分:2)
来自文档:
中心是乌龟留下的半径单位。
因此,当你开始画一个圆圈时乌龟就在哪里,那个圆圈的中心与右边有一定距离。在每个圆圈之后,只需向左或向右移动一些像素,然后绘制另一个圆,其半径根据乌龟移动的距离进行调整。例如,如果您绘制一个半径为50像素的圆,然后向右移动10个像素,您将绘制另一个半径为40的圆,并且这两个圆应该是同心的。
答案 2 :(得分:0)
我现在对这种有效的生产方式并不感兴趣 同心圆:我想知道我必须做些什么才能获得这个方式 工作
要解决OP的问题,更改原始代码以使其正常工作是微不足道的:
turtle_pos(trl, [trl.xcor() + mv, trl.ycor() - mv], 1)
trl.circle(j * radius)
变为:
turtle_pos(trl, [trl.xcor(), trl.ycor() - mv], 1)
trl.circle(j * mv + radius)
包含上述修复和一些样式更改的完整代码:
import turtle
def turtle_pos(art, posxy, lift):
if lift:
art.penup()
art.setposition(posxy)
art.pendown()
def drawit(tshape, tcolor, pen_color, pen_thick, scolor, radius, mv):
window = turtle.Screen() # Request a screen
window.bgcolor(scolor) # Set its color
#...code that defines the turtle trl
trl = turtle.Turtle(tshape)
trl.pencolor(pen_color)
trl.fillcolor(tcolor) # not filling but makes body of turtle this color
trl.width(pen_thick)
for j in range(10):
turtle_pos(trl, (trl.xcor(), trl.ycor() - mv), True)
trl.circle(j * mv + radius)
window.mainloop()
drawit("turtle", "purple", "green", 4, "black", 20, 30)
答案 3 :(得分:-1)
所以现在我给你的是可以绘制同心圆的确切代码。
import turtle
t=turtle.Turtle()
for i in range(5):
t.circle(i*10)
t.penup()
t.setposition(0,-(i*10))
t.pendown()
turtle.done()