Java-Code erklären?
* Ein Spielfeld besteht aus drei Zeilen mit je drei Spalten. Man kann an den
* neun Positionen einen der beiden Spieler als Besitzer eintragen und auslesen.
*/
public class SpielfeldString implements Spielfeld
{
private String feld;
/**
* Initialisiert ein neues, leeres Spielfeld.
*/
public SpielfeldString() {
feld = "000000000";
//012345678
}
/**
* Die Methode berechnet die bestimmte Position.
*
* @param zeile vertikale Position (0-2)
* @param spalte horizontale Position (0-2)
* @return eine Int-Zahl von 0 bis 8
*/
private int gibPosition(int zeile, int spalte){
if (zeile < 0 || zeile > 2 || spalte < 0 || spalte > 2){
throw new IllegalArgumentException("Spalte oder Zeile ist ausser dem Feld!");
}
return zeile * 3 + spalte;
}
/**
* 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);
}
/**
* Gibt an, ob das Spielfeld an allen Positionen belegt ist.
*/
@Override
public boolean istVoll() {
return feld.indexOf("0") == -1; // da wenn es kein 0 mehr in der Zeichenkette gibt,
// wird -1 zurückgegeben.
}
}
Wenn Sie diesen Code in Textform posten können kann ich Ihnen gerne helfen
habe ich schon
ISt doch alles bereits in den Kommentaren erklärt, was welche stelle macht?
Wie und warum die Methoden so implementiert wurden sind
1 Antwort
Dieser Code implementiert eine Klasse namens
SpielfeldString
, die ein Spielfeld für ein Tic-Tac-Toe-Spiel darstellt. Ein solches Spielfeld besteht aus drei Zeilen und drei Spalten und enthält neun Positionen, die von einem der beiden Spieler besetzt werden können. Die Klasse enthält verschiedene Methoden, um das Spielfeld zu initialisieren, Positionen auf dem Spielfeld zu besetzen und abzufragen, wer an einer bestimmten Position auf dem Spielfeld der Besitzer ist.
Zunächst wird ein String-Attribut namens
feld
deklariert, das das gesamte Spielfeld darstellt. Der String enthält neun Zeichen, von denen jedes eine der Positionen auf dem Spielfeld darstellt. Die neun Zeichen des Strings werden in der folgenden Reihenfolge angeordnet: die drei Zeichen in der ersten Zeile, gefolgt von den drei Zeichen in der zweiten Zeile und schließlich die drei Zeichen in der dritten Zeile.
Die Klasse enthält einen Konstruktor, der ein neues, leeres Spielfeld erstellt, indem der
feld
-String mit neun Nullen initialisiert wird. Jede Null steht dabei für eine unbesetzte Position auf dem Spielfeld.
Die Methode
gibPosition
berechnet die Position eines bestimmten Feldes auf dem Spielfeld anhand seiner Zeile und Spalte. Die Methode überprüft zunächst, ob die angegebene Zeile und Spalte innerhalb des gültigen Bereichs von 0 bis 2 liegen. Wenn dies nicht der Fall ist, wird eine
IllegalArgumentException
ausgelöst. Wenn die Zeile und Spalte gültig sind, wird die entsprechende Position auf dem Spielfeld als Int-Zahl zwischen 0 und 8 zurückgegeben. Die Berechnung der Position basiert auf der Annahme, dass die erste Zeile die Zeilen 0 bis 2, die zweite Zeile die Zeilen 3 bis 5 und die dritte Zeile die Zeilen 6 bis 8 des
feld
-Strings darstellt.
Die Methode
gibBesitzer
gibt den Besitzer der angegebenen Position auf dem Spielfeld zurück. Die Methode verwendet die
gibPosition
-Methode, um die entsprechende Position im
feld
-String zu bestimmen, und gibt dann den Wert dieser Position als Int-Zahl zurück. Eine Null steht dabei für eine unbesetzte Position, eine Eins für den ersten Spieler und eine Zwei für den zweiten Spieler.