Search code examples
pythonturtle-graphicspython-turtle

How to make a turtle object look at where the mouse has clicked


I want to write a turtle program where the turtle goes to wherever you click. So far I have this:

from turtle import *
screen = Screen()
turtle = Turtle()
screen.onscreenclick(turtle.goto)

But the problem is the turtle object just stays facing in the same direction. I want to somehow make it look towards where it's going. How can I achieve this?


Solution

  • This will do what you describe:

    import turtle
    
    screen = turtle.Screen()
    turtle = turtle.Turtle()
    
    def turtle_headto(x, y):
        turtle.left(turtle.towards(x, y) - turtle.heading())
        turtle.goto(x, y)
    
    screen.onscreenclick(turtle_headto)
    
    screen.mainloop()
    

    But the motion of the arrow/turtle isn't always optimal, i.e. sometimes it spins the long way 'round, but that's something for you to optimize (e.g. when to call left() and when to call right())