// ==================================================================
// Übung: Variablen, Verzweigungen & Schleifen
// ==================================================================
// Jedes Beispiel ist in kleine Schritte (a, b, c ...) aufgeteilt.
// Arbeite sie der Reihe nach ab und starte dein Programm nach
// JEDEM Schritt, um zu sehen, ob es funktioniert.
 
 
console.log("-- -------------------------------------------------------- --");
console.log("-- 1.Beispiel) Gaming-Profil");
console.log("-- -------------------------------------------------------- --");
// Du programmierst das Profil für ein Online-Spiel.
// Ein Spieler hat folgende Daten:
//     gamerTag     : NoobSlayer42
//     level        : 17
//     coins        : 350
//     isPremium    : false
//     favoriteGame : Minecraft
//
// a) Lege für jede Eigenschaft eine Variable an und gib den Datentyp als Kommentar an.
//    Überlege bei jeder Variable: Ändert sich dieser Wert während
//    des Spielens? Wenn ja -> let, wenn nein -> const.
//
// b) Gib das Profil aus, z.B.:
//    Spieler: NoobSlayer42 | Level 17 | 350 Coins
//
// c) Der Spieler gewinnt ein Match! Er bekommt 150 Coins dazu und
//    steigt ein Level auf. Ändere die Variablen entsprechend und
//    gib das Profil noch einmal aus.
//
// d) Im Shop gibt es einen Skin, der 600 Coins kostet.
//    Lege dafür eine Variable skinPrice an.
//    Prüfe, ob der Spieler genug Coins hat:
//    - Wenn ja: Ziehe den Preis von den Coins ab und gib aus:
//      Kauf erfolgreich! Restliche Coins: ...
//    - Wenn nein: Gib aus, wie viele Coins noch fehlen, z.B.:
//      Zu wenig Coins! Dir fehlen noch 100 Coins.
//    Hinweis: Wie berechnest du, wie viele Coins fehlen?
//
// e) Bonus: Premium-Spieler bekommen 20 % Rabatt.
//    Ändere isPremium auf true und baue den Rabatt ein.
//    Kann der Spieler sich den Skin jetzt leisten?
 
 
 
 
console.log("-- -------------------------------------------------------- --");
console.log("-- 2.Beispiel) Kinoticket");
console.log("-- -------------------------------------------------------- --");
// Das Kino in deiner Stadt hat folgende Preise:
//     Kinder unter 6 Jahren        : gratis
//     Jugendliche unter 18 Jahren  : 7 Euro
//     Studierende (ab 18)          : 8 Euro
//     Alle anderen                 : 11 Euro
// Zusätzlich gilt: Am Dienstag ist Kinotag - jedes Ticket, das
// etwas kostet, ist dann um 2 Euro billiger.
//
// a) Lege die Variablen age, isStudent und weekday an.
//    Beginne mit: 15 Jahre alt, kein Student, "Dienstag".
//
// b) Lege eine Variable price an. Bestimme den Preis mit
//    if / else if / else.
//    Hinweis: Die Reihenfolge der Prüfungen ist wichtig! Was passiert,
//    wenn du zuerst age < 18 und erst danach age < 6 prüfst?
//
// c) Baue den Kinotag ein. Du brauchst dafür eine ZWEITE, eigene
//    if-Abfrage nach der ersten.
//
// d) Gib den Preis aus:
//    Dein Ticket kostet 5 Euro.
//
// e) Teste dein Programm mit allen Zeilen dieser Tabelle, indem du
//    die Variablen änderst. Stimmt dein Ergebnis?
//
//     age | isStudent | weekday   | erwarteter Preis
//    -----+-----------+-----------+-----------------
//      15 | false     | Dienstag  |  5 Euro
//       4 | false     | Montag    |  0 Euro
//       4 | false     | Dienstag  |  0 Euro
//      20 | true      | Freitag   |  8 Euro
//      35 | false     | Dienstag  |  9 Euro
//      35 | false     | Samstag   | 11 Euro
 
 
 
 
console.log("-- -------------------------------------------------------- --");
console.log("-- 3.Beispiel) Schere, Stein, Papier");
console.log("-- -------------------------------------------------------- --");
// Du spielst gegen einen Klassenkollegen. Bevor du programmierst,
// denkst du das Problem auf Papier durch.
//
// a) Fülle diese Tabelle aus (hier im Kommentar oder auf Papier).
//    Wer gewinnt bei welcher Kombination?
//    (Spieler 1, Spieler 2 oder Unentschieden)
//
//     player1 \ player2 | schere | stein  | papier
//    -------------------+--------+--------+--------
//     schere            |        |        |
//     stein             |        |        |
//     papier            |        |        |
//
// b) Lege die Variablen player1 und player2 an.
//    Als Werte verwendest du TEXTE: "schere", "stein" oder "papier".
//    Beispiel:
//        let player1 = "stein";
//        let player2 = "schere";
//
// c) Schreibe zuerst nur den einfachsten Fall:
//    Wenn beide dasselbe haben, gib aus: Unentschieden!
//
// d) Schau in deine Tabelle: Bei welchen DREI Kombinationen gewinnt
//    Spieler 1? Schreibe sie als mehrere if - else if Bedingungen
//
// e) Wenn es kein Unentschieden ist und Spieler 1 nicht gewonnen
//    hat - wer hat dann gewonnen? Ergänze das else.
//
// f) Teste mindestens 4 verschiedene Kombinationen.
 
 
 
 
console.log("-- -------------------------------------------------------- --");
console.log("-- 4.Beispiel) Achtung, Creeper!");
console.log("-- -------------------------------------------------------- --");
// Du programmierst eine Minecraft-Mod. Von oben betrachtet ist die
// Welt ein Gitter mit den Koordinaten x und z.
//     Deine Spielfigur steht auf (3 | 4)
//     Ein Creeper steht auf      (7 | 9)
// Ein Creeper explodiert, wenn er NÄHER ALS 5 Blöcke an dir dran ist.
//
// a) Wie viele Variablen brauchst du, um die Position EINER Figur
//    zu speichern? Lege die Variablen für beide Figuren an
//    (z.B. playerX, playerZ, ...).
//
// b) Zeichne beide Figuren auf ein Karopapier.
//    Wie viele Blöcke sind sie in x-Richtung voneinander entfernt?
//    Wie viele in z-Richtung? Berechne beides im Programm und gib
//    es aus.
//
// c) Die direkte Verbindung ist die schräge Linie. Siehst du das
//    rechtwinkelige Dreieck in deiner Skizze? Berechne den Abstand
//    mit dem Satz von Pythagoras und gib ihn aus.
//    Hinweis: Math.sqrt() berechnet die Wurzel.
//
// d) Prüfe den Abstand:
//    - kleiner als 5 -> BOOOM! Der Creeper ist explodiert!
//    - sonst         -> Puh, du bist in Sicherheit.
//
// e) Lass deine Figur auf (5 | 6) gehen. Was passiert jetzt?
//
// Hinweis: Was passiert, wenn der Creeper links von dir steht und
// dein x-Abstand negativ wird? Ist das ein Problem?
 
 
 
 
console.log("-- -------------------------------------------------------- --");
console.log("-- 5.Beispiel) Klick auf den Button");
console.log("-- -------------------------------------------------------- --");
// Auf einer Website gibt es einen Start-Button. Auf dem Bildschirm
// wird in Pixeln gemessen und (0 | 0) ist die LINKE OBERE Ecke.
// Die y-Werte werden also nach UNTEN größer!
//
// Der Button:
//     linke obere Ecke bei (100 | 50)
//     200 Pixel breit
//     80 Pixel hoch
// Der Benutzer klickt mit der Maus auf (180 | 90).
//
// a) Zeichne den Button und den Klick auf. Beschrifte alle vier
//    Ecken des Buttons mit ihren Koordinaten.
//
// b) Lege Variablen für den Button (buttonX, buttonY, buttonWidth,
//    buttonHeight) und für den Klick (clickX, clickY) an.
//
// c) Überlege: Ein Klick ist IM Button, wenn er nicht zu weit links,
//    nicht zu weit rechts, nicht zu weit oben und nicht zu weit
//    unten ist. Das sind 4 Bedingungen.
//    Wo ist der rechte Rand des Buttons? Wo der untere?
//
// d) Prüfe mit mehreren if-Abfragen ob der Klick den Button
//    getroffen hat:
//    - Spiel startet!
//    - Daneben geklickt.
//
// e) Teste diese Klicks:
//     Klick        | Erwartet
//    --------------+----------------------------
//     (180 | 90)   | getroffen
//     (320 | 90)   | daneben
//     (150 | 20)   | daneben
//     (300 | 130)  | getroffen (genau die Ecke!)
 
 
 
 
console.log("-- -------------------------------------------------------- --");
console.log("-- 6.Beispiel) Countdown & Level-XP");
console.log("-- -------------------------------------------------------- --");
// a) Aufwärmen: Schreibe eine Schleife, die einen Raketen-Countdown
//    von 10 bis 1 ausgibt. Danach (nach der Schleife!) soll
//    Start! 🚀
//    erscheinen.
//    Hinweis: Verwende die while-Schleife und eine counter Variable
//
// b) In einem Spiel steigt die benötigte Erfahrung (XP) pro Level
//    so an: Die ersten beiden Level brauchen 0 und 1 XP. Jedes
//    weitere Level braucht so viele XP wie die zwei Level davor
//    zusammen.
//        Level 0: 0 XP
//        Level 1: 1 XP
//        Level 2: 1 XP      (0 + 1)
//        Level 3: 2 XP      (1 + 1)
//        Level 4: 3 XP      (1 + 2)
//        ...
//    Rechne zuerst HÄNDISCH auf Papier bis Level 9 weiter.
//
// c) Du brauchst immer die LETZTEN ZWEI Werte, um den nächsten zu
//    berechnen. Lege dafür zwei Variablen an. Spiele auf Papier
//    durch: Welche Werte haben die beiden Variablen nach jedem
//    Schritt?
//
// d) Schreibe eine Schleife, die die XP für Level 0 bis Level 9
//    ausgibt.
//    Hinweis: Wenn du den neuen Wert berechnet hast: Welche Variable
//    bekommt welchen Wert, damit der nächste Durchlauf wieder stimmt?
//    Du brauchst vielleicht eine dritte Variable als Zwischenspeicher.
//
// e) Bonus: Wie viele XP braucht man INSGESAMT von Level 0 bis
//    Level 9? Berechne die Summe in der Schleife mit.
//
// Übrigens: Diese Zahlenfolge hat einen Namen - sie heißt
// Fibonacci-Folge und kommt sogar in der Natur vor
// (z.B. bei Sonnenblumen und Tannenzapfen).```