diff --git a/src/main/java/Enigma/GuiController.java b/src/main/java/Enigma/GuiController.java index e3136573da00b273dc44500256c79cf82a391123..3bfb5056ad2d8ed737f883004b0f7747c0ed5dea 100644 --- a/src/main/java/Enigma/GuiController.java +++ b/src/main/java/Enigma/GuiController.java @@ -1,180 +1,146 @@ package Enigma; import javafx.fxml.FXML; -import javafx.scene.control.Button; -import javafx.scene.control.MenuButton; -import javafx.scene.control.MenuItem; +import javafx.scene.control.*; + import java.awt.event.ActionEvent; import java.util.ArrayList; public class GuiController { - private ArrayList<MenuItem> mItem; + ArrayList<MenuItem> mItem; private final static String[] str= {"I", "II", "III", "IV", "V"}; private final static String[] num ={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26"}; private final static String[] bs ={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; @FXML - private MenuButton mBtnWalzPos1; + private Button btnL; @FXML - private MenuButton mBtnWalzPos2; + private Button btnP; @FXML - private MenuButton mBtnWalzPos3; + private Button btnY; @FXML - private MenuButton mBtnNotchPos1; + private Button btnX; @FXML - private MenuButton mBtnNotchPos2; + private Button btnC; @FXML - private MenuButton mBtnNotchPos3; - + private Button btnV; @FXML - private MenuButton mBtnStartPos1; + private Button btnB; @FXML - private MenuButton mBtnStartPos2; + private Button btnN; @FXML - private MenuButton mBtnStartPos3; - @FXML - private Button L; + private Button btnM; @FXML - private Button P; + private Button btnA; @FXML - private Button Y; + private Button btnS; @FXML - private Button X; + private Button btnD; @FXML - private Button C; + private Button btnF; @FXML - private Button V; + private Button btnG; @FXML - private Button B; + private Button btnH; @FXML - private Button N; + private Button btnJ; @FXML - private Button M; + private Button btnK; @FXML - private Button A; + private Button btnQ; @FXML - private Button S; + private Button btnW; @FXML - private Button D; + private Button btnE; @FXML - private Button F; + private Button btnR; @FXML - private Button G; + private Button btnT; @FXML - private Button H; + private Button btnZ; @FXML - private Button J; + private Button btnU; @FXML - private Button K; + private Button btnI; @FXML - private Button Q; + private Button btnO; @FXML - private Button W; + private Button btnLöschen; @FXML - private Button E; + private MenuButton mBtnWalzPos1; @FXML - private Button R; + private MenuButton mBtnWalzPos3; @FXML - private Button T; + private MenuButton mBtnWalzPos2; @FXML - private Button Z; + private MenuButton mBtnNotchPos3; @FXML - private Button U; + private MenuButton mBtnNotchPos2; @FXML - private Button I; + private MenuButton mBtnStartPos1; @FXML - private Button O; - + private MenuButton mBtnStartPos3; @FXML - void gedrueckteTaste(ActionEvent event) { - } - public void gedrueckteTaste(){ - } + private MenuButton mBtnStartPos2; -// public void gedrueckteTaste() { -// txt.setText("hello"); + @FXML + private TextField tfrein; - // } -// public void action(ActionEvent ae){ -// if (ae.getSource()==) -// } + @FXML + private TextField tfcodiert; @FXML - void empfangen(ActionEvent event) { + private TextField tfKenngruppe; - } - public void empfangen(){ + @FXML + private MenuButton mBtnNotchPos1; + @FXML + void gedrueckteTaste() { } - -// txtoriginal.setText(bn.getText()); -// } - - // public void gedrueckteTaste(Button bn){ - - - - - // } - - - - -// public void gedrueckteTaste (){ -// -// new EventHandler<KeyEvent>(){ -// -// } -// -// -// -// } - - - - @FXML - void btnsenden(ActionEvent event) { + void btnempfangen() { } - public void btnsenden(){ + @FXML + void btnsenden() { } /** @@ -191,9 +157,8 @@ public class GuiController { * @param button : Button für die die Einträge erstellt werden sollen */ private void menu(MenuButton button, String[] str) { - mItem = new ArrayList<>(); + mItem = new ArrayList<>(); for (int i = 0; i < str.length; i++) { - //Eintrag aus str der Arraylist mi hinzufügen mItem.add(new MenuItem(str[i])); //MenuItem mi dem Button button hinzufügen @@ -207,8 +172,6 @@ public class GuiController { } } @FXML - private Button löschen; - @FXML void initialize() { //Einträge für Walzen menu(mBtnWalzPos1, str); @@ -223,119 +186,65 @@ public class GuiController { menu(mBtnStartPos3, bs); menu(mBtnStartPos2, bs); - assert L != null : "fx:id=\"L\" was not injected: check your FXML file 'gui.fxml'."; - assert P != null : "fx:id=\"P\" was not injected: check your FXML file 'gui.fxml'."; - assert Y != null : "fx:id=\"Y\" was not injected: check your FXML file 'gui.fxml'."; - assert X != null : "fx:id=\"X\" was not injected: check your FXML file 'gui.fxml'."; - assert C != null : "fx:id=\"C\" was not injected: check your FXML file 'gui.fxml'."; - assert V != null : "fx:id=\"V\" was not injected: check your FXML file 'gui.fxml'."; - assert B != null : "fx:id=\"B\" was not injected: check your FXML file 'gui.fxml'."; - assert N != null : "fx:id=\"N\" was not injected: check your FXML file 'gui.fxml'."; - assert M != null : "fx:id=\"M\" was not injected: check your FXML file 'gui.fxml'."; - assert A != null : "fx:id=\"A\" was not injected: check your FXML file 'gui.fxml'."; - assert S != null : "fx:id=\"S\" was not injected: check your FXML file 'gui.fxml'."; - assert D != null : "fx:id=\"D\" was not injected: check your FXML file 'gui.fxml'."; - assert F != null : "fx:id=\"F\" was not injected: check your FXML file 'gui.fxml'."; - assert G != null : "fx:id=\"G\" was not injected: check your FXML file 'gui.fxml'."; - assert H != null : "fx:id=\"H\" was not injected: check your FXML file 'gui.fxml'."; - assert J != null : "fx:id=\"J\" was not injected: check your FXML file 'gui.fxml'."; - assert K != null : "fx:id=\"K\" was not injected: check your FXML file 'gui.fxml'."; - assert Q != null : "fx:id=\"Q\" was not injected: check your FXML file 'gui.fxml'."; - assert W != null : "fx:id=\"W\" was not injected: check your FXML file 'gui.fxml'."; - assert E != null : "fx:id=\"E\" was not injected: check your FXML file 'gui.fxml'."; - assert R != null : "fx:id=\"R\" was not injected: check your FXML file 'gui.fxml'."; - assert T != null : "fx:id=\"T\" was not injected: check your FXML file 'gui.fxml'."; - assert Z != null : "fx:id=\"Z\" was not injected: check your FXML file 'gui.fxml'."; - assert U != null : "fx:id=\"U\" was not injected: check your FXML file 'gui.fxml'."; - assert I != null : "fx:id=\"I\" was not injected: check your FXML file 'gui.fxml'."; - assert O != null : "fx:id=\"O\" was not injected: check your FXML file 'gui.fxml'."; - assert löschen != null : "fx:id=\"löschen\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnWalzPos1 != null : "fx:id=\"w1\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnWalzPos3 != null : "fx:id=\"w3\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnWalzPos2 != null : "fx:id=\"w2\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnNotchPos3 != null : "fx:id=\"r3\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnNotchPos2 != null : "fx:id=\"r2\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnStartPos1 != null : "fx:id=\"a1\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnStartPos2 != null : "fx:id=\"a3\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnStartPos3 != null : "fx:id=\"a2\" was not injected: check your FXML file 'gui.fxml'."; - assert mBtnNotchPos1 != null : "fx:id=\"r1\" was not injected: check your FXML file 'gui.fxml'."; - - } - - /** - * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze - * ->d.h. welche Walze sitzt auf welcher Position - * - * @param walze => gibt die Walzennummer an (entspricht - * @param position => gibt die Position der Walze (entspricht - */ - public void setzeWalze(int walze, int position){ - switch (position){ - case 1: - mBtnWalzPos1.setText(str[position]); - break; - case 2: - mBtnWalzPos2.setText(str[position]); - break; - case 3: - mBtnWalzPos3.setText(str[position]); - break; - default: - break; - } - } - - /** - * Setzt den Notch (position)=> die Mitnahmeposition der Walze (walze) fest - * Mitnahmeposition meint => die nächste Walze wird bei erreichen dieser Position (notch) - * um eine Stelle versetzt - * - * @param walze => gibt die walze an - * @param position => gibt den notch der Walze (walze) an - */ - public void setzeRing(int walze, int position){ - switch (walze){ - case 1: - mBtnNotchPos1.setText(num[position]); - break; - case 2: - mBtnNotchPos2.setText(num[position]); - break; - case 3: - mBtnNotchPos3.setText(num[position]); - break; - default: - break; - } - } - - /** - * Setzt die Startposition/ aktuelle Position der Walze - * @param walze => gibt die walze an - * @param buchstabe gibt den Startwert bzw die aktuelle Position der Walze (walze) an - */ - public void setzePosition(int walze, char buchstabe){ - switch (walze){ - case 1: - mBtnStartPos1.setText(String.valueOf(buchstabe)); - break; - case 2: - mBtnStartPos2.setText(buchstabe+""); - break; - case 3: - mBtnStartPos3.setText(buchstabe+""); - break; - default: - break; - } - } - - /** - * Setzt den aktuellen TagesSchluessel - * @param tagesSchluessel - */ - public void setzeTagesSchluessel(String tagesSchluessel){ + assert btnL != null : "fx:id=\"btnL\" was not injected: check your FXML file 'gui.fxml'."; + assert btnP != null : "fx:id=\"btnP\" was not injected: check your FXML file 'gui.fxml'."; + assert btnY != null : "fx:id=\"btnY\" was not injected: check your FXML file 'gui.fxml'."; + assert btnX != null : "fx:id=\"btnX\" was not injected: check your FXML file 'gui.fxml'."; + assert btnC != null : "fx:id=\"btnC\" was not injected: check your FXML file 'gui.fxml'."; + assert btnV != null : "fx:id=\"btnV\" was not injected: check your FXML file 'gui.fxml'."; + assert btnB != null : "fx:id=\"btnB\" was not injected: check your FXML file 'gui.fxml'."; + assert btnN != null : "fx:id=\"btnN\" was not injected: check your FXML file 'gui.fxml'."; + assert btnM != null : "fx:id=\"btnM\" was not injected: check your FXML file 'gui.fxml'."; + assert btnA != null : "fx:id=\"btnA\" was not injected: check your FXML file 'gui.fxml'."; + assert btnS != null : "fx:id=\"btnS\" was not injected: check your FXML file 'gui.fxml'."; + assert btnD != null : "fx:id=\"btnD\" was not injected: check your FXML file 'gui.fxml'."; + assert btnF != null : "fx:id=\"btnF\" was not injected: check your FXML file 'gui.fxml'."; + assert btnG != null : "fx:id=\"btnG\" was not injected: check your FXML file 'gui.fxml'."; + assert btnH != null : "fx:id=\"btnH\" was not injected: check your FXML file 'gui.fxml'."; + assert btnJ != null : "fx:id=\"btnJ\" was not injected: check your FXML file 'gui.fxml'."; + assert btnK != null : "fx:id=\"btnK\" was not injected: check your FXML file 'gui.fxml'."; + assert btnQ != null : "fx:id=\"btnQ\" was not injected: check your FXML file 'gui.fxml'."; + assert btnW != null : "fx:id=\"btnW\" was not injected: check your FXML file 'gui.fxml'."; + assert btnE != null : "fx:id=\"btnE\" was not injected: check your FXML file 'gui.fxml'."; + assert btnR != null : "fx:id=\"btnR\" was not injected: check your FXML file 'gui.fxml'."; + assert btnT != null : "fx:id=\"btnT\" was not injected: check your FXML file 'gui.fxml'."; + assert btnZ != null : "fx:id=\"btnZ\" was not injected: check your FXML file 'gui.fxml'."; + assert btnU != null : "fx:id=\"btnU\" was not injected: check your FXML file 'gui.fxml'."; + assert btnI != null : "fx:id=\"btnI\" was not injected: check your FXML file 'gui.fxml'."; + assert btnO != null : "fx:id=\"btnO\" was not injected: check your FXML file 'gui.fxml'."; + assert btnLöschen != null : "fx:id=\"btnLöschen\" was not injected: check your FXML file 'gui.fxml'."; + assert mBtnWalzPos1 != null : "fx:id=\"mBtnWalzPos1\" was not injected: check your FXML file 'gui.fxml'."; + assert mBtnWalzPos3 != null : "fx:id=\"mBtnWalzPos3\" was not injected: check your FXML file 'gui.fxml'."; + assert mBtnWalzPos2 != null : "fx:id=\"mBtnWalzPos2\" was not injected: check your FXML file 'gui.fxml'."; + assert mBtnNotchPos3 != null : "fx:id=\"mBtnNotchPos3\" was not injected: check your FXML file 'gui.fxml'."; + assert mBtnNotchPos2 != null : "fx:id=\"mBtnNotchPos2\" was not injected: check your FXML file 'gui.fxml'."; + assert mBtnStartPos1 != null : "fx:id=\"mBtnStartPos1\" was not injected: check your FXML file 'gui.fxml'."; + assert mBtnStartPos3 != null : "fx:id=\"mBtnStartPos3\" was not injected: check your FXML file 'gui.fxml'."; + assert mBtnStartPos2 != null : "fx:id=\"mBtnStartPos2\" was not injected: check your FXML file 'gui.fxml'."; + assert tfrein != null : "fx:id=\"tfrein\" was not injected: check your FXML file 'gui.fxml'."; + assert tfcodiert != null : "fx:id=\"tfcodiert\" was not injected: check your FXML file 'gui.fxml'."; + assert tfKenngruppe != null : "fx:id=\"tfKenngruppe\" was not injected: check your FXML file 'gui.fxml'."; + assert mBtnNotchPos1 != null : "fx:id=\"mBtnNotchPos1\" was not injected: check your FXML file 'gui.fxml'."; } +// /** +// * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze +// * +// * @param walze => gibt die Walzennummer an (entspricht +// * @param position => gibt die Position der Walze (entspricht +// */ +// public void setzeWalze(int walze, int position){ +// switch (position){ +// case 1: +// // mBtnWalzPos1.setText(); +// break; +// case 2: +// break; +// case 3: +// break; +// } +// +// +// } } diff --git a/src/main/java/Enigma/Main.java b/src/main/java/Enigma/Main.java index 2bfc594ce53b57275c180938447de3ea3a866f17..4f2fece9c79475a0e712dcdf5f8c80ff91641626 100644 --- a/src/main/java/Enigma/Main.java +++ b/src/main/java/Enigma/Main.java @@ -1,8 +1,5 @@ package Enigma; -import Enigma.model.Codebuch; -import Enigma.model.DatenbankSqlite; -import Enigma.model.Morsecode; import java.sql.SQLException; diff --git a/src/main/java/Enigma/model/Reflektor.java b/src/main/java/Enigma/model/Reflektor.java index cc7c69dc5d6291056189ae515715aa2ddb1356a1..a3069b863341a420aa9e30cd70620d8d043706c6 100644 --- a/src/main/java/Enigma/model/Reflektor.java +++ b/src/main/java/Enigma/model/Reflektor.java @@ -2,10 +2,10 @@ package Enigma.model; /** * Klasse Reflektor - * + * <p> * Der Reflektor nimmt einen Buchstaben der Klasse Walze entgegen und und kodiert diesen. * Der kodierte Buchstabe wird an die Klasse Walze wieder zurückgegeben. - * + * <p> * Prinzipiell verhält sich die Klasse Refelktor wie die Klasse Walze, außer das sie sich * nach Betätigung einer Taste nicht dreht (starr montiert) und sie gibt keine Signale * an andere Walzen zum drehen. @@ -14,70 +14,38 @@ public class Reflektor { /** * Konstanten und Variablen der Klasse Reflektor - * + * <p> * WALZE_ALPHABET : konstanter Char-Array mit den Werten des Alphabeths (26 Werte) * WALZE_REFLEKTOR : konstanter Char-Array mit den Werten des Reflektors (26 Werte) * reflektorBuchstabeRein : Character mit dem an die Klasse übergebenen Character * reflektorBuchstabeRaus : Character nach der Codierung in der Klasse Reflektor * iPositionReflektor : Integer mit der Positionsnummer des Characters im Array */ - private final Character[] WALZE_ALPHABET = {'A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; - private final Character[] WALZE_REFLEKTOR= {'E', 'J', 'M', 'Z', 'A', 'L', 'Y', 'X', 'V', 'B', 'W', 'F', 'C', 'R', 'Q', 'U', 'O', 'N', 'T', 'S', 'P', 'I', 'K', 'H', 'G', 'D'}; - private Character reflektorBuchstabeRein; - private Character reflektorBuchstabeRaus; - private int iPositionReflektor; + private final Character[] WALZE_ALPHABET = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + private final Character[] WALZE_REFLEKTOR = {'E', 'J', 'M', 'Z', 'A', 'L', 'Y', 'X', 'V', 'B', 'W', 'F', 'C', 'R', 'Q', 'U', 'O', 'N', 'T', 'S', 'P', 'I', 'K', 'H', 'G', 'D'}; /** * Funktion Codiere - * + * <p> * Durchsucht das konstante Char-Array WALZE_ALPHABET nach der Position eines bestimmten * Buchstabens und gibt den Character an der entsprechenden Position im konstanten * Char-Array WALZE_REFLEKTOR zurück. * * @return reflektorBuchstabeRaus: Character: Der kodierte Buchstabe aus dem Reflektor */ - public char codiere (){ - int index = 0; + public char codiere(Character buchstabe) { + int iPositionReflektor = 0; /*Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze*/ - for(index = 0; index < WALZE_ALPHABET.length; index++) { - if(getReflektorBuchstabeRein().equals(WALZE_ALPHABET[index])) { + for (int index = 0; index < WALZE_ALPHABET.length; index++) { + if (buchstabe.equals(WALZE_ALPHABET[index])) { iPositionReflektor = index; break; } } /*Im Char-Array WALZE_REFLEKTOR wird der Character an der Position iPositionReflektor ausgegeben*/ - reflektorBuchstabeRaus = WALZE_REFLEKTOR[iPositionReflektor]; - return reflektorBuchstabeRaus; - } - - /** - * Getter getReflektorBuchstabeRein - * - * Gibt den Wert der Variablen reflektorBuchstabeRein zurück - * - * @return reflektorBuchstabeRein: Character: gibt den Buchstaben zurück - */ - public Character getReflektorBuchstabeRein() { - return reflektorBuchstabeRein; - } - - - /** - * Setter setReflektorBuchstabeRein - * - * Setzt den Wert der Variablen reflektorBuchstabeRein - * - * @param reflektorBuchstabeRein: Character: setzt den Wert des Buchstabens - */ - public void setReflektorBuchstabeRein(Character reflektorBuchstabeRein) { - if (Character.isLetter(reflektorBuchstabeRein)){ - this.reflektorBuchstabeRein = reflektorBuchstabeRein; - } else{ - System.err.println("Kein Buchstabe übergeben im Reflektor"); - } - + return WALZE_REFLEKTOR[iPositionReflektor]; } } diff --git a/src/main/java/Enigma/model/Steckbrett.java b/src/main/java/Enigma/model/Steckbrett.java new file mode 100644 index 0000000000000000000000000000000000000000..d4c503af76d16371f4791c3e6cdf2e6552aaa766 --- /dev/null +++ b/src/main/java/Enigma/model/Steckbrett.java @@ -0,0 +1,77 @@ +package Enigma.model; + +/** + * + */ +public class Steckbrett { + /** + * + */ + private int zaehler; + private Character[] orginalBuchstaben; + private Character[] getauschteBuchstaben; + + /** + * + */ + public Steckbrett() { + + orginalBuchstaben = new Character[10]; + getauschteBuchstaben = new Character[10]; + } + + + /** + * + * @param buchstabe1 + * @param buchstabe2 + * @return + */ + public boolean setzeVertauschung(char buchstabe1, char buchstabe2) { + + if (zaehler < orginalBuchstaben.length) { + orginalBuchstaben[zaehler] = buchstabe1; + getauschteBuchstaben[zaehler++] = buchstabe2; + } else { + System.err.println("Zu viele Vertauschungen angegeben!"); + } + + return ueberpruefeVertauschungen(); + } + + /** + * + * @return + */ + public boolean ueberpruefeVertauschungen() { + + boolean result = true; + for (int n = 0; n < orginalBuchstaben.length; n++) { + if (orginalBuchstaben.equals(orginalBuchstaben[n]) || getauschteBuchstaben.equals(orginalBuchstaben[n]) || getauschteBuchstaben.equals(getauschteBuchstaben[n])) { + System.err.println("Vertauschungen enthalten unzulässige Dopplungen"); + result = false; + } + } + + return result; + } + + /** + * + * @param buchstabe + * @return + */ + public char codiere(Character buchstabe) { + + for (int index = 0; index < getauschteBuchstaben.length; index++) { + if (buchstabe.equals(getauschteBuchstaben[index])) { + buchstabe = orginalBuchstaben[index]; + } else if (buchstabe.equals(orginalBuchstaben[index])) { + buchstabe = getauschteBuchstaben[index]; + } + } + + return buchstabe; + } + +} diff --git a/src/main/java/Enigma/model/Walze.java b/src/main/java/Enigma/model/Walze.java index 9ad536e3a3a67ec8f1f75500d4c66799aa893614..86cf8f4e1e8a76861c3aca23ea5dfef415816121 100644 --- a/src/main/java/Enigma/model/Walze.java +++ b/src/main/java/Enigma/model/Walze.java @@ -1,7 +1,31 @@ package Enigma.model; +/** + * Klasse Walze + * + * Erzeugt ein Objekt des Typs Walze mit den Eigenschaften: + * + * 1. Walzennummer (Die Walze enthält die 26 Buchstaben des Alphabeths und codiert diese. + * 5 verschiedene Walzen stehen zur Auswahl, die jeweils verschieden die Buchstaben des Alphabeths + * paarweise vertauschen) + * + * 2. Ringstellung (Umspringpunkt der Walze wird festgelegt. Der Umspringpunkt bestimmt + * den Drehzeitpunkt der linken Nachbarwalze) + * + */ public class Walze { + /** + * Konstanten und Variablen der Klasse Walze + * + * buchstabe : Bestimmt den Buchstaben + * ringstellung : Bestimmt den Umspringpunkt der Walze + * walzennr : Bestimmt die Walzennr. (also wie der Buchstabe codiert wird) + * iPositionBuchstabe : gibt die Position des Buchstabens auf dem Array der Walze wieder. + * iPositionBuchstabeRe : gibt die Position des codierten Buchstabens im Alphabet wieder. + * private Character[] walze : Character-Array der Walze + */ + private Character buchstabe; private Character ringstellung; private int walzennr; @@ -9,86 +33,21 @@ public class Walze { private int iPositionBuchstabeRe; private Character[] walze; + + /** * Gibt die Parameter der Walze mit * * @param walzennr : int : Nummer der gewaehlten Walze - * @param buchstabe : Character : Grundeinstellung der Walze * @param ringstellung : Character : Einstellung des Notch */ - public Walze(int walzennr, Character buchstabe, Character ringstellung) { + public Walze(int walzennr, Character ringstellung) { this.walze = new Character[25]; this.walzennr = walzennr; - this.buchstabe = buchstabe; + this.buchstabe = 'A'; this.ringstellung = ringstellung; } - /** - * @return buchstabe : Character : gibt den neuen Buchstaben zurueck - */ - public Character getBuchstabe() { - return buchstabe; - } - - /** - * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. - * Buchstaben werden automatisch in Grossbuchstaben umgewandelt. - * Im Fehlerfall wird die Grundeinstellung der Walze standardmaessig auf 'A' gesetzt. - * - * @param buchstabe : Character : Grundeinstellung der Walze - */ - public void setBuchstabe(Character buchstabe) { - - if(Character.isLetter(buchstabe)) { - this.buchstabe = Character.toUpperCase(buchstabe); - } else { - this.buchstabe = 'A'; - } - } - - /** - * @return ringstellung : Character : gibt die neue Ringstellung zurueck - */ - public Character getRingstellung() { - return ringstellung; - } - - - /** - * Gibt die Initiale Ringstellung der Walze an. - * Es sind nur Zahlen von 1 - 26 zugelassen. - * Im Fehlerfall wird die Ringstellung standardmaessig auf '1' gesetzt. - * - * @param ringstellung : Character : Punkt an dem die Walze umspringt - */ - public void setRingstellung(Character ringstellung) { - - if(Character.isDigit(ringstellung) && ringstellung > 0 && ringstellung <= 26) { - this.ringstellung = ringstellung; - } else { - this.ringstellung = '1'; - } - } - - /** - * @return walzennr : int : gibt die Walzennummer zurueck - */ - public int getWalzennr() { - return walzennr; - } - - /** - * Definiert die Walze. Es stehen fuenf Walze zur Auswahl. - * - * @param walzennr : int : setzt die Walzennummer - */ - public void setWalzennr(int walzennr) { - if(walzennr > 0 && walzennr < 6) { - this.walzennr = walzennr; - } else { - System.err.println("Keine gültige Walzennummer"); - } - } /** * Sortiert den Walzennummern das passenden Character-Array mittels switch zu. @@ -104,7 +63,7 @@ public class Walze { Character[] walzeVier = {'E', 'S', 'O', 'V', 'P', 'Z', 'J', 'A', 'Y', 'Q', 'U', 'I', 'R', 'H', 'X', 'L', 'N', 'F', 'T', 'G', 'K', 'D', 'C', 'M', 'W', 'B'}; Character[] walzeFuenf = {'V', 'Z', 'B', 'R', 'G', 'I', 'T', 'Y', 'U', 'P', 'S', 'D', 'N', 'H', 'L', 'X', 'A', 'W', 'M', 'J', 'Q', 'O', 'F', 'E', 'C', 'K'}; - switch (getWalzennr()) { + switch (walzennr) { case 1: walze = walzeEins; break; @@ -125,95 +84,163 @@ public class Walze { return walze; } - /** - * Ermittelt die Position des Buchstaben auf der Alphabetswalze, um die Position mit - * der Chiffrierung auf der gewaehlten Walze abgleichen zu koennen. - * - * @return iPositionBuchstabe : int : Position des Buchstaben im Array - */ - public int positionBuchstabe() { + + + //walzenPosition() return int => Gibt die aktuelle Position des Buchstabens zurück + public int walzenPosition() { /*Alphabetswalze*/ - Character[] walzeAlpha = {'A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + Character[] walzeAlphabeth = {'A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; /*Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze*/ - for(int index = 0; index < walzeAlpha.length; index++) { - if(getBuchstabe().equals(walzeAlpha[index])) { + for(int index = 0; index < walzeAlphabeth.length; index++) { + if(getBuchstabe().equals(walzeAlphabeth[index])) { iPositionBuchstabe = index; break; } } - return iPositionBuchstabe; } + //setzeNotch(int position) => Setze Startpunkt auf int Position des Buchstabens + // Setter für Ringstellung /** - * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabe() - * anhand der gewaehlten Walze. + * Gibt die Initiale Ringstellung der Walze an. + * Es sind nur Zahlen von 1 - 26 zugelassen. + * Im Fehlerfall wird die Ringstellung standardmaessig auf '1' gesetzt. * - * @param iPositionBuchstabe : int : Position des zu chiffrierenden Buchstabens - * @param walze : Character[] : ausgewaehlte Walze - * @return chiffrierterBuchstabe : Character : chiffrierter Buchstabe + * @param ringstellung : Character : Punkt an dem die Walze umspringt */ - public Character codiereBuchstabe(int iPositionBuchstabe, Character[] walze) { - Character codierterBuchstabe = walze[iPositionBuchstabe]; - return codierterBuchstabe; - } + public void setRingstellung(Character ringstellung) { + if(Character.isDigit(ringstellung) && ringstellung > 0 && ringstellung <= 26) { + this.ringstellung = ringstellung; + } else { + this.ringstellung = '1'; + } + } /** - * Nimmt die Startposition, die aus der Walzeneinstellung geholt wird und - * erhoeht sie um eins. - * Die Variable wird ueberschrieben und zaehlt von nun an die Position mit. - * Ab Position 25 wird wieder bei 0 angefangen. - * - * @param iPositionBuchstabe : int : alte Position der Walze - * @return iPositionBuchstabe : int : neue Position der Walze + * @return ringstellung : Character : gibt die neue Ringstellung zurueck */ - public int vorstellenDerWalze(int iPositionBuchstabe) { + public Character getRingstellung() { + return ringstellung; + } - if(iPositionBuchstabe == 25) { - iPositionBuchstabe = 0; - } else { - iPositionBuchstabe += 1; + + + //dreheWalze() return boolean => Wenn Notch erreicht, gib true zurück, ansonsten false + public boolean dreheWalze(){ + + boolean checkRing; + + if(iPositionBuchstabe == 25) { + + iPositionBuchstabe = 0; + + } else { + + iPositionBuchstabe += 1; + } + + if (iPositionBuchstabe == getRingstellung()){ + + checkRing = true; + + }else{ + + checkRing = false; } - return iPositionBuchstabe; + return checkRing; } + + //codiere(char buchstabe) return char => Gibt den verschlüsselten Buchstaben zurück /** - * Ermittelt die Position des Buchstaben auf der gewaehlten Walze, um die Position mit - * der Chiffrierung auf der AlphaWalze abgleichen zu koennen. + * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabe() + * anhand der gewaehlten Walze. * - * @param walzennr : int : gibt die gewaehlte Walze zurueck - * @return iPositionBuchstabeRe : int : Position des Buchstaben im Array + * @param + * @return chiffrierterBuchstabe : Character : chiffrierter Buchstabe */ - public int positionBuchstabeReverse(int walzennr) { - - /*Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze*/ - for(int index = 0; index < walze.length; index++) { - if(getBuchstabe().equals(walze[index])) { - iPositionBuchstabeRe = index; - break; - } - } - return iPositionBuchstabeRe; + public Character codiere(Character buchstabe) { + setBuchstabe(buchstabe); + walzenPosition(); + Character codierterBuchstabe = walzenNummer()[iPositionBuchstabe]; + return codierterBuchstabe; } + + //codiere2(char buchstabe) => Gibt den vertauschten Buchstaben zurück (Reverse) /** * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabeReverse() * anhand der AlphaWalze. * - * @param iPositionBuchstabeRe : int : Position des zu chiffrierenden Buchstabens + * @param * @return codierterBuchstabeRe : Character : chiffrierter Buchstabe */ - public Character codierterBuchstabeReverse(int iPositionBuchstabeRe) { + public Character codiere2(char buchstabe) { + /*Alphawalze*/ Character[] walzeAlpha = {'A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + setBuchstabe(buchstabe); + + /*Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze*/ + for(int index = 0; index < walzenNummer().length; index++) { + if(getBuchstabe().equals(walzenNummer()[index])) { + iPositionBuchstabeRe = index; + break; + } + } + Character codierterBuchstabeRe = walzeAlpha[iPositionBuchstabeRe]; return codierterBuchstabeRe; + + + } + +//_________________________________________________________________________________________ + + + /** + * @return buchstabe : Character : gibt den neuen Buchstaben zurueck + */ + public Character getBuchstabe() { + return buchstabe; + } + + /** + * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. + * Buchstaben werden automatisch in Grossbuchstaben umgewandelt. + * Im Fehlerfall wird die Grundeinstellung der Walze standardmaessig auf 'A' gesetzt. + * + * @param buchstabe : Character : Grundeinstellung der Walze + */ + public void setBuchstabe(Character buchstabe) { + + if(Character.isLetter(buchstabe)) { + this.buchstabe = Character.toUpperCase(buchstabe); + } else { + this.buchstabe = 'A'; + } + } + + + //TODO: ??? Brauchen wir Setter, wo findet Überprüfung der Walzennr. statt. + /** + * Definiert die Walze. Es stehen fuenf Walze zur Auswahl. + * + * @param walzennr : int : setzt die Walzennummer + */ + public void setWalzennr(int walzennr) { + if(walzennr > 0 && walzennr < 6) { + this.walzennr = walzennr; + } else { + System.err.println("Keine gültige Walzennummer"); + } } } diff --git a/src/main/resources/Enigma/gui.fxml b/src/main/resources/Enigma/gui.fxml index e020f974a78ad85dc9868431974f372a26d4f1cf..e196eeb372928689afae3f8a86b530dc278f28ac 100644 --- a/src/main/resources/Enigma/gui.fxml +++ b/src/main/resources/Enigma/gui.fxml @@ -4,7 +4,6 @@ <?import javafx.scene.control.ButtonBar?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.MenuButton?> -<?import javafx.scene.control.MenuItem?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.AnchorPane?> @@ -22,41 +21,41 @@ <TextField layoutX="693.0" layoutY="625.0" prefHeight="25.0" prefWidth="48.0" /> <ButtonBar layoutX="31.0" layoutY="570.0" prefHeight="36.0" prefWidth="860.0"> <buttons> - <Button fx:id="L" mnemonicParsing="false" onAction="#gedrueckteTaste" text="L" /> - <Button fx:id="P" mnemonicParsing="false" onAction="#gedrueckteTaste" text="P" /> - <Button fx:id="Y" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Y" /> - <Button fx:id="X" mnemonicParsing="false" onAction="#gedrueckteTaste" text="X" /> - <Button fx:id="C" mnemonicParsing="false" onAction="#gedrueckteTaste" text="C" /> - <Button fx:id="V" mnemonicParsing="false" onAction="#gedrueckteTaste" text="V" /> - <Button fx:id="B" mnemonicParsing="false" onAction="#gedrueckteTaste" text="B" /> - <Button fx:id="N" mnemonicParsing="false" onAction="#gedrueckteTaste" text="N" /> - <Button fx:id="M" mnemonicParsing="false" onAction="#gedrueckteTaste" text="M" /> + <Button fx:id="btnL" mnemonicParsing="false" onAction="#gedrueckteTaste" text="L" /> + <Button fx:id="btnP" mnemonicParsing="false" onAction="#gedrueckteTaste" text="P" /> + <Button fx:id="btnY" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Y" /> + <Button fx:id="btnX" mnemonicParsing="false" onAction="#gedrueckteTaste" text="X" /> + <Button fx:id="btnC" mnemonicParsing="false" onAction="#gedrueckteTaste" text="C" /> + <Button fx:id="btnV" mnemonicParsing="false" onAction="#gedrueckteTaste" text="V" /> + <Button fx:id="btnB" mnemonicParsing="false" onAction="#gedrueckteTaste" text="B" /> + <Button fx:id="btnN" mnemonicParsing="false" onAction="#gedrueckteTaste" text="N" /> + <Button fx:id="btnM" mnemonicParsing="false" onAction="#gedrueckteTaste" text="M" /> </buttons> </ButtonBar> <ButtonBar layoutX="15.0" layoutY="534.0" prefHeight="36.0" prefWidth="860.0"> <buttons> - <Button fx:id="A" mnemonicParsing="false" onAction="#gedrueckteTaste" text="A" /> - <Button fx:id="S" mnemonicParsing="false" onAction="#gedrueckteTaste" text="S" /> - <Button fx:id="D" mnemonicParsing="false" onAction="#gedrueckteTaste" text="D" /> - <Button fx:id="F" mnemonicParsing="false" onAction="#gedrueckteTaste" text="F" /> - <Button fx:id="G" mnemonicParsing="false" onAction="#gedrueckteTaste" text="G" /> - <Button fx:id="H" mnemonicParsing="false" onAction="#gedrueckteTaste" text="H" /> - <Button fx:id="J" mnemonicParsing="false" onAction="#gedrueckteTaste" text="J" /> - <Button fx:id="K" mnemonicParsing="false" onAction="#gedrueckteTaste" text="K" /> + <Button fx:id="btnA" mnemonicParsing="false" onAction="#gedrueckteTaste" text="A" /> + <Button fx:id="btnS" mnemonicParsing="false" onAction="#gedrueckteTaste" text="S" /> + <Button fx:id="btnD" mnemonicParsing="false" onAction="#gedrueckteTaste" text="D" /> + <Button fx:id="btnF" mnemonicParsing="false" onAction="#gedrueckteTaste" text="F" /> + <Button fx:id="btnG" mnemonicParsing="false" onAction="#gedrueckteTaste" text="G" /> + <Button fx:id="btnH" mnemonicParsing="false" onAction="#gedrueckteTaste" text="H" /> + <Button fx:id="btnJ" mnemonicParsing="false" onAction="#gedrueckteTaste" text="J" /> + <Button fx:id="btnK" mnemonicParsing="false" onAction="#gedrueckteTaste" text="K" /> </buttons> </ButtonBar> <ButtonBar layoutX="22.0" layoutY="491.0" prefHeight="25.0" prefWidth="583.0"> <buttons> - <Button fx:id="Q" minWidth="13.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="25.0" text="Q" /> - <Button fx:id="W" mnemonicParsing="false" onAction="#gedrueckteTaste" text="W" /> - <Button fx:id="E" mnemonicParsing="false" onAction="#gedrueckteTaste" text="E" /> - <Button fx:id="R" mnemonicParsing="false" onAction="#gedrueckteTaste" text="R" /> - <Button fx:id="T" mnemonicParsing="false" onAction="#gedrueckteTaste" text="T" /> - <Button fx:id="Z" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Z" /> - <Button fx:id="U" mnemonicParsing="false" onAction="#gedrueckteTaste" text="U" /> - <Button fx:id="I" mnemonicParsing="false" onAction="#gedrueckteTaste" text="I" /> - <Button fx:id="O" mnemonicParsing="false" onAction="#gedrueckteTaste" text="O" /> - <Button fx:id="löschen" mnemonicParsing="false" text="Löschen" /> + <Button fx:id="btnQ" minWidth="13.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="25.0" text="Q" /> + <Button fx:id="btnW" mnemonicParsing="false" onAction="#gedrueckteTaste" text="W" /> + <Button fx:id="btnE" mnemonicParsing="false" onAction="#gedrueckteTaste" text="E" /> + <Button fx:id="btnR" mnemonicParsing="false" onAction="#gedrueckteTaste" text="R" /> + <Button fx:id="btnT" mnemonicParsing="false" onAction="#gedrueckteTaste" text="T" /> + <Button fx:id="btnZ" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Z" /> + <Button fx:id="btnU" mnemonicParsing="false" onAction="#gedrueckteTaste" text="U" /> + <Button fx:id="btnI" mnemonicParsing="false" onAction="#gedrueckteTaste" text="I" /> + <Button fx:id="btnO" mnemonicParsing="false" onAction="#gedrueckteTaste" text="O" /> + <Button fx:id="btnLöschen" mnemonicParsing="false" text="Löschen" /> </buttons> </ButtonBar> <ButtonBar layoutX="39.0" layoutY="418.0" prefHeight="36.0" prefWidth="860.0"> @@ -97,11 +96,11 @@ <Button mnemonicParsing="false" text="O" /> </buttons> </ButtonBar> - <MenuButton fx:id="w1" layoutX="91.0" layoutY="76.0" mnemonicParsing="false" text="I"> + <MenuButton fx:id="mBtnWalzPos1" layoutX="91.0" layoutY="76.0" mnemonicParsing="false" text="I"> </MenuButton> - <MenuButton fx:id="w3" layoutX="171.0" layoutY="76.0" mnemonicParsing="false" text="I"> + <MenuButton fx:id="mBtnWalzPos3" layoutX="171.0" layoutY="76.0" mnemonicParsing="false" text="I"> </MenuButton> - <MenuButton fx:id="w2" layoutX="133.0" layoutY="76.0" mnemonicParsing="false" text="I"> + <MenuButton fx:id="mBtnWalzPos2" layoutX="133.0" layoutY="76.0" mnemonicParsing="false" text="I"> </MenuButton> <!-- <MenuButton layoutX="93.0" layoutY="114.0" mnemonicParsing="false">--> <!-- <items>--> @@ -133,28 +132,23 @@ <!-- <MenuItem mnemonicParsing="false" onAction="#z26" text="26" />--> <!-- </items>--> <!-- </MenuButton>--> - <MenuButton fx:id="r3" layoutX="173.0" layoutY="114.0" mnemonicParsing="false" text="1"> + <MenuButton fx:id="mBtnNotchPos3" layoutX="173.0" layoutY="114.0" mnemonicParsing="false" text="1"> </MenuButton> - <MenuButton fx:id="r2" layoutX="135.0" layoutY="114.0" mnemonicParsing="false" text="1"> + <MenuButton fx:id="mBtnNotchPos2" layoutX="135.0" layoutY="114.0" mnemonicParsing="false" text="1"> </MenuButton> - <MenuButton fx:id="a1" layoutX="95.0" layoutY="157.0" mnemonicParsing="false" text="A"> + <MenuButton fx:id="mBtnStartPos1" layoutX="95.0" layoutY="157.0" mnemonicParsing="false" text="A"> </MenuButton> - <MenuButton fx:id="a3" layoutX="175.0" layoutY="157.0" mnemonicParsing="false" text="A"> + <MenuButton fx:id="mBtnStartPos3" layoutX="175.0" layoutY="157.0" mnemonicParsing="false" text="A"> </MenuButton> - <MenuButton fx:id="a2" layoutX="137.0" layoutY="157.0" mnemonicParsing="false" text="A"> + <MenuButton fx:id="mBtnStartPos2" layoutX="137.0" layoutY="157.0" mnemonicParsing="false" text="A"> </MenuButton> - <TextField layoutX="246.0" layoutY="76.0" prefHeight="77.0" prefWidth="410.0" /> - <TextField layoutX="248.0" layoutY="182.0" prefHeight="77.0" prefWidth="410.0" /> + <TextField fx:id="tfrein" layoutX="246.0" layoutY="76.0" prefHeight="77.0" prefWidth="410.0" /> + <TextField fx:id="tfcodiert" layoutX="248.0" layoutY="182.0" prefHeight="77.0" prefWidth="410.0" /> <Button layoutX="717.0" layoutY="221.0" mnemonicParsing="false" onAction="#btnsenden" prefHeight="69.0" prefWidth="164.0" text="An Funker senden" /> - <Button layoutX="717.0" layoutY="135.0" mnemonicParsing="false" onAction="#empfangen" prefHeight="69.0" prefWidth="164.0" text="Funkspruch empfangen" /> - <TextField layoutX="725.0" layoutY="76.0" /> + <Button layoutX="717.0" layoutY="135.0" mnemonicParsing="false" onAction="#btnempfangen" prefHeight="69.0" prefWidth="164.0" text="Funkspruch empfangen" /> + <TextField fx:id="tfKenngruppe" layoutX="725.0" layoutY="76.0" /> <Label layoutX="727.0" layoutY="51.0" prefHeight="17.0" prefWidth="149.0" text="Kenngruppe" /> - <MenuButton fx:id="r1" layoutX="93.0" layoutY="114.0" mnemonicParsing="false" text="1"> - <items> - <MenuItem mnemonicParsing="false" text="Action 1" /> - <MenuItem mnemonicParsing="false" text="Action 2" /> - </items> - </MenuButton> + <MenuButton fx:id="mBtnNotchPos1" layoutX="93.0" layoutY="114.0" mnemonicParsing="false" text="1" /> <Label layoutX="29.0" layoutY="80.0" text="Walze" /> <Label layoutX="29.0" layoutY="127.0" text="Ringe" /> <Label layoutX="11.0" layoutY="161.0" text="Startposition" />