Python Turtle无限循环将不允许其他命令运行

时间:2019-12-01 10:19:10

标签: python loops animation while-loop turtle-graphics

我正在尝试制作一个游戏,该游戏在角色的中间有一个角色,在角色的前面有一个道路,以使角色在道路上前进并碰到一些物体。我想做的是在道路上形成一个循环,在该循环中显示车道不断下降,以使人感觉角色一直在前进。我放置了两条表示行车路线限制的外线,以及两条用于三个车道的内线。问题是我正在尝试使用while True进行此循环,并为两个通道创建一个函数。但是,Python不允许传递给其他命令,并且即使在开始时仅显示一个车道,游戏也会卡住。我应该使用什么其他结构来使游戏继续进行?

import turtle
screen = turtle.Screen()
screen.tracer(False)



outer_lines = turtle.Turtle()
outer_lines.pensize(5)
outer_lines.speed(0)
outer_lines.up()
outer_lines.goto(-250,-300)
outer_lines.down()
outer_lines.goto(-50,300)
outer_lines.up()
outer_lines.goto(250,-300)
outer_lines.down()
outer_lines.goto(50,300)

#io is the LEFT LANE

xx = 37.7330777468525 #lane length x

io = turtle.Turtle()
io.hideturtle()
io.speed(0)
io.up()
io.left(83.628367368543) #angle of incline of lanes
io.pensize(2)

#ia is the RIGHT LANE

ia = turtle.Turtle()
ia.hideturtle()
ia.speed(0)
ia.up()
ia.left(180-83.628367368543)
ia.pensize(2)



def lane_animation(lane):

    def draw_lane(lane):
        for drawinglane in range(5):
            lane.pensize(2)
            lane.color("white")
            lane.forward(xx)
            lane.color("black")
            lane.forward(xx*2)

    def draw_lane2(lane):
        for drawinglane in range(5):
            lane.color("black")
            lane.forward(xx*2)
            lane.color("white")
            lane.forward(xx)

    if lane == io:
        lanex = -83
    elif lane == ia:
        lanex = 83


    while True:
        lane.goto(lanex,-300)
        lane.down()
        #io.clear()
        draw_lane(lane)
        back.update()
        lane.up()


        lane.goto(lanex,-300)
        lane.down()
        #io.clear()
        draw_lane2(lane)
        back.update()
        lane.up()

        lane.goto(lanex,-300)
        lane.down()
        #io.clear()
        lane.color("black")
        lane.forward(xx)
        draw_lane(lane)
        back.update()
        lane.up()


lane_animation(io)
lane_animation(ia)

0 个答案:

没有答案