First, thanks for your feedback and taking the time to try my game (even if its a classic and simple one).
For the issues:
You need to press S to Start : I know it can be kinda confusing but its because I'm using a start screen (find it to be cooler)
Music problem: You sure it mix songs ? Everytime I press space it makes a new song play (I know they are all 8 bits but they are all different). Maybe you mean that if you stop one music then press space a few times the song will be where you paused it but that's not the case either.
I know for the restart thing and for the problem of locating, through the framerate limit of the game is set low so the game is kinda easy. (there's another variant of the game where I double the framerate limit and make the snake grow 3 times bigger everytime you eat a key :p ).
The problem is that due of the architecture of the code right now, it is kinda impossible to make the game restart. I did not make a screenstate system (like putting all the game in a function and call this function if you press a button in the menu). Instead I just draw sprite (the fail screen if your snake hit something, the menu while you still didn't press S)... I know it's a very very very bad choice but it's only my first game and I plan to implement a screenstate system in the next game
Most of the time on my side the snake picks the key up. For the collision I use the contains() method which detect if a point (x,y) is contained in the sprite of the key. So yeah it's kinda based on luck...
For the top wall I would just need to change the background image (located in data/), as well as all the epic songs if you wish to hear them again, outside of the game
Thanks a lot for your feedback.