gruppe06-hufflepuff-projekt.../src/Game.java

118 lines
3.0 KiB
Java
Raw Normal View History

/**
* Klasse: Game
*
* Diese Klasse beinhaltet die Logik für das Spiel.
*
* 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;
2021-10-07 17:24:24 +02:00
private boolean gameFinished = false;
2021-10-07 17:24:24 +02:00
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;
}
2021-10-07 17:24:24 +02:00
}
/**
* Diese Methode ändert die Spielsprache
* @param language Spielsprache welche zur Verfügung stehen "de","en","vn"
*/
2021-10-07 17:24:24 +02:00
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
*/
2021-10-07 22:18:34 +02:00
public boolean checkForWin() {
if (checkWinVariants(1,4,9)) {
2021-10-07 22:18:34 +02:00
return true;
}
else if (checkWinVariants(2,5,8)) {
2021-10-07 22:18:34 +02:00
return true;
}
else if (checkWinVariants(3,6,9)) {
2021-10-07 22:18:34 +02:00
return true;
}
else if (checkWinVariants(1,2,3)) {
2021-10-07 22:18:34 +02:00
return true;
}
else if (checkWinVariants(4,5,6)) {
2021-10-07 22:18:34 +02:00
return true;
}
else if (checkWinVariants(7,8,9)) {
2021-10-07 22:18:34 +02:00
return true;
}
else if (checkWinVariants(1,5,9)) {
2021-10-07 22:18:34 +02:00
return true;
}
else if (checkWinVariants(3,5,7)) {
2021-10-07 22:18:34 +02:00
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;
}
}
}