was genau liefert denn feld[spieler.x+1][spieler.y]
im Falle des Überlaufens?
das ist ein Wert, den müsste man loggen können,
oder kommt es zur Exception?
das wäre das logisch richtige, als erstes muss man immer prüfen, ob nicht außerhalb der Array-Dimensionen:
if (spieler.x+1 >= feld.length)
nur innerhalb des Feldes kann man den Inhalt anschauen
ungünstig wäre aber auch, Code zu sehr zu wiederholen, kombiniere evtl. manches,
verwende z.B. statt char einen Enum, mit Werten wie Weg, Wand, Außerhalb,
eine Enum-Methode istBegehbar() liefert false für Wand + Außerhalb,
dann könntest du eine allgemeine Methode getFeld(x,y) schreiben, nur in dieser Methode Grenzen prüfen,
und entweder das Feld oder Außerhalb zurückgeben
if(getFeld(spieler.x+1,spieler.y).istBegehbar()){
spieler.x += 1; // Wenn Rechts keine Wand ist, auf das Feld rechts bewegen
}
oder auch
if(getFeld(spieler,1,0).istBegehbar()){ // Daten aus Spieler holen, 1 auf x, 0 auf y addieren
oder auch
if(istFeldFrei(spieler,1,0)){
mit Konstanten, etwa char statt Enum geht das auch, dann für Außerhalb einen bestimmten Char, etwa 0 zurückgegeben,
dann braucht man eben Hilfsmethoden die den char bekommen und true/ false liefern statt Enum-Methoden
du brauchst auch nicht zwischen Außerhalb und Wand zu unterscheiden, alles als Wand definieren,
wenn dann nur diese Methode die Arbeit macht, die Grenzen prüft, und Wand zurückgibt