The only bug I found was when hitting two different arrow keys semi-quickly the player stops.

I'm working on this, debugging is my least favorite part of coding when it takes this long. Even though it's only been an hour haha.

Do you have any idea what could be making the key-reading so sloppy?

It seems like there is absolutely no point to the xxxPressed, dx, dy, and xxxWait variables, I can't see any reasonable use for them, except playing around with numbers.The variables that control all the moving are the dirXXX variables, yet everything seems fine to me.....

I didn't do any extensive debugging because your code is way overcomplicated when you could have taken out half of it.

EDIT: Aha, I stared at it a couple more minutes and I figured it out. This only happens when you press a new key while still holding down the old key. Since my fingers are moving really fast, I couldn't really notice it but I noticed the bug in the code. I traced it down to keyReleased(int). Let's say I hold down UP, hold RIGHT, release UP, then release RIGHT: dirUp gets set to true, then dirRight gets set to true. In keyReleased(int), when I release UP: dirRight, dirLeft, and dirDown are set to false; then I release RIGHT: dirLeft, dirUp, and dirDown are set to false. In the end everything is false so nothing is moving!

I suggest using only 1 variable for direction and having 4 constants that specify what direction to move:

By "overcomplicated" I meant more like "overworked". You had lots of things going on, different variables that meant the same thing and many variables that were unused. However I was only looking at your Player class. I didn't open any of your other source files

And of course, you can understand your own code because you typed it, you know what was going on through your head when you did (at least....for the time being )

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org