import javafx.scene.control.Button; //导入方法依赖的package包/类
/**
* Konstruktormethode zur Einrichtung des Spielfeldes.
*/
public SpielFeld() {
// spiel enthaelt die Spiellogik
spiel = new Spiel(this);
// Arrays fuer Auswahl-Buttons und die Spielsteine
button = new Button[7];
field = new Label[42];
// Bilder fuer Auswahl-Button, Spieler1, Spieler2 und "leere Steine"
user = new Image("user.gif");
red = new Image("red.gif");
green = new Image("green.gif");
gray = new Image("grau.gif");
// Spieler1 ist rot, Spieler2 gruen
ROT = 1;
GRUEN = 2;
// Initialisierung des Labels am oberen Rand
display = new Label("Rot beginnt!");
labelBox = new HBox(display);
labelBox.setAlignment(Pos.CENTER);
labelBox.setStyle("-fx-background-color: red;");
this.setTop(labelBox);
// Initialisierung des Spielfeldes in der Mitte
gridPanel = new GridPane();
gridPanel.setAlignment(Pos.CENTER);
gridPanel.setStyle("-fx-background-color: black;");
gridPanel.setPadding(new Insets(3));
// Hinzufuegen der Auswahlknoepfe mit Event-Handlern
for (int i = 0; i < 7; i++) {
button[i] = new Button("", new ImageView(user));
button[i].setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
button[i].addEventHandler(ActionEvent.ACTION, e -> spiel.waehleSpalte(e));
gridPanel.add(button[i], i, 0);
}
// Hinzufuegen der "Spielsteine"
for (int i = 0; i < 42; i++) {
field[i] = new Label("", new ImageView(gray));
field[i].setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
field[i].setStyle("-fx-border-color: white;");
gridPanel.add(field[i], i % 7, i / 7 + 1);
}
this.setCenter(gridPanel);
// Initialisierung der "Menue-Buttons" am unteren Rand
buttonBox = new HBox(20);
buttonBox.setAlignment(Pos.CENTER);
buttonBox.setPadding(new Insets(5));
neuesSpiel = new Button("Neues Spiel");
neuesSpiel.addEventHandler(ActionEvent.ACTION, e -> spiel.clean());
hilfe = new Button("Hilfe");
hilfe.addEventHandler(ActionEvent.ACTION, e -> new HilfeDialog().showAndWait());
buttonBox.getChildren().addAll(neuesSpiel, hilfe);
this.setBottom(buttonBox);
}