Der Großteil deines Switches ist nämlich falsch und schließt nicht alle Randfälle aus 
So sollte die Randbehandlung aussehen:
[CODE=java]switch(symbol) {
case 'o':
if(playerpositiony == 0) {return false;}
if(labyrinth[playerpositiony-1][playerpositionx] == false){return false;}
else {playerpositiony -= 1; return true;}
case 'u':
if((labyrinth.length-1) == playerpositiony) {return false;}
if(labyrinth[playerpositiony+1][playerpositionx] == false){return false;}
else {playerpositiony += 1; return true;}
case 'l':
if(playerpositionx == 0) {return false;}
if(labyrinth[playerpositiony][playerpositionx-1] == false){return false;}
else {playerpositionx -= 1;return true;}
case 'r':
if((labyrinth[playerpositiony].length-1) == playerpositionx) {return false;}
if(labyrinth[playerpositiony][playerpositionx+1] == false){return false;}
else {playerpositionx += 1; return true;}
}[/CODE]