Skip to content
Snippets Groups Projects
Commit 74bf7ff8 authored by Dennis Eisold's avatar Dennis Eisold
Browse files

Das Drehen und der Notch funktionieren jetzt closes #12

parent 750a36bf
No related branches found
No related tags found
No related merge requests found
...@@ -470,12 +470,6 @@ public class Codierer { ...@@ -470,12 +470,6 @@ public class Codierer {
* Löscht das letzte Zeichen aus der Nachricht und dreht die Walzen eine Position zurück. * Löscht das letzte Zeichen aus der Nachricht und dreht die Walzen eine Position zurück.
*/ */
public void letztesZeichenLoeschen() { public void letztesZeichenLoeschen() {
if (this.hardware.getWalzen()[2].dreheWalze(-1)) { this.hardware.dreheWalzen(-1);
System.out.println("Drehe W2");
if (this.hardware.getWalzen()[1].dreheWalze(-1)) {
System.out.println("Drehe W1");
this.hardware.getWalzen()[0].dreheWalze(-1);
}
}
} }
} }
...@@ -67,7 +67,7 @@ public class Hardware { ...@@ -67,7 +67,7 @@ public class Hardware {
* @return char : Der ver/entschlüsselte Buchstabe * @return char : Der ver/entschlüsselte Buchstabe
*/ */
public char codiere(char buchstabe) { public char codiere(char buchstabe) {
this.dreheWalzen(); this.dreheWalzen(1);
buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe)); buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe));
buchstabe = this.walzen[2].codiere(buchstabe); buchstabe = this.walzen[2].codiere(buchstabe);
...@@ -86,10 +86,18 @@ public class Hardware { ...@@ -86,10 +86,18 @@ public class Hardware {
* Nach jeder codierung eines Buchstabens müssen die Walzen gedreht werden. * Nach jeder codierung eines Buchstabens müssen die Walzen gedreht werden.
* Hier überprüfen wir welche der Walzen gedreht werden müssen und stoßen die Vorgang an. * Hier überprüfen wir welche der Walzen gedreht werden müssen und stoßen die Vorgang an.
*/ */
private void dreheWalzen() { public void dreheWalzen(int richtung) {
if (this.walzen[2].dreheWalze()) { if (richtung > 0) {
if (this.walzen[1].dreheWalze()) { for (int i = 0; i < richtung; i++) {
this.walzen[0].dreheWalze(); if (this.walzen[2].dreheWalze(1) && this.walzen[1].dreheWalze(1)) {
this.walzen[0].dreheWalze(1);
}
}
} else {
for (int i = 0; i > richtung; richtung++) {
if (this.walzen[2].dreheWalze(-1) && this.walzen[1].dreheWalze(-1)) {
this.walzen[0].dreheWalze(-1);
}
} }
} }
} }
......
...@@ -131,51 +131,30 @@ public class Walze { ...@@ -131,51 +131,30 @@ public class Walze {
* <p> * <p>
* Ueberprueft, ob der Umspringpunkt der Walze nach der Drehung erreicht wurde. * Ueberprueft, ob der Umspringpunkt der Walze nach der Drehung erreicht wurde.
* *
* @param drehung : int[] : Anzahl der Drehungen * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurück
* @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde * @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde
* TODO: Doku * TODO: Doku
*/ */
public boolean dreheWalze(int... drehung) { public boolean dreheWalze(int richtung) {
boolean checkRing = false; boolean checkRing = false;
int richtung = 1;
if (drehung.length > 0 && drehung[0] < 0) { if (richtung == 1) {
richtung = -1; Collections.rotate(Arrays.asList(this.walzeAlpha), richtung);
} } else {
richtung = -1;
Collections.rotate(Arrays.asList(this.walzeAlpha), richtung);
}
// fuehrt die Verschiebung des Alphabets um eine Stelle durch System.out.printf("W: %s R: %s\n", this.getPosition(), this.ringstellung);
verschiebung(richtung);
// fuehrt die Verschiebung mehrfach aus, wenn mehrere Drehungen ausgefuehrt werden sollen // gleicht die Ringstellung mit der aktuellen Position ab
if (drehung.length > 0) { if (this.getPosition() + 1 == this.ringstellung) {
for (int i = 1; i < drehung[0]; i++) {
verschiebung(richtung);
}
}
// gleicht die Ringstellung mit der aktuellen Position ab
if (this.getPosition().equals(this.ringstellung)) {
checkRing = true; checkRing = true;
} }
return checkRing; return checkRing;
} }
/**
* Ueberschreibt die Alphabetswalze mit dem, durch die Drehung, verschobenen Alphabet.
*
* @param richtung : int : Wenn "normal" gedreht werden soll, wird 1 übergeben, reverse entspricht dann -1
* TODO: Dokumentieren
*/
private void verschiebung(int richtung) {
if (richtung > 0) {
Collections.rotate(Arrays.asList(this.walzeAlpha), 1);
} else {
Collections.rotate(Arrays.asList(this.walzeAlpha), -1);
}
}
/** /**
* TODO: Dokumentieren // dass selbe wie getPosition * TODO: Dokumentieren // dass selbe wie getPosition
* Gibt den Buchstaben zurueck der in der Walze aktuell eingestellt ist. * Gibt den Buchstaben zurueck der in der Walze aktuell eingestellt ist.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment