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 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 " "; } } }