Skip to content
Snippets Groups Projects
Commit f919a279 authored by Timon Harries's avatar Timon Harries
Browse files

Merge branch 'dev' of gitlab.uni-hannover.de:nick130625/ta2_swt into dev

parents e80bf0d4 2efaf205
No related branches found
No related tags found
1 merge request!1Verision 1.0 finished
...@@ -27,19 +27,19 @@ ...@@ -27,19 +27,19 @@
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints> </rowConstraints>
<children> <children>
<Button fx:id="button1" text=" " mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" GridPane.halignment="CENTER" GridPane.valignment="CENTER" GridPane.columnIndex="0" GridPane.rowIndex="0"/> <Button fx:id="button1" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="0" GridPane.halignment="CENTER" GridPane.rowIndex="0" GridPane.valignment="CENTER" />
<Button fx:id="button2" text=" " layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" GridPane.columnIndex="0" GridPane.rowIndex="1"/> <Button fx:id="button2" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="0" GridPane.rowIndex="1" />
<Button fx:id="button3" text=" " layoutX="115.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" GridPane.columnIndex="0" GridPane.rowIndex="2"/> <Button fx:id="button3" layoutX="115.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="0" GridPane.rowIndex="2" />
<Button fx:id="button4" text=" " layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" GridPane.columnIndex="1" GridPane.rowIndex="0" /> <Button fx:id="button4" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="1" GridPane.rowIndex="0" />
<Button fx:id="button5" text=" " layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" GridPane.columnIndex="1" GridPane.rowIndex="1" /> <Button fx:id="button5" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Button fx:id="button6" text=" " layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" GridPane.columnIndex="1" GridPane.rowIndex="2" /> <Button fx:id="button6" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Button fx:id="button7" text=" " layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" GridPane.columnIndex="2" GridPane.rowIndex="0" /> <Button fx:id="button7" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="2" GridPane.rowIndex="0" />
<Button fx:id="button8" text=" " layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" GridPane.columnIndex="2" GridPane.rowIndex="1" /> <Button fx:id="button8" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="2" GridPane.rowIndex="1" />
<Button fx:id="button9" text=" " layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" GridPane.columnIndex="2" GridPane.rowIndex="2" /> <Button fx:id="button9" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="2" GridPane.rowIndex="2" />
</children> </children>
</GridPane> </GridPane>
<Button layoutX="446.0" layoutY="170.0" mnemonicParsing="false" prefHeight="30.0" prefWidth="82.0" text="Restart" /> <Button layoutX="446.0" layoutY="170.0" mnemonicParsing="false" prefHeight="30.0" prefWidth="82.0" text="Restart" />
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="409.0" layoutY="263.0" prefHeight="30.0" prefWidth="156.0" text="Your Turn" textAlignment="CENTER"> <Label fx:id="turnlabel" alignment="CENTER" contentDisplay="CENTER" layoutX="409.0" layoutY="263.0" prefHeight="30.0" prefWidth="156.0" text="Your Turn" textAlignment="CENTER">
<font> <font>
<Font name="Ink Free" size="25.0" /> <Font name="Ink Free" size="25.0" />
</font> </font>
......
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import logic.*; import logic.*;
import java.util.ArrayList;
import java.util.List;
public class SceneController { public class SceneController {
private Board board; private Board board;
private Actor player; private Actor player;
private Actor enemy; private Actor enemy;
public boolean playerTurn = true;
public void initData(Board board, Actor player, Actor enemy) { public void initData(Board board, Actor player, Actor enemy) {
this.board = board; this.board = board;
this.player = player; this.player = player;
this.enemy = enemy; this.enemy = enemy;
} }
public void playerTurn(){
this.playerTurn = true;
turnlabel.setText("Your Turn");
}
@FXML @FXML
private GridPane gridPane; private GridPane gridPane;
@FXML
private Label turnlabel;
@FXML @FXML
private Button button1, button2, button3, button4, button5, button6, button7, button8, button9; private Button button1, button2, button3, button4, button5, button6, button7, button8, button9;
@FXML
private List<Button> buttonList;
@FXML
public void initialize() {
// Liste der Buttons erstellen und Buttons hinzufügen
buttonList = new ArrayList<>();
buttonList.add(button1);
buttonList.add(button2);
buttonList.add(button3);
buttonList.add(button4);
buttonList.add(button5);
buttonList.add(button6);
buttonList.add(button7);
buttonList.add(button8);
buttonList.add(button9);
}
public void aiTurn(int col, int row){
initialize();
buttonList.get(col + row).setText("o");
playerTurn();
}
// Diese Funktion wird beim Button-Click aufgerufen // Diese Funktion wird beim Button-Click aufgerufen
@FXML @FXML
...@@ -33,11 +71,15 @@ public class SceneController { ...@@ -33,11 +71,15 @@ public class SceneController {
int row = GridPane.getRowIndex(pressedButton); // Zeilen-Koordinate int row = GridPane.getRowIndex(pressedButton); // Zeilen-Koordinate
int col = GridPane.getColumnIndex(pressedButton); // Spalten-Koordinate int col = GridPane.getColumnIndex(pressedButton); // Spalten-Koordinate
if(buttonText.equals(" ")) { if(buttonText.equals(" ") && playerTurn) {
// Setze X // Setze X
pressedButton.setText("X"); pressedButton.setText("X");
player.makeMove(board, col, row); player.makeMove(board, col, row);
// AI's Turn
playerTurn = false;
turnlabel.setText("AI's Turn");
} }
} }
......
...@@ -10,6 +10,7 @@ public class TicTacToe extends Application { ...@@ -10,6 +10,7 @@ public class TicTacToe extends Application {
private static Board board; private static Board board;
private static final Actor player = new Player(); private static final Actor player = new Player();
private static final Actor enemy = new Enemy(); private static final Actor enemy = new Enemy();
private static SceneController sceneController;
public void startGame(){ public void startGame(){
board = new Board(); board = new Board();
...@@ -24,8 +25,8 @@ public class TicTacToe extends Application { ...@@ -24,8 +25,8 @@ public class TicTacToe extends Application {
Parent root = loader.load(); Parent root = loader.load();
// Controller-Instanz holen und initialisieren // Controller-Instanz holen und initialisieren
SceneController controller = loader.getController(); sceneController = loader.getController();
controller.initData(board, player, enemy); // Übergabe der Logik-Klassen sceneController.initData(board, player, enemy); // Übergabe der Logik-Klassen
Scene scene = new Scene(root, 800, 600); Scene scene = new Scene(root, 800, 600);
primaryStage.setTitle("Tic Tac Toe"); primaryStage.setTitle("Tic Tac Toe");
...@@ -35,13 +36,23 @@ public class TicTacToe extends Application { ...@@ -35,13 +36,23 @@ public class TicTacToe extends Application {
public static void main (String[] args) { public static void main (String[] args) {
launch(args);
TicTacToe game = new TicTacToe(); TicTacToe game = new TicTacToe();
game.startGame(); game.startGame();
launch(args);
while (!board.checkForWin()){ while (!board.checkForWin()){
if (sceneController.playerTurn) {
// TODO Spieler ist am Zug
continue;
} else {
// TODO Gegner ist am Zug
}
// TODO Spielablauf // TODO Spielablauf
} }
...@@ -51,5 +62,6 @@ public class TicTacToe extends Application { ...@@ -51,5 +62,6 @@ public class TicTacToe extends Application {
// TODO Gewinner verkünden // TODO Gewinner verkünden
// TODO Option zum Neustart // TODO Option zum Neustart
} }
} }
package logic; package logic;
import java.util.Random;
public interface Actor { public interface Actor {
char symbol = '?'; char symbol = '?';
public char getSymbol(); public char getSymbol();
public void setSymbol(char symbol); public void setSymbol(char symbol);
// Methode, um den nächsten Zug des Akteurs zu machen
default boolean makeMove(Board board, int x, int y) {
return board.placeToken(x, y, symbol);
}
} }
package logic; package logic;
import java.util.Random;
public class Enemy implements Actor { public class Enemy implements Actor {
public char symbol; public char symbol;
public Enemy() { public Enemy() {
...@@ -16,5 +18,16 @@ public class Enemy implements Actor { ...@@ -16,5 +18,16 @@ public class Enemy implements Actor {
this.symbol = symbol; this.symbol = symbol;
} }
// Methode, um den nächsten Zug des Akteurs zu machen
public boolean makeMove(Board board) {
Random random = new Random();
int x;
int y;
do {
x = random.nextInt(3);
y = random.nextInt(3);
} while (!board.placeToken(x, y, symbol));
return true;
}
} }
...@@ -16,6 +16,10 @@ public class Player implements Actor { ...@@ -16,6 +16,10 @@ public class Player implements Actor {
this.symbol = symbol; this.symbol = symbol;
} }
// Methode, um den nächsten Zug des Akteurs zu machen
public boolean makeMove(Board board, int x, int y) {
return board.placeToken(x, y, symbol);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment