Skip to content
Snippets Groups Projects
SceneController.java 2.26 KiB
Newer Older
Nick's avatar
Nick committed
import javafx.fxml.FXML;
import javafx.scene.control.Button;
Nick's avatar
Nick committed
import javafx.event.ActionEvent;
Nick's avatar
Nick committed
import javafx.scene.control.Label;
Nick's avatar
Nick committed
import javafx.scene.layout.GridPane;
import logic.*;
Nick's avatar
Nick committed

Nick's avatar
Nick committed
import java.util.ArrayList;
import java.util.List;

Nick's avatar
Nick committed
public class SceneController {
    private Board board;
Jan's avatar
Jan committed
    private Actor player;
    private Actor enemy;
Nick's avatar
Nick committed
    public boolean playerTurn = true;
Nick's avatar
Nick committed

Jan's avatar
Jan committed
    public void initData(Board board, Actor player, Actor enemy) {
        this.board = board;
        this.player = player;
        this.enemy = enemy;
    }
Nick's avatar
Nick committed

Nick's avatar
Nick committed
    public void playerTurn(){
        this.playerTurn = true;
Nick's avatar
Nick committed
        turnlabel.setText("Your Turn");
Nick's avatar
Nick committed
    }

Nick's avatar
Nick committed
    @FXML
Nick's avatar
Nick committed
    private GridPane gridPane;

Nick's avatar
Nick committed
    @FXML
    private Label turnlabel;

Nick's avatar
Nick committed
    @FXML
    private Button button1, button2, button3, button4, button5, button6, button7, button8, button9;

Nick's avatar
Nick committed
    @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();
    }

Nick's avatar
Nick committed

    // Diese Funktion wird beim Button-Click aufgerufen
    @FXML
Nick's avatar
Nick committed
    private void handleButtonClick(ActionEvent event) {
Nick's avatar
Nick committed
        Button pressedButton = (Button) event.getSource();  // Das gedrückte Button-Objekt wird extrahiert
        String buttonText = pressedButton.getText();  // Der Text des gedrückten Buttons wird extrahiert

        // Zugriff auf die Koordinaten des Buttons:
        int row = GridPane.getRowIndex(pressedButton);  // Zeilen-Koordinate
        int col = GridPane.getColumnIndex(pressedButton);  // Spalten-Koordinate

Nick's avatar
Nick committed
        if(buttonText.equals(" ") && playerTurn) {
Nick's avatar
Nick committed
            // Setze X
            pressedButton.setText("X");
Nick's avatar
Nick committed

            player.makeMove(board, col, row);
Nick's avatar
Nick committed

Nick's avatar
Nick committed
            // AI's Turn
Nick's avatar
Nick committed
            playerTurn = false;
Nick's avatar
Nick committed
            turnlabel.setText("AI's Turn");
Nick's avatar
Nick committed
        }
Nick's avatar
Nick committed
    }
}