Hello,

As stated in the title, I am having a problem properly calculating the angles in relation to the player's sprite and where the mouse is on the screen.
It works fine as long as you keep the mouse a certain distance from the player, but as you get closer, the angle starts to change dramatically, and loads the wrong images.
Here is the code I have:
Java Code:
package movePlayerGame;

import java.awt.Image;
import java.awt.event.*;
import javax.swing.ImageIcon;
import java.lang.Math;

public class Player {

    	private Image img;

    	private double mouseX, mouseY, slopeX, slopeY;
    	private double angle;
    	private int x, y, mx, my;
    	private Tiles tile;

		ImageIcon N = new ImageIcon(this.getClass().getResource("n.png"));
		ImageIcon E = new ImageIcon(this.getClass().getResource("e.png"));
		ImageIcon W = new ImageIcon(this.getClass().getResource("w.png"));
        ImageIcon S = new ImageIcon(this.getClass().getResource("s.png"));
        ImageIcon NE = new ImageIcon(this.getClass().getResource("ne.png"));
        ImageIcon NW = new ImageIcon(this.getClass().getResource("nw.png"));
        ImageIcon SE = new ImageIcon(this.getClass().getResource("se.png"));
        ImageIcon SW = new ImageIcon(this.getClass().getResource("sw.png"));

        boolean bne = false;
        boolean bnw = false;
        boolean bse = false;
        boolean bsw = false;
        boolean bn = false;
        boolean be = false;
        boolean bw = false;
        boolean bs = false;

    public Player(){

		img = N.getImage();
		x = 375;
		y = 275;

    }

    public void move(){

		x += mx;
		y += my;

	}

	public int getX(){
		return x;
	}

	public int getY(){
		return y;
	}

     public Image getImage(){
	    return img;
    }

	public void mouseMoved(MouseEvent e) {

		mouseX = e.getX();
		mouseY = e.getY();

		slopeX = mouseX - x;
		slopeY = y - mouseY;

		angle = Math.toDegrees(Math.atan2(slopeX, slopeY));

		if(angle >= -22.5 && angle < 22.5){
			img = N.getImage();
		}

		if(angle >= 22.5 && angle < 67.5){
			img = NE.getImage();
		}

		if(angle >= -67.5 && angle < -22.5){
			img = NW.getImage();
		}

		if(angle >= 67.5 && angle < 112.5){
			img = E.getImage();
		}

		if(angle >= -112.5 && angle < -67.5){
			img = W.getImage();
		}

		if(angle >= -157.5 && angle < -112.5){
			img = SW.getImage();
		}

		if(angle >= 112.5 && angle < 157.5){
			img = SE.getImage();
		}

		if(angle >= 157.5 || angle < -157.5){
			img = S.getImage();
		}

	}

        public void keyPressed(KeyEvent e) {

        int key = e.getKeyCode();

        if (key == KeyEvent.VK_A) {
            mx = -1;

        }

        if (key == KeyEvent.VK_D) {
            mx = 1;
        }

        if (key == KeyEvent.VK_W) {
            my = -1;
        }

        if (key == KeyEvent.VK_S) {
            my = 1;
        }
    }

        public void keyReleased(KeyEvent e) {

        int key = e.getKeyCode();

        if (key == KeyEvent.VK_A) {
            mx = 0;
        }

        if (key == KeyEvent.VK_D) {
            mx = 0;
        }

        if (key == KeyEvent.VK_W) {
            my = 0;
        }

        if (key == KeyEvent.VK_S) {
            my = 0;
        }
	}



}
Any help is appreciated :)