我是Python中的龟图形新手,我遇到了一些特定问题的问题。我正在尝试生成一个使用while
循环从星形中心绘制随机锯齿线的星星。
每一行的距离应为250.我在循环中使用penup
pendown
和setpos
命令绘制这些随机行,每行应该是随机的颜色。
以下是我希望产生的内容:random star
这是我到目前为止的代码:
# tg_random_star.py
from random import randrange
from turtle import *
MAX_ANGLE = 30
def jaggedLine(turtle, pieces, pieceLength):
for i in range(pieces):
turtle.forward(pieceLength)
r = randrange(-MAX_ANGLE, MAX_ANGLE + 1)
turtle.right(r)
def jumpToCenter(turtle):
turtle.penup()
turtle.setpos(0, 0)
turtle.pendown()
def randomColor(turtle):
turtle.colormode(255)
r = randrange(255) # red component of color
g = randrange(255) # green component
b = randrange(255) # blue component
turtle.pencolor(r, g, b)
def main():
colormode(255)
t = Turtle()
jaggedLine(t, 10, 30)
jumpToCenter(t)
jaggedLine(t, 10, 30)
if __name__ == "__main__":
main()
它目前生成2行,但turtle.pencolor(r, g, b)
和colormode(255)
似乎不起作用,因为两行都是黑色的。知道为什么这些线没有颜色吗?
我不是使用for i in range(pieces)
来绘制基于段数的行,而是如何使用while
循环绘制每条距离为250的锯齿状线?换句话说,我想在从中心绘制新线之前,每条线的距离为250。
(也许我可以使用xcor
和ycor
方法找到海龟的位置,然后使用距离公式计算距离?)
def distance(p0, p1):
return math.sqrt((p0[0] - p1[0])**2 + (p0[1] - p1[1])**2)`
任何帮助或解释都将不胜感激,谢谢。
答案 0 :(得分:0)
知道为什么这些线条没有颜色?
那很容易,因为你从未真正致电randomColor()
而不是在范围(片段)中使用i来绘制基于的行 关于段数,我如何使用while循环绘制锯齿状 每条线的距离为250?
在这里,我们可以利用未充分利用的.distance()
乌龟方法来告诉我们离中心有多远。这是直线距离,而不是路径行进距离,这似乎与您的目标插图相符:
from random import randrange
from turtle import Turtle, Screen
MAX_ANGLE = 30
MAX_DISTANCE = 250
def jaggedLine(turtle, pieceLength):
randomColor(turtle)
while turtle.distance(0, 0) < MAX_DISTANCE:
angle = randrange(-MAX_ANGLE, MAX_ANGLE + 1)
turtle.right(angle)
turtle.forward(pieceLength)
def jumpToCenter(turtle):
turtle.penup()
turtle.home()
turtle.pendown()
def randomColor(turtle):
r = randrange(255) # red component of color
g = randrange(255) # green component
b = randrange(255) # blue component
turtle.pencolor(r, g, b)
def main():
s = Screen()
s.colormode(255)
t = Turtle()
t.pensize(2)
t.speed('fastest') # because I have no patience
for angle in range(0, 360, 2):
jumpToCenter(t)
t.setheading(angle)
jaggedLine(t, 30)
t.hideturtle()
s.mainloop()
if __name__ == "__main__":
main()
<强>输出强>