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 @@
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<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="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="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="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="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="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="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="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="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="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" 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" 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" 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" 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" 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" 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" 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" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#handleButtonClick" prefHeight="133.0" prefWidth="142.0" text=" " GridPane.columnIndex="2" GridPane.rowIndex="2" />
</children>
</GridPane>
<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 name="Ink Free" size="25.0" />
</font>
......
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.event.ActionEvent;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import logic.*;
import java.util.ArrayList;
import java.util.List;
public class SceneController {
private Board board;
private Actor player;
private Actor enemy;
public boolean playerTurn = true;
public void initData(Board board, Actor player, Actor enemy) {
this.board = board;
this.player = player;
this.enemy = enemy;
}
public void playerTurn(){
this.playerTurn = true;
turnlabel.setText("Your Turn");
}
@FXML
private GridPane gridPane;
@FXML
private Label turnlabel;
@FXML
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
@FXML
......@@ -33,11 +71,15 @@ public class SceneController {
int row = GridPane.getRowIndex(pressedButton); // Zeilen-Koordinate
int col = GridPane.getColumnIndex(pressedButton); // Spalten-Koordinate
if(buttonText.equals(" ")) {
if(buttonText.equals(" ") && playerTurn) {
// Setze X
pressedButton.setText("X");
player.makeMove(board, col, row);
// AI's Turn
playerTurn = false;
turnlabel.setText("AI's Turn");
}
}
......
......@@ -10,6 +10,7 @@ public class TicTacToe extends Application {
private static Board board;
private static final Actor player = new Player();
private static final Actor enemy = new Enemy();
private static SceneController sceneController;
public void startGame(){
board = new Board();
......@@ -24,8 +25,8 @@ public class TicTacToe extends Application {
Parent root = loader.load();
// Controller-Instanz holen und initialisieren
SceneController controller = loader.getController();
controller.initData(board, player, enemy); // Übergabe der Logik-Klassen
sceneController = loader.getController();
sceneController.initData(board, player, enemy); // Übergabe der Logik-Klassen
Scene scene = new Scene(root, 800, 600);
primaryStage.setTitle("Tic Tac Toe");
......@@ -35,13 +36,23 @@ public class TicTacToe extends Application {
public static void main (String[] args) {
launch(args);
TicTacToe game = new TicTacToe();
game.startGame();
launch(args);
while (!board.checkForWin()){
if (sceneController.playerTurn) {
// TODO Spieler ist am Zug
continue;
} else {
// TODO Gegner ist am Zug
}
// TODO Spielablauf
}
......@@ -51,5 +62,6 @@ public class TicTacToe extends Application {
// TODO Gewinner verkünden
// TODO Option zum Neustart
}
}
package logic;
import java.util.Random;
public interface Actor {
char symbol = '?';
public char getSymbol();
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;
import java.util.Random;
public class Enemy implements Actor {
public char symbol;
public Enemy() {
......@@ -16,5 +18,16 @@ public class Enemy implements Actor {
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 {
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