开始用三角形平铺屏幕
A start to tiling the screen with triangles
目前,我正在尝试开始尝试使用随机颜色的等边三角形平铺 python 乌龟图形屏幕。我制作了一个函数,它能够成功地从坐标 v_1 = (x, y) 开始制作三角形。一旦形成三角形,我希望乌龟前往不等于 v_1 的其他三角形顶点之一,并在那里开始一个新三角形。我想在一个 while 循环中完成所有这些。然而,当我 运行 我的代码时,似乎乌龟总是回到第一个等边三角形的初始位置,并在它上面制作一个新的。我不确定我做错了什么。这是我的代码:
from turtle import Turtle, colormode, done
from random import randint
colormode(255)
def make_left_triangle(bob: Turtle, x: float, y: float) -> None:
"""Makes an equilaterial triangle at coordinates (x, y) with the turtle bob moving left."""
r: int = randint(0, 255)
g: int = randint(0, 255)
b: int = randint(0, 255)
rand_n: int = randint(1, 2)
i: int = 0
bob.penup()
bob.goto(x, y)
bob.pendown()
bob.fillcolor(r, g, b)
bob.begin_fill()
while i < 3:
bob.forward(200)
bob.left(120)
i += 1
bob.end_fill()
while rand_n < 3:
bob.forward(200)
bob.left(120)
rand_n += 1
def main() -> None:
bob: Turtle = Turtle()
i: int = 0
rand_n: int = randint(25, 50)
x_coord: float = 0
y_coord: float = 0
while i < rand_n:
make_left_triangle(bob, x_coord, y_coord)
x_coord = bob.pos()[0]
y_coord = bob.pos()[1]
i += 1
done()
if __name__ == "__main__":
main()
如能就问题所在提供任何帮助,我们将不胜感激!谢谢
问题是在对 make_left_triangle 的不同调用之间保留了 bob 的方向。例如,如果你画一个三角形 ABC:
C
/ \
/ \
A-----B
然后移动到顶点C你也转向CA的方向。因此,下次您将绘制一个新的三角形 CAB,它将绘制在初始 ABC 之上。您需要在每次 make_left_triangle 调用开始时重置 bob 的方向。
目前,我正在尝试开始尝试使用随机颜色的等边三角形平铺 python 乌龟图形屏幕。我制作了一个函数,它能够成功地从坐标 v_1 = (x, y) 开始制作三角形。一旦形成三角形,我希望乌龟前往不等于 v_1 的其他三角形顶点之一,并在那里开始一个新三角形。我想在一个 while 循环中完成所有这些。然而,当我 运行 我的代码时,似乎乌龟总是回到第一个等边三角形的初始位置,并在它上面制作一个新的。我不确定我做错了什么。这是我的代码:
from turtle import Turtle, colormode, done
from random import randint
colormode(255)
def make_left_triangle(bob: Turtle, x: float, y: float) -> None:
"""Makes an equilaterial triangle at coordinates (x, y) with the turtle bob moving left."""
r: int = randint(0, 255)
g: int = randint(0, 255)
b: int = randint(0, 255)
rand_n: int = randint(1, 2)
i: int = 0
bob.penup()
bob.goto(x, y)
bob.pendown()
bob.fillcolor(r, g, b)
bob.begin_fill()
while i < 3:
bob.forward(200)
bob.left(120)
i += 1
bob.end_fill()
while rand_n < 3:
bob.forward(200)
bob.left(120)
rand_n += 1
def main() -> None:
bob: Turtle = Turtle()
i: int = 0
rand_n: int = randint(25, 50)
x_coord: float = 0
y_coord: float = 0
while i < rand_n:
make_left_triangle(bob, x_coord, y_coord)
x_coord = bob.pos()[0]
y_coord = bob.pos()[1]
i += 1
done()
if __name__ == "__main__":
main()
如能就问题所在提供任何帮助,我们将不胜感激!谢谢
问题是在对 make_left_triangle 的不同调用之间保留了 bob 的方向。例如,如果你画一个三角形 ABC:
C
/ \
/ \
A-----B
然后移动到顶点C你也转向CA的方向。因此,下次您将绘制一个新的三角形 CAB,它将绘制在初始 ABC 之上。您需要在每次 make_left_triangle 调用开始时重置 bob 的方向。