Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| gf2:javascript [2025/06/09 16:19] – marroc | gf2:javascript [2025/06/09 17:33] (aktuell) – marroc | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| Anhand vom Snake game sollen Sie verstehen, wofür JavaScript beispielsweise verwendet werden kann und dies auch etwas " | Anhand vom Snake game sollen Sie verstehen, wofür JavaScript beispielsweise verwendet werden kann und dies auch etwas " | ||
| - | **Was ist JavaScript?**\\ | + | ===Was ist JavaScript?=== |
| JavaScript ist eine Programmiersprache, | JavaScript ist eine Programmiersprache, | ||
| Die json Programme werden direkt im Browser ausgeführt und ermöglichen, | Die json Programme werden direkt im Browser ausgeführt und ermöglichen, | ||
| Heute wird JavaScript aber weit über den Browser hinaus eingesetzt und eine wichtige Programmiersprache für Webentwicklung, | Heute wird JavaScript aber weit über den Browser hinaus eingesetzt und eine wichtige Programmiersprache für Webentwicklung, | ||
| + | ===Snake Spiel=== | ||
| + | Das Ziel des Spiels ist es, die Schlange (das kleine Quadrat) zu steuern und das Futter zu fressen. Dadurch wird die Schlange länger und Punkte werden gesammelt. Aber Achtung: Das Spiel endet, wenn die Schlange gegen die Wand stößt oder sich selbst berührt! | ||
| ==== Schritt 1 ==== | ==== Schritt 1 ==== | ||
| - Es ist nötig, dass Sie Visual Studio Code installiert haben. Falls dies noch nicht der Fall ist, sollten Sie mindestens zu zweit an einem Computer mit Visualstudiocode arbeiten können. Download [[https:// | - Es ist nötig, dass Sie Visual Studio Code installiert haben. Falls dies noch nicht der Fall ist, sollten Sie mindestens zu zweit an einem Computer mit Visualstudiocode arbeiten können. Download [[https:// | ||
| - | - Laden Sie sich die Dateien des folgenden Ordners herunter: [[https:// | + | - Laden Sie sich die Dateien |
| + | des folgenden Ordners herunter: [[https:// | ||
| ==== Schritt 2 ==== | ==== Schritt 2 ==== | ||
| Zeile 240: | Zeile 242: | ||
| Um etwas besser am Programm arbeiten zu können, hilft es eventuell, die folgenden Zeilen durch einen doppelten Backslash aus zu kommentieren: | Um etwas besser am Programm arbeiten zu können, hilft es eventuell, die folgenden Zeilen durch einen doppelten Backslash aus zu kommentieren: | ||
| + | |||
| <code javascript> | <code javascript> | ||
| // clearInterval(timer); | // clearInterval(timer); | ||
| //timer = setInterval(updateGameArea, | //timer = setInterval(updateGameArea, | ||
| </ | </ | ||
| + | |||
| <WRAP nicebox green> | <WRAP nicebox green> | ||
| - | **Auftrag 2: ** | + | **Auftrag 2**\\ |
| + | |||
| + | * Verändern Sie die Farbe des Food-Quadrats.\\ | ||
| + | * Verändern Sie das Board, so das es Häuschen / ein Gitter hat.\\ | ||
| + | * Fügen Sie Buttons unten am Spielfeld an, um die Richtung dort zu ändern und nicht mehr mit den Pfeiltasten. \\ | ||
| + | * Zusätzlich kann auch die Geschwindigkeit nach jedem Essen der Schlange erhöht werden.\\ | ||
| \\ | \\ | ||
| + | Sie dürfen sich auch Hilfe bei einer KI // einem LLM holen, falls Sie möchten. | ||
| - | - Verändern Sie die Farbe des Food-Quadrats.\\ | ||
| - | - Verändern Sie das Board, so das es Häuschen / ein Gitter hat.\\ | + | < |
| + | <panel title=" | ||
| + | Um die Farbe des Essens zu verändern, könnte die Funktion createSquare verdoppelt werden und dann bei der kopierten Version der Funktion kann die Farbe anders eingestellt werden, beispielsweise | ||
| + | <code javascript> | ||
| + | gameAreaContext.fillStyle = '# | ||
| + | </ | ||
| - | - Fügen Sie Buttons | + | und weiter |
| - | - Was passisert, wenn gameStart.disabled notiert wird?\\ | + | <code javascript> |
| - | + | // create the food | |
| - | - Zusätzlich kann auch die Geschwindigkeit nach jedem Essen der Schlange erhöht werden.\\ | + | createSquare1(snakeFood.x, snakeFood.y); |
| - | + | </ | |
| - | - Sie dürfen sich auch Hilfe bei einer KI // einem LLM holen, falls Sie möchten.\\ | + | Um ein Raster |
| - | </WRAP> | + | <code javascript> |
| + | function createGameArea() { | ||
| + | gameAreaContext.fillStyle = '# | ||
| + | | ||
| + | gameAreaContext.strokeStyle = '# | ||
| + | | ||
| + | // Raster zeichnen | ||
| + | const gridSize = 20; // Größe | ||
| + | gameAreaContext.strokeStyle = '# | ||
| + | | ||
| + | | ||
| + | // Vertikale Linien | ||
| + | for (let ix = 0; ix <= gameAreaWidth; | ||
| + | gameAreaContext.beginPath(); | ||
| + | gameAreaContext.moveTo(ix, 0); | ||
| + | gameAreaContext.lineTo(ix, gameAreaHeight); | ||
| + | | ||
| + | } | ||
| + | |||
| + | // Horizontale Linien | ||
| + | for (let iy = 0; iy <= gameAreaHeight; | ||
| + | gameAreaContext.beginPath(); | ||
| + | gameAreaContext.moveTo(0, | ||
| + | gameAreaContext.lineTo(gameAreaWidth, | ||
| + | gameAreaContext.stroke(); | ||
| + | } | ||
| + | |||
| + | // Schwarzer Rahmen (wie vorher) | ||
| + | gameAreaContext.strokeStyle = '# | ||
| + | gameAreaContext.strokeRect(0, | ||
| + | } | ||
| + | </ | ||
| + | Um die Steuerung auf der Website unterhalb des Spielfelds anzeigen zu lassen, muss in der html-Datei beispielsweise folgendes verändert werden: | ||
| + | <code html> | ||
| + | < | ||
| + | Speed: <input type=" | ||
| + | <input type=" | ||
| + | <input type=" | ||
| + | <br> < | ||
| + | <canvas id=" | ||
| + | < | ||
| + | <script src=" | ||
| + | <button id=" | ||
| + | < | ||
| + | <button id=" | ||
| + | <button id=" | ||
| + | < | ||
| + | <button id=" | ||
| + | </ | ||
| + | </ | ||
| + | und in der app.js Datei: | ||
| + | Hier muss bei den Variablen noch für jede der vier Richtungen eine Variable dazugefügt werden. | ||
| + | <code javascript> | ||
| + | ... | ||
| + | timer = {}, | ||
| + | moveDown = {}, | ||
| + | moveUp = {}, | ||
| + | moveLeft = {}, | ||
| + | moveRight= {}; | ||
| + | </ | ||
| + | Danach muss auch die funktion initElement() erweitert werden. | ||
| + | <code javascript> | ||
| + | function initElement() { | ||
| + | gameStart = document.querySelector('# | ||
| + | gameSpeed = document.querySelector('# | ||
| + | gameArea = document.querySelector('# | ||
| + | manualStep = document.querySelector('# | ||
| + | moveDown = document.querySelector('# | ||
| + | moveUp = document.querySelector('# | ||
| + | moveLeft = document.querySelector('# | ||
| + | moveRight = document.querySelector('# | ||
| + | </ | ||
| + | zudem muss auch die Funktion initEvent() vervollständigt werden: | ||
| + | <code javascript> | ||
| + | function initEvent() { | ||
| + | gameStart.addEventListener(' | ||
| + | manualStep.addEventListener(' | ||
| + | window.addEventListener(' | ||
| + | moveDown.addEventListener(' | ||
| + | if (snakeDirection != ' | ||
| + | }); | ||
| + | moveLeft.addEventListener(' | ||
| + | if (snakeDirection != ' | ||
| + | }); | ||
| + | moveRight.addEventListener(' | ||
| + | if (snakeDirection != ' | ||
| + | }); | ||
| + | moveUp.addEventListener(' | ||
| + | if (snakeDirection != ' | ||
| + | }); | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||