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

Merge branch 'master' into 'master'

Das Drehen und der Notch funktionieren jetzt closes #12

Closes #12

See merge request !65
parents 750a36bf 74bf7ff8
No related branches found
No related tags found
No related merge requests found
......@@ -470,12 +470,6 @@ public class Codierer {
* Löscht das letzte Zeichen aus der Nachricht und dreht die Walzen eine Position zurück.
*/
public void letztesZeichenLoeschen() {
if (this.hardware.getWalzen()[2].dreheWalze(-1)) {
System.out.println("Drehe W2");
if (this.hardware.getWalzen()[1].dreheWalze(-1)) {
System.out.println("Drehe W1");
this.hardware.getWalzen()[0].dreheWalze(-1);
}
}
this.hardware.dreheWalzen(-1);
}
}
......@@ -67,7 +67,7 @@ public class Hardware {
* @return char : Der ver/entschlüsselte Buchstabe
*/
public char codiere(char buchstabe) {
this.dreheWalzen();
this.dreheWalzen(1);
buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe));
buchstabe = this.walzen[2].codiere(buchstabe);
......@@ -86,10 +86,18 @@ public class Hardware {
* 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.
*/
private void dreheWalzen() {
if (this.walzen[2].dreheWalze()) {
if (this.walzen[1].dreheWalze()) {
this.walzen[0].dreheWalze();
public void dreheWalzen(int richtung) {
if (richtung > 0) {
for (int i = 0; i < richtung; i++) {
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 {
* <p>
* 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
* TODO: Doku
*/
public boolean dreheWalze(int... drehung) {
public boolean dreheWalze(int richtung) {
boolean checkRing = false;
int richtung = 1;
if (drehung.length > 0 && drehung[0] < 0) {
richtung = -1;
}
if (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
verschiebung(richtung);
System.out.printf("W: %s R: %s\n", this.getPosition(), this.ringstellung);
// fuehrt die Verschiebung mehrfach aus, wenn mehrere Drehungen ausgefuehrt werden sollen
if (drehung.length > 0) {
for (int i = 1; i < drehung[0]; i++) {
verschiebung(richtung);
}
}
// gleicht die Ringstellung mit der aktuellen Position ab
if (this.getPosition().equals(this.ringstellung)) {
// gleicht die Ringstellung mit der aktuellen Position ab
if (this.getPosition() + 1 == this.ringstellung) {
checkRing = true;
}
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
* 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