我正在尝试为需要绘制花朵的海龟图形程序生成随机Y坐标的列表,但是要防止花朵相互画图,我需要从后到前绘制它们。我需要做的是从最大到最小对随机列表进行排序,然后按照该顺序绘制花朵。
我已经设置了该程序以生成9个随机数,并按从大到小的顺序对其进行排序,但是我不知道如何从该列表中依次提取数字并为它们分配花朵的Y值>
这是我用于生成随机列表的代码:
def draw_stem(t,StemX,StemY):
StemYcoordinates=random.sample(range(-200,0),9)
sorted(StemYcoordinates, key=int)
但是我在将它连接到代码的这一部分时遇到了麻烦,因为它到达我要绘制花朵的xy位置
for i in range(9):
t.setheading(90)
t.pensize(7-(StemYcoordinate//40))
t.color("#39ff14")
t.penup()
t.goto(StemX,StemYcoordinates)
t.down()
任何帮助将不胜感激
答案 0 :(得分:0)
我认为对于您的代码,您将需要使用setpos()
方法。
此方法将乌龟屏幕视作具有四个象限的坐标平面。
使用此方法,相应地设置x和y坐标,或者根据需要设置随机值。
例如,每次运行时,这都会将乌龟放在一个随机的位置:
from turtle import *
t = Turtle()
t.penup()
from random import randint
x = randint(-200, 200)
y = randint(-200, 200)
t.setpos(x, y)
希望这会有所帮助!
答案 1 :(得分:0)
基于对问题的描述,您似乎想要以下内容:
from turtle import Screen, Turtle
from random import sample, random
RADIUS = 100
PETALS = 10
def draw_petal(t, radius):
heading = t.heading()
t.circle(radius, 60)
t.left(120)
t.circle(radius, 60)
t.setheading(heading)
def draw_flower(t):
for _ in range(PETALS):
draw_petal(t, RADIUS)
t.left(360 / PETALS)
def draw_flowers(t, stemX):
stemYcoordinates = sorted(sample(range(-200, 0), 9))
for stemYcoordinate in stemYcoordinates:
t.setheading(90)
t.pensize(7 + stemYcoordinate // 40)
t.color(random(), random(), random())
t.penup()
t.goto(stemX, stemYcoordinate)
t.pendown()
draw_flower(t)
screen = Screen()
turtle = Turtle(visible=False)
turtle.speed('fastest') # because I have no patience
draw_flowers(turtle, 0)
screen.exitonclick()
但是,如果这不是您想要的,请花一些时间重新阅读并编辑您的问题,以阐明您想做什么。添加更多(如果不是全部)到目前为止编写的代码,以明确您需要帮助的地方。