lehrkraefte:blc:informatik:ffprg1-2024:raster-snake:tail

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:ffprg1-2024:raster-snake:tail [2024/05/23 06:15] – [Array-Manipulationen] Ivo Blöchligerlehrkraefte:blc:informatik:ffprg1-2024:raster-snake:tail [2024/05/23 07:35] (current) – [Funktion ''schwanzNachziehen''] Ivo Blöchliger
Line 1: Line 1:
 +{{backlinks>.}}
 +====== Schwanz nachziehen ======
 +Grundidee: Alle Positionen (und Richtungen!) des Schlangenkörpers in einem Array ''positions'' speichern. Einträge entsprechend entfernen und hinzufügen. Konvention: Kopf an Position 0, Schwanz an letzter Stelle.
 +
 +Einträge sollen Objects der Form ''{x:3, y:7, d:1}'' sein, mit x,y Koordinaten und Richtung d (von 0 bis 3).
 +
 +===== Array-Manipulationen =====
 +Eintrag an Stelle 0 hinzufügen:
 +<code javascript>
 +positions.unshift({x:3, y:7, d:1}); // An Position 0 einfügen
 +</code>
 +
 +Eintrag an letzter Stelle löschen:
 +<code javascript>
 +let pos = positions.pop();  // An letzter Position löschen und in Variable speichern.
 +</code>
 +
 +Weitere Array-Methoden sind ''push'' (hinten anfügen), ''shift'' (vorne entfernen) und das Universaltaschenmesser ''splice''.
 +
 +
 +===== Destructuring =====
 +Siehe auch [[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment|auf MDN]].
 +
 +Wir können Variablen direkt zu Positionen in einem Array oder zu Schlüsseln in einem Objekt zuweisen:
 +<code javascript>
 +let [vx,vy] = [3,-5];
 +let position = {x:3, y:7, d:1};
 +let {x,y,d} = position;  // Reihenfolge nicht relevant, es müssen auch nicht alle keys verwendet werden.
 +</code>
 +
 +===== Funktion ''schwanzNachziehen'' =====
 +Wir programmieren eine Funktion ''schwanzNachziehen'', die von der Funktion ''step'' aufgerufen wird, und zwar bevor die Schlange weiterzieht (sonst könnte man einen Unfall festellen, wo aber der Schwanz gar nicht mehr wäre).
 +
 +====== Screencast ======
 +[[https://bldsg-my.sharepoint.com/:v:/g/personal/ivo_bloechliger_ksbg_ch/EbqUGVaH-YtIm4oYV9d_1dQBW4_NWY-vHaNdvCiUktaA5Q?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=IakuVS|Sharepoint (nur für St. Galler)]] oder [[https://fginfo.ksbg.ch/~ivo/videos/informatik/ffprog24/snake/04-schwanz-nachziehen.mp4|einfaches https (weltweit)]].
 +