Exercise 02b - Javascript - Variablen und Kontrollstrukturen
8 min read
// ==================================================================// Ü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 Euroconsole.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).```