Begrenzung durch Spielfeld

Hallo:)
wie kann man das schaffen, dass eine Spielfigur nicht aus dem Spielfeld herausläuft?
Das Spielfeld besteht aus chars ( * stellt z.B. die Wand da). Ich habe das Spielfeld in einem 2 dimensionalen Array gespeichert.

Das war mein Ansatz (für die Bewegung nach rechts):

if(feld[spieler.x+1][spieler.y] != '*'){ 
			spieler.x += 1; // Wenn Rechts keine Wand ist, auf das Feld rechts bewegen
		}
		else{
			// Wenn Rechts eine Wand ist, dann soll nichts passieren ( die Spielfigur bleibt auf ihrem Feld)
		}}

Aber das funktioniert leider nicht. Meine Spielfigur läuft trotzdem noch über die Wände.

Vielen Dank im Voraus.
LG bubbles

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

Nebenbei ist es eine gängige Lösung, das Spielfeld in jeder Richtung eins größer zu machen als man es braucht, und dort “Wände” hinzusetzen. Damit spart man sich die Bereichsprüfung, und muss dafür nur aufpassen, diesen Rand nicht mit anzuzeigen. Selbst bei Schach wird das so gemacht (teilweise mit 2 Reihen, damit auch der Springer geblockt ist).

Generell ist es eine gute Idee, Spezialfälle (Rand des Arrays) über andere Mechanismen, die man sowieso implementieren muss (Wände), mit abzudecken.