// alle import Angaben
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import ProjektGullupfel2012.GUI;
import java.io.File;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.layout.VBoxBuilder;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.FileChooser;
import javafx.stage.Modality;
import javafx.stage.Stage;
import java.util.Random;
/**
*
* @author Marcello Sanasi
*/
// Controll_All Klasse, die den EventHandler implementiert hat
public class Controll_All implements EventHandler<ActionEvent> {
// Referenz auf die GUI
GUI gui;
// Referenz auf das Spielfeld
Spielfeld feld;
// Button Array mit 11x11 Buttons
Punkt punkt[][] = new Punkt[11][11];
// Attribut Button ja
Button ja;
// Attribut Button nein
Button nein;
// Attribut
Stage exitStage;
// Attribut
Stage amountStage;
// Attribut
Button bestaetigen1;
//
Label labelFile;
//
Button neuSchreiben;
//
TextField txt1;
//
TextField txt2;
//
TextField txt3;
//
TextField txt4;
// privates Attribut mit START-Wert Blau
private int weristdran = Spielfeld.BLAU;
/**
*
* @param gui
*/
public Controll_All(GUI gui) {
// Zugriff auf das Spielfeld
this.gui = gui;
}
/**
*
* @param feld
*/
public Controll_All(Spielfeld feld) {
// Zugriff auf das Spielfeld
this.feld = feld;
}
@Override
/**
*
*/
public void handle(ActionEvent event) {
//Debug-Ausgabe
System.out.println(event.getSource());
//wurde ein Knopf gedrückt?
if (event.getSource() instanceof MenuItem) {
//Debug-Ausgabe
System.out.println("Gedrückt:" + ((MenuItem) event.getSource()).getId());
}
//Reagieren auf Menue
if (event.getSource() instanceof MenuItem) {
//Debug-Ausgabe
System.out.println("Ausgewählt:" + ((MenuItem) event.getSource()).getId());
if (((MenuItem) event.getSource()).getId().equals("Name")) {
spielerErzeugen();
}
if (((MenuItem) event.getSource()).getId().equals("Exit")) {
abbruchErzeugen();
}
if (((MenuItem) event.getSource()).getId().equals("Anleitung")) {
anleitungErzeugen();
}
if (((MenuItem) event.getSource()).getId().equals("faq")) {
faqErzeugen();
}
if (((MenuItem) event.getSource()).getId().equals("Entwickler")) {
entwicklerInfo();
}
if (((MenuItem) event.getSource()).getId().equals("Projekt")) {
projektInfo();
}
if (((MenuItem) event.getSource()).getId().equals("Prozess")) {
prozessInfo();
}
if (((MenuItem) event.getSource()).getId().equals("Anzahl")) {
spielerAnzahl();
}
} //Ende Menues
// Reagieren auf Buttons
if (event.getSource() instanceof Button) {
//Debug-Ausgabe
System.out.println("Ausgewählt:" + ((Button) event.getSource()).getId());
if (((Button) event.getSource()).getId().equals("wuerfel")) {
wuerfeln();
}
if (((Button) event.getSource()).getId().equals("agree")) {
System.out.println(" Was für ein S******tag!");
getName();
}
if (((Button) event.getSource()).getId().equals("ja")) {
System.out.println(" Das ist alles s******e");
System.exit(0);
}
if (((Button) event.getSource()).getId().equals("nein")) {
System.out.println("Ich hasse JAVA");
exitStage.close();
}
if (((Button) event.getSource()).getId().equals("File1")) {
System.out.println("Jetzt kann man Bilder auswählen!");
FileChooser fileChooser = new FileChooser();
//Set extension filter
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("AVI files (*.jpg)", "*.jpg");
fileChooser.getExtensionFilters().add(extFilter);
//Show open file dialog
File file = fileChooser.showOpenDialog(null);
labelFile.setText(file.getPath());
}
if (((Button) event.getSource()).getId().equals("rewrite")) {
System.out.println("Ups, da hat sich ein Fehler eingeschlichen!");
txt1.clear();
txt2.clear();
txt3.clear();
txt4.clear();
}
if (((Button) event.getSource()).getId().equals("Anzahl")) {
System.out.println("Ups, da hat sich ein Fehler eingeschlichen!");
txt1.clear();
txt2.clear();
txt3.clear();
txt4.clear();
}
} //Ende Buttons
// Reagieren auf Punkte
if (event.getSource() instanceof Punkt) {
// wer ist ueberhaupt dran?
if (weristdran == Spielfeld.GELB) {
System.out.println(" GELB ist am Zug!");
if (((Punkt) event.getSource()).getId().equals("gelb1")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("gelb2")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("gelb3")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("gelb4")) {
((Punkt) event.getSource()).setGraphic(null);
}
} else {
System.out.println("Gelb ist nicht dran");
weristdran = (weristdran + 1) % 4;
}
if (weristdran == Spielfeld.BLAU) {
System.out.println(" BLAU ist am Zug!");
if (((Punkt) event.getSource()).getId().equals("blau1")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("blau2")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("blau3")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("blau4")) {
((Punkt) event.getSource()).setGraphic(null);
}
}
else {
System.out.println("Blau ist nicht dran");
weristdran = (weristdran + 1) % 4;
}
if (weristdran == Spielfeld.ROT) {
System.out.println(" ROT ist am Zug!");
if (((Punkt) event.getSource()).getId().equals("rot1")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("rot2")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("rot3")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("rot4")) {
((Punkt) event.getSource()).setGraphic(null);
}
}
else {
System.out.println("Rot ist nicht dran");
weristdran = (weristdran + 1) % 4;
}
if (weristdran == Spielfeld.GRUEN) {
System.out.println(" GRUEN ist am Zug!");
if (((Punkt) event.getSource()).getId().equals("grün1")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("grün2")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("grün3")) {
((Punkt) event.getSource()).setGraphic(null);
}
if (((Punkt) event.getSource()).getId().equals("grün4")) {
((Punkt) event.getSource()).setGraphic(null);
}
}
else {
System.out.println("Grün ist nicht dran");
weristdran = (weristdran + 1) % 4;
}
} // Ende Punkt
}// Ende Handle Methode
/**
*
*/
public void abbruchErzeugen() {
// die Stage wird erstellt
exitStage = new Stage();
// Name für die Stage wird vergeben
exitStage.setTitle("Beenden");
//
exitStage.initModality(Modality.WINDOW_MODAL);
// eine Hbox wird erstellt
HBox abbrechenbox = new HBox();
//
abbrechenbox.setPadding(new Insets(30, 30, 30, 25));
//
abbrechenbox.setSpacing(10);
// die Hbox wird in die Scene gesetzt
Scene anzahlscene = new Scene(abbrechenbox, Color.GOLD);
// Button zum Abbrechen des Spiels wird erstellt
ja = new Button("Ja, leider");
// Id wird an den Button vergeben
ja.setId("ja");
//
ja.setOnAction(this);
// Button zum Fortfahren des Spiels wird erstellt
nein = new Button("Nein, doch nicht");
// Id wird an den Button vergeben
nein.setId("nein");
//
nein.setOnAction(this);
// Text für die Hbox wird erstellt
Text wirklich = new Text("Wollen Sie das Spiel wirklich abbrechen?");
// Textgröße und -stil wird festgesetzt
wirklich.setFont(Font.font("Tahoma", 12));
// der Hbox werden die beiden Buttons und der Text hinzugefügt
abbrechenbox.getChildren().addAll(wirklich, ja, nein);
// die Scene wird in die Stage reingesetzt
exitStage.setScene(anzahlscene);
// die Stage wird angezeigt
exitStage.show();
}
/**
*
*/
public void spielerErzeugen() {
// die Stage wird erzeugt
amountStage = new Stage();
// der Stage wird einen Namen gegeben
amountStage.setTitle("Spielernamen eingeben");
//
amountStage.initModality(Modality.WINDOW_MODAL);
// eine Vbox wird erstellt
VBox namebox = new VBox();
// Abstände innerhalb der Vbox wird erstellt
namebox.setSpacing(5);
//
namebox.setPadding(new Insets(40, 40, 40, 35));
// der Bestätigen Button wird erstellt
bestaetigen1 = new Button("Bestätigen");
bestaetigen1.setId("agree");
neuSchreiben = new Button("Korrigieren");
neuSchreiben.setId("rewrite");
bestaetigen1.setOnAction(this);
neuSchreiben.setOnAction(this);
// vier Textfelder werden erstellt, um die Spielernamen einzugeben
txt1 = new TextField();
txt2 = new TextField();
txt3 = new TextField();
txt4 = new TextField();
// ein Label wird für Spieler 1 erzeugt
Label name1 = new Label("Spieler 1");
// das Label hat die Farbe rot
name1.setTextFill(Color.RED);
//
Image punktrot = new Image(getClass().getResourceAsStream("image/red.png"));
name1.setGraphic(new ImageView(punktrot));
// ein Label wird für Spieler 2 erzeugt
Label name2 = new Label("Spieler 2");
// das Label hat die Farbe blau
name2.setTextFill(Color.BLUE);
//
Image punktblau = new Image(getClass().getResourceAsStream("image/blue.png"));
name2.setGraphic(new ImageView(punktblau));
// ein Label wird für Spieler 3 erzeugt
Label name3 = new Label("Spieler 3");
// das Label hat die Farbe gelb
name3.setTextFill(Color.YELLOW);
//
Image punktgelb = new Image(getClass().getResourceAsStream("image/yellow.png"));
name3.setGraphic(new ImageView(punktgelb));
// das Label für Spieler 4 wird erzeugt
Label name4 = new Label("Spieler 4");
// das Label har die Farbe grün
name4.setTextFill(Color.GREEN);
//
Image punktgrün = new Image(getClass().getResourceAsStream("image/green.png"));
//
name4.setGraphic(new ImageView(punktgrün));
namebox.getChildren().addAll(name1, txt1, name2, txt2, name3, txt3, name4, txt4, bestaetigen1, neuSchreiben);
// Scene wird erstellt (+Breite, Größe, Farbe)
Scene anzahlscene = new Scene(namebox, 290, 380, Color.LIGHTSALMON);
// die Scene wird in die Stage gesetzt
amountStage.setScene(anzahlscene);
// die Stage wird angezeigt
amountStage.show();
}
/**
*
*/
public void anleitungErzeugen() {
Stage dialogStage = new Stage();
dialogStage.setTitle("Dies sind die Regeln");
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.setScene(new Scene(VBoxBuilder.create().
children(new Text("In diesem spannungsvollen Spiel geht es darum, seine eigenen vier Spielfiguren so schnell wie möglich"
+ "\nvon seinem eigenen Startfeld aus über eine Spielfeldstrecke ins Ziel zu würfeln."
+ "\nGleichzeitig versucht man, die Mitspieler zu ärgern und deren Spielsteine, so oft es geht, weg zu kicken,"
+ "\ndamit sie wieder von vorn anfangen müssen."
+ "\nDie weißen Spielfelder des Bretts stellen die Laufbahn dar, die alle Spielfiguren passieren"
+ "\nmüssen."
+ "\nWer mit einer Spielfigur die ganze Laufbahn einmal vollständig durchlaufen hat,"
+ "\nzieht mit ihr auf die Zielfelder seiner Farbe vor."
+ "\nFremde Zielfelder dürfen nicht betreten werden."
+ "\nDer Spieler der als erster alle seine Männchen nach Hause bringt, hat das Spiel"
+ "\ngewonnen."
+ "\nDie anderen spielen weiter um die nächsten Plätze.")).
alignment(Pos.CENTER).padding(new Insets(5)).build()));
dialogStage.show();
}
/**
*
*/
public void faqErzeugen() {
Stage fragen = new Stage();
fragen.setTitle("Die Häufigst gestellten Fragen");
fragen.initModality(Modality.WINDOW_MODAL);
fragen.setScene(new Scene(VBoxBuilder.create().
children(new Text("Hier ist eine Ansammlung, der am häufigst gestellten Fragen:"
+ "\n1. Wie seit ihr dazu gekommen, dieses Spiel zu programmieren?"
+ "\nAntwort: Wir dachten uns, es wäre spannend mal etwas unkonventionelles zu programmieren. Mastermind oder Memory war uns zu öde"
+ "\n2. War es schwer?"
+ "\nAnwort: Klar. Am Anfang war es ein wenig knifflig, die GUI zu bauen, aber danach ging alles eigentlich. "
+ "\nDie Controll Klasse hat uns noch ein wenig Sorgen bereitet. Wir mussten oft die Sprechstunde besuchen, um weiterzukommen. "
+ "\nAber eigentlich ging es. Uns fehlten meist nur wenige Tips bis zur richtigen Lösung.")).
alignment(Pos.CENTER).padding(new Insets(5)).build()));
fragen.show();
}
/**
*
*/
public void entwicklerInfo() {
Stage entwickler = new Stage();
entwickler.setTitle("Informationen");
entwickler.initModality(Modality.WINDOW_MODAL);
entwickler.setScene(new Scene(VBoxBuilder.create().
children(new Text(" Hier stehen einige Informationen zu den Entwicklern des Spiels Mensch Ärgere Dich Nicht ")).
alignment(Pos.CENTER).padding(new Insets(5)).build()));
entwickler.show();
}
/**
*
*/
public void projektInfo() {
Stage projekt = new Stage();
projekt.setTitle("Informationen");
projekt.initModality(Modality.WINDOW_MODAL);
VBox vProjekt =new VBox ();
Scene scene2 = new Scene (vProjekt, 300, 275, Color.CORAL);
projekt.setScene (scene2);
projekt.show (scene2);
}
}
/**
*
*/
public void prozessInfo() {
Stage prozess = new Stage();
prozess.setTitle("Informationen");
prozess.initModality(Modality.WINDOW_MODAL);
VBox vProzess = new VBox();
Scene scene1 = new Scene (vProzess, 300, 275, Color.AQUAMARINE);
prozess.setScene(scene1);
prozess.show();
}
/**
*
*/
private void wuerfeln() {
int zahl = new Random().nextInt(6) + 1;
System.out.println("Gewürfelte Zahl:" + zahl);
gui.setzeWuerfelBild(zahl);
if (zahl < 6) {
// Debug Ausgabe
System.out.println(" Sie müssen noch einmal würfeln!");
} else {
// Debug Ausgabe
System.out.println(" Sie dürfen sich eine Spielfigur auswählen! ");
Stage runde = new Stage();
runde.initModality(Modality.WINDOW_MODAL);
runde.setScene(new Scene(VBoxBuilder.create().
children(new Text(" Du bist dran! ")).
alignment(Pos.CENTER).padding(new Insets(5)).build()));
runde.show();
}
}
public void spielerAnzahl() {
Stage anzahlStage = new Stage();
RadioButton radio1 = new RadioButton(" 1 Spieler");
//Image play1 = new Image(getClass().getResourceAsStream("player1.png"));
//radio1.setGraphic(new ImageView(play1));
RadioButton radio2 = new RadioButton(" 2 Spieler");
//Image play2 = new Image(getClass().getResourceAsStream("player2.png"));
//radio1.setGraphic(new ImageView(play2));
RadioButton radio3 = new RadioButton(" 3 Spieler");
//Image play3 = new Image(getClass().getResourceAsStream("player3.png"));
//radio1.setGraphic(new ImageView(play3));
RadioButton radio4 = new RadioButton(" 4 Spieler");
//Image play4 = new Image(getClass().getResourceAsStream("player4.png"));
//radio1.setGraphic(new ImageView(play4));
radio1.setSelected(true);
Button bestaetigen2 = new Button(" Bestätigen ");
VBox zahlBox = new VBox();
zahlBox.getChildren().addAll(radio1, radio2, radio3, radio4, bestaetigen2);
Scene anzahlScene = new Scene(zahlBox);
anzahlStage.setScene(anzahlScene);
anzahlStage.show();
}
private void getName() {
String a = txt1.getText();
System.out.println("Spielername 1 ist:" + a);
String b = txt2.getText();
System.out.println("Spielername 2 ist:" + b);
String c = txt3.getText();
System.out.println("Spielername 3 ist:" + c);
String d = txt4.getText();
System.out.println("Spielername 4 ist:" + d);
gui.setName(a, b, c, d);
amountStage.close();
} // Ende von Methode getName()
private void zugBeenden() {
}
} // Ende der Klasse