diff --git a/src/main/java/Enigma/model/Walze.java b/src/main/java/Enigma/model/Walze.java index 36ac2336bc40ce093bbbc6bb7a9e124c9a4e1539..6be3bde64f424e9489a1ef742b017137d2bed073 100644 --- a/src/main/java/Enigma/model/Walze.java +++ b/src/main/java/Enigma/model/Walze.java @@ -32,6 +32,7 @@ public class Walze { private int ringstellung; private int walzennr; private int iPositionBuchstabe; + private int verschoben; private Character[] walze; @@ -42,10 +43,11 @@ public class Walze { * @param ringstellung : Character : Einstellung des Notch */ public Walze(int walzennr, int ringstellung) { - this.walze = new Character[25]; + this.walze = new Character[26]; this.walzennr = walzennr; this.buchstabe = 'A'; this.iPositionBuchstabe = 0; + this.verschoben = 0; this.ringstellung = ringstellung; } @@ -133,56 +135,55 @@ public class Walze { this.iPositionBuchstabe += 1; } - checkRing = this.iPositionBuchstabe == getRingstellung(); + checkRing = this.iPositionBuchstabe == (getRingstellung() - 1); + + setBuchstabe(walzeAlpha[iPositionBuchstabe]); return checkRing; } + public int verschiebung(int i) { + + if((i + iPositionBuchstabe) >= 26) { + int verschoben = (i + iPositionBuchstabe) - 26 ; + } else { + verschoben = i + iPositionBuchstabe; + } + + return verschoben; + } - //codiere(char buchstabe) return char => Gibt den verschlüsselten Buchstaben zurück /** * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabe() * anhand der gewaehlten Walze. * - * @param * @return chiffrierterBuchstabe : Character : chiffrierter Buchstabe */ public char codiere(char buchstabe) { - /** - * TODO: contains fragt ab ob der char im Alphabet enthalten ist. Das sollten wir vielleicht noch in eine - * Hilfsfunktion packen. Vielleicht sogar in der Hardware Klasse. - */ - boolean contains = false; + for (int i = 0; i < walzeAlpha.length; i++) { if (walzeAlpha[i].equals(buchstabe)) { - buchstabe = walzenNummer()[i]; - contains = true; + buchstabe = walzenNummer()[verschiebung(i)]; break; } } - if(!contains) { - buchstabe = 'X'; - } return buchstabe; } - //codiere2(char buchstabe) => Gibt den vertauschten Buchstaben zurück (Reverse) - /** * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabeReverse() * anhand der AlphaWalze. * - * @param * @return codierterBuchstabeRe : Character : chiffrierter Buchstabe */ public char codiere2(char buchstabe) { for (int i = 0; i < walzenNummer().length; i++) { if (walzenNummer()[i].equals(buchstabe)) { - buchstabe = walzeAlpha[i]; + buchstabe = walzeAlpha[verschiebung(i)]; break; } }