TurtleGraphics Python: Bouncing turtle off the walls?

后端 未结 2 482

So, I am trying to make a realistic bouncing function, where the turtle hits a wall and bounces off at the corresponding angle. My code looks like this:

def boun         


        
2条回答
  •  囚心锁ツ
    2021-01-24 09:05

    Try something like this:

    if not (left <= x <= right):
        turtle.left(180 - 2 * turtle.heading())
    elif not (bottom <= y <= top):
        turtle.left(-2 * turtle.heading())
    else:
        pass
    

    My python syntax is a little rusty, sorry :P. But the math is a little different for a horizontal vs. a vertical flip.

    EDIT:

    I suspect that what is happening is your turtle is getting into a situation where it is pointing upwards and stuck above the top wall. That would lead it to just flip indefinitely. You could try adding the following conditions:

    if (x <= left and 90 <= turtle.heading() <= 270) or (right <= x and not 90 <= turtle.heading() <= 270):
        turtle.left(180 - 2 * turtle.heading())
    elif (y <= bottom and turtle.heading() >= 180) or (top <= y and turtle.heading <= 180):
        turtle.left(-2 * turtle.heading())
    else:
        pass
    

    If that works, there is probably a bug elsewhere in your code. Edge handling is tricky to get right. I assume that turtle.heading() will always return something between 0 and 360 - if not then it will be even more tricky to get right.

提交回复
热议问题