104 lines
3.0 KiB
Java
104 lines
3.0 KiB
Java
import java.util.ArrayList;
|
|
|
|
/**
|
|
* Klasse um den Zustand der Felder 1-9 zu speichern und zu verändern, sowie das Spielfeld auszugeben.
|
|
*/
|
|
public class Gamefield {
|
|
|
|
/**
|
|
* Int Werte für die Felder 1-9 (0 --> noch nicht gesetzt, 1 --> gesetzt von Spieler 1, 2 --> gesetzt von Spieler 2)
|
|
*/
|
|
private ArrayList<Integer> fields;
|
|
|
|
/**
|
|
* Konstruktor der Klasse
|
|
* Felder 1-9 der Arraylist fields hinzufügen mit dem Wert 0.
|
|
*/
|
|
public Gamefield() {
|
|
fields = new ArrayList<>();
|
|
int count = 1;
|
|
while(count <= 9) {
|
|
fields.add(0);
|
|
count ++;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Methode um ein Fled zu setzen.
|
|
* @param field das Feld welches gesetzt werden soll (1-9)
|
|
* @param player der Spieler der das Feld setzt (1 oder 2)
|
|
* @return true --> das feld wurde gesetzt, false --> das feld wurde nicht gesetzt,das es nicht existiert oder bereits gsetzt war.
|
|
*/
|
|
public boolean setField(int field, int player) {
|
|
int index = 0;
|
|
while(index <= 8) {
|
|
if(field == (index + 1) && fields.get(index) == 0) {
|
|
fields.set(index, player);
|
|
return true;
|
|
}
|
|
index ++;
|
|
}
|
|
return false; //wenn das entsprechende Feld nicht existiert oder bereits gesetzt war.
|
|
}
|
|
|
|
/**
|
|
* Methode um die Anzahl der bereits gesetzten Felder zu ermitteln.
|
|
* @return die Anzahl der gesetzten Felder.
|
|
*/
|
|
public int countSetFields() {
|
|
int count = 0;
|
|
int field = 1;
|
|
|
|
while (field <= 9) {
|
|
if(getField(field) != 0) {
|
|
count ++;
|
|
}
|
|
field ++;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
/**
|
|
* Methode um ein Feld abzufragen.
|
|
* @param field die Nummer des Feldes
|
|
* @return Der Spieler der das Feld gesetzt hat oder 0 wenn es noch nicht gesetz wurde
|
|
*/
|
|
public int getField(int field) {
|
|
int index = 0;
|
|
while (index <= 8) {
|
|
if (index == (field - 1)) {
|
|
return fields.get(index);
|
|
}
|
|
index ++;
|
|
}
|
|
return -1; //if field doesn't exist.
|
|
}
|
|
|
|
/**
|
|
* Methode um das Spielfeld auszugeben.
|
|
*/
|
|
public void outputField() {
|
|
System.out.println(getSymbol(fields.get(0)) + "|" + getSymbol(fields.get(1)) + "|" + getSymbol(fields.get(2)));
|
|
System.out.println("-----");
|
|
System.out.println(getSymbol(fields.get(3)) + "|" + getSymbol(fields.get(4)) + "|" + getSymbol(fields.get(5)));
|
|
System.out.println("-----");
|
|
System.out.println(getSymbol(fields.get(6)) + "|" + getSymbol(fields.get(7)) + "|" + getSymbol(fields.get(8)));
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param player Der Spieler der das Feld gesetzt hat. (1 oder 2)
|
|
* @return the Symbol of the player who has set the field (X or O)
|
|
*/
|
|
private String getSymbol(int player) {
|
|
if(player == 1) {
|
|
return "X";
|
|
}
|
|
else if(player == 2) {
|
|
return "O";
|
|
}
|
|
else {
|
|
return " ";
|
|
}
|
|
}
|
|
} |