使用绘制具有多个通道的轨道的乌龟编写程序。您可以要求用户输入1到8之间的整数来表示通道数。轨道通常由2个Straightaways组成,两侧都有半圆。在这些形状中的两个之间封闭了一条通道。因此,具有6个车道的轨道应具有7个相似形状的图形,彼此封闭。
上述问题是我试图产生的结果。每一条轨道都在同一条线上开始。请帮忙!我应该尝试改变起始位置吗?
import turtle
def main():
side = 80
n = int(input("How many lanes do would you want?\n"))
turtle.pendown()
for cnt in range(n+1):
race = turtle.Turtle()
race.forward(side)
race.circle(side/2,180)
race.forward(side)
race.circle(side/2,180)
side = side = side + 20
main()
答案 0 :(得分:0)
需要注意的一些重要事项:
turtle.pendown()
不会更改特定实例或race
,您需要race.pendown()
每次执行race = turtle.Turtle()
时,都会创建race
的新实例。将此语句放在for循环的一侧。
您需要移动的每个循环race
(用于轨道间距),您可以执行此操作:
race.penup() #Inside for loop.
race.right(90)
race.forward(20) #I think it should be 20...
race.right(-90)
要明确这是最终的样子:
导入乌龟
def main():
side = 80
n = int(input("How many lanes do would you want?\n"))
race = turtle.Turtle()
for cnt in range(n+1):
race.forward(side)
race.circle(side,180)
race.forward(side)
race.circle(side,180)
side = side = side + 20
race.penup() #Inside for loop.
race.right(90)
race.forward(20) #I think it should be 20...
race.right(-90)
race.backward(10)
race.pendown()
main()
同时,在3车道中间:
更加重构的代码:
import turtle
def create_track(n, side=80, change=20):
race = turtle.Turtle()
for cnt in range(n+1):
race.forward(side)
race.circle(side,180)
race.forward(side)
race.circle(side,180)
side = side + change
race.penup()
race.right(90)
race.forward(change)
race.right(-90)
race.backward(change/2)
race.pendown()
def main():
n = int(input("How many lanes do would you want?\n"))
create_track(n)
if __name__ == "__main__":
main()