Never used pygame, but what you are looking for is calculating an angle given a difference vector, in your case player_position - mouse_point. This will give you a (relative) x and y which you feed to atan2. Search the python math lib for this function, I bet it exists. This will give you the angle in radians which you can then feed to the rotate function (angle_to_mouse). Don't know what coordinate system you are using (left/right-handed), so probably you will have to negate y prior to the atan2 call (or negate angle_to_mouse).