{{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: positions.unshift({x:3, y:7, d:1}); // An Position 0 einfügen Eintrag an letzter Stelle löschen: let pos = positions.pop(); // An letzter Position löschen und in Variable speichern. 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: 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. ===== 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)]].