/** * Klasse: Game * * Diese Klasse beinhaltet die Logik für das Spiel. * Der Benutzer kann mit dieser Klasse die Felder des Spielfeldes setzen * * Klasse Language und Gamefield wird im Konstruktor initialisiert */ public class Game { private Gamefield gamefield; private Language language; private int player1 = 1; private int player2 = 2; private int playerPlaying = 1; private boolean gameFinished = false; public Game() { gamefield = new Gamefield(); language = new Language("de"); } /** * Methode: placeField * * Spieler setzt sein Symbol in das gewünschte Feld. * Die Methode überprüft auch, ob der Spieler gewonnen hat. * Wenn der Spieler gewonnen hat, dann wird * * @param field vom Spieler markiertes Feld */ public void placeField(int field) { if (gameFinished) { // Fehler aufrufen, dass das Spiel zuende ist. } if (field > 9 || field < 1) { // Fehler aufrufen von Klasse Sprache return; } gamefield.setField(field, player1); if(checkForWin()){ // Hier überprüfen, ob der Spieler gewonnen hat language.outputWinnerText(playerPlaying); } switchPlayer(); } /** * Methode: switchPlayer * * Diese Methode wechselt den Spieler. Dieser wird von * Methode placeField aufgerufen */ public void switchPlayer() { if (playerPlaying == 1) { playerPlaying = player2; } else { playerPlaying = player1; } } /** * Diese Methode ändert die Spielsprache * @param language Spielsprache welche zur Verfügung stehen "de","en","vn" */ public void changeLanguage(String language) { this.language.setOutputLanguage(language); } /** * Methode : checkForWin * * Diese Methode prüft ob das Spiel einen Gewinner hat * @return bei erkanntem Gewinner true sonst false */ public boolean checkForWin() { if (checkWinVariants(1,4,9)) { return true; } else if (checkWinVariants(2,5,8)) { return true; } else if (checkWinVariants(3,6,9)) { return true; } else if (checkWinVariants(1,2,3)) { return true; } else if (checkWinVariants(4,5,6)) { return true; } else if (checkWinVariants(7,8,9)) { return true; } else if (checkWinVariants(1,5,9)) { return true; } else if (checkWinVariants(3,5,7)) { return true; } return false; } private boolean checkWinVariants(int field1, int field2, int field3) { if((gamefield.getField(field1) == gamefield.getField(field2)) && (gamefield.getField(field3) == gamefield.getField(field1)) && (gamefield.getField(field1) >= 1)) { return true; } else { return false; } } }