gpt4 book ai didi

python - 开始用三角形平铺屏幕

转载 作者:行者123 更新时间:2023-12-05 04:35:05 25 4
gpt4 key购买 nike

目前,我正在尝试开始尝试使用随机颜色的等边三角形来平铺 python turtle 图形屏幕。我制作了一个函数,它能够成功地制作一个从坐标 v_1 = (x, y) 开始的三角形。一旦形成三角形,我希望 turtle 前往不等于 v_1 的其他三角形顶点之一,并在那里开始一个新三角形。我想在一个 while 循环中完成所有这些。然而,当我运行我的代码时,似乎 turtle 总是回到第一个等边三角形的初始位置,并在它上面制作一个新的。我不确定我做错了什么。这是我的代码:

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 - 开始用三角形平铺屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71108158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com