Closed a-meg-s closed 11 months ago
package ch.hslu.informatik.prg.gruppenarbeit;
import ch.hslu.prg.leds.proxy.LedService; import java.util.Scanner;
public class ClientApp {
public static void SwitchEvenOdd(LedService led) {
try {
// 1. Read the number of LEDs to be added to the breadboard from the keyboard.
Scanner scanner = new Scanner(System.in);
System.out.print("Bitte geben Sie eine neue Zahl ein: ");
int ledCount = scanner.nextInt();
// 2. Check if the number of LEDs is a multiple of 16.
if (ledCount % 16 != 0) {
throw new RuntimeException("Die Anzahl LEDs muss ein Vielfaches von 16 sein: z.B. 64, 80, 96 etc.");
}
// 3. Add the desired number of LEDs to the breadboard and hold the execution of
// `switchEvenOdd`
// for 2 seconds before continuing.
led.addLeds(ledCount);
led.stopExecutionFor(2000);
for (int i = 0; i < 3; i++) {
// 4. Turn on all LEDs whose number is an even number.
for (int ledNumber = 0; ledNumber < ledCount; ledNumber++) {
if (ledNumber % 2 == 0) {
led.turnLedOn(ledNumber);
} else {
led.turnLedOff(ledNumber);
}
}
// Hold for 2 seconds.
led.stopExecutionFor(2000);
// 5. Turn on all LEDs whose number is an odd number.
for (int ledNumber = 0; ledNumber < ledCount; ledNumber++) {
if (ledNumber % 2 != 0) {
led.turnLedOn(ledNumber);
} else {
led.turnLedOff(ledNumber);
}
}
led.stopExecutionFor(1000);
// Switch all LEDs.
for (int ledNumber = 0; ledNumber < ledCount; ledNumber++) {
led.turnLedOn(ledNumber);
}
// Hold for 2 seconds.
led.stopExecutionFor(1000);
// Turn off all LEDs.
for (int ledNumber = 0; ledNumber < ledCount; ledNumber++) {
led.turnLedOff(ledNumber);
}
// Hold for 2 seconds.
led.stopExecutionFor(1000);
} //
} catch (Exception e) {
System.out.println("An error occurred while executing SwitchEvenOdd().");
e.printStackTrace();
// Restart SwitchEvenOdd().
SwitchEvenOdd(led);
}
}
public static void main(String[] args) {
// Instanzerstellung von LedService
LedService led = new LedService();
/*
* Bsp. manuelle erstellung / Aufruf... led.addLeds(5); led.turnLedOn(2);
*
*/
// Methodenaufruf LedsOnOff
LedsOnOff(led);
SwitchEvenOdd(led);
}
}
Ich glaube es wäre gut, wenn wir hier noch eine Fehlermeldung einbauen würden, dass wenn kein Vielfaches von 16 eingegeben wurde, die Abfrage wiederholt wird...
@Zinga14 ah ja ich hatte das in program später geschrieben, hab es aber vergessen einzufügen 👍 machi
Aufgabe 2 Teilaufgabe 2.1 Erstellen Sie die Methode switchEvenOdd in der Klasse ClientApp, die anschliessend in der Methode main aufgerufen wird. In der Methode switchEvenOdd soll Folgendes gemacht werden:
Experimentieren Sie mit der Anzahl von LEDs und Verzögerungszeit, bis das Umschalten fliessend läuft und die beiden Zustände schön sichtbar werden. Versuchen Sie bei der Lösung der Aufgabe unterschiedliche Schleifentypen zu verwenden, um Vor- und Nachteile von unterschiedlichen Schleifentypen in bestimmten Situationen zu sehen. Die Ausführung der switchEvenOdd wird durch den Aufruf dieser Methode in der Methode main gestartet.
Teilaufgabe 2.2 (Fakultativ) Passen Sie die Methode switchEvenOdd so an, dass blaue LEDs verwendet werden. Sehen Sie sich dazu die API-Dokumentation der Enumeration LedColor an. Führen Sie die Methode switchEvenOdd aus und kontrollieren Sie, ob nur die blauen LEDs verwendet werden. Beachten Sie aber dabei, dass die ausgeschalteten LEDs immer grau sind. Somit ist die echte LED Farbe ausschliesslich im eingeschalteten Zustand sichtbar.