开始用三角形平铺屏幕

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 的方向。