I get a crash when I exit the game (maybe something with pointers/not closing cleanly?)
As for not going off the screen, a simple solution off the top of my head would be since you have the players x/y you can check on your move event something like (super pseudo code)
if( player.x >= 0 && a is pressed )
move player_left
if( player.x <= window.size.x && a d is pressed )
move player_right
I think your score/wave tracker is not working properly. I've finished two 15 second stints and it says only one wave completed. Also, regardless if I shoot boxes or not I still get 500 points.
Other than that nice project for your first release