java_Code?
Kann einer diese beide Methode erklären? wie läuft switch-case hier?
/**
* Gibt den Besitzer der angegebenen Position auf dem Spielfeld.
*
* @param zeile vertikale Position (0-2)
* @param spalte horizontale Position (0-2)
* @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
*/
@Override
public int gibBesitzer(int zeile, int spalte) {
int besitzer = 0;
char zeichen = feld.charAt(gibPosition(zeile, spalte));
switch (zeichen){
case '0':
besitzer = 0;
break;
case '1':
besitzer = 1;
break;
case '2':
besitzer = 2;
break;
}
return besitzer;
}
/**
* Besetzt die angegebene Position auf dem Spielfeld fuer einen Spieler.
*
* @param zeile vertikale Position (0-2)
* @param spalte horizontale Position (0-2)
* @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
*/
@Override
public void besetzePosition(int zeile, int spalte, int spieler) {
int position = gibPosition(zeile, spalte);
feld = feld.substring(0, position) + spieler + feld.substring (position + 1);
}
1 Antwort
Die oben gezeigten Methoden sind Teile eines Tic-Tac-Toe-Spiels. Die erste Methode, gibBesitzer(), wird verwendet, um den Besitzer der angegebenen Position auf dem Spielfeld zu ermitteln. Dies geschieht durch Überprüfung des Werts, der an der angegebenen Position auf dem Spielfeld gespeichert ist, und Rückgabe des entsprechenden Besitzer-Werts.
Mit der switch-Anweisung wird geprüft welchen Wert die gesuchte Position hat, also 0 -> Feld ist leer, 1 -> besetzt von Spieler 1 oder 2 -> besetzt von Spieler 2
Die zweite Methode, besetzePosition(), wird verwendet, um die angegebene Position auf dem Spielfeld für einen bestimmten Spieler zu besetzen. Dies geschieht, indem der Wert an der angegebenen Position im String "feld" durch den Wert von "spieler" ersetzt wird.
Die Zeile dient dazu, den Wert an der angegebenen Position im String "feld" durch den Wert von "spieler" zu ersetzen, sodass die angegebene Position auf dem Spielfeld für den angegebenen Spieler besetzt wird.
Dafür wird der String feld (der String repäsentiert den aktuellen Status des Spielfelds) aufgeteilt in den Bereich vor der Position die gesetzt werden soll (feld.substring(0, position)), die position, die gesetzt werden soll (wird auf Wert von spieler gesetzt -> also 1 oder 2) und den Teil nach der Position (feld.substring (position + 1)). Das ganze wird dann wieder in die feld variable gespeichert, wodurch der neue Spielstatus gespeichert ist.
Beispiel:
Feld ist
"000000000"
Dann wird Die Methode so aufegerufen (Setzt das Feld (1,1) für den Spieler 2):
besetzePosition(1, 2, 2)
Danach sieht die Variable Feld so aus:
"020000000"
Im Detail passiert das so:
feld = feld.substring(0, position) + spieler + feld.substring (position + 1);
Mit den Werten:
feld = "0" + "2" + "0000000";
int position = gibPosition(zeile, spalte);
speichert in der variable die position an der du etwas ändern möchtest in dem Beispiel von eben wäre das 1 (man fängt an bei 0 zu zählen).
feld.substring(0, position)
nimmt also vom aktuellen String feld nur den Teil von 0 - 1 -> Also nur "0"
feld.substring (position + 1)
nimmt vom String feld alles ab position + 1 -> Also im Beispiel ab 1 + 1 also 2 -> Das wäre dann "0000000"
Was ist 1+1? Position=1? Wo ist Position=1 oder was bedeutet position=1?
was bedeutet diese Zeile?
feld = feld.substring(0, position) + spieler + feld.substring (position + 1);