Ergebnis 1 bis 4 von 4

Thema: [JS] Variable lässt sich in einer For-Schleife nicht wie gewollt zwischenspeichern

  1. #1
    Großmeister(in) Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard [JS] Variable lässt sich in einer For-Schleife nicht wie gewollt zwischenspeichern

    Heyho,
    ich hab gestern einen kleinen Scramble-Generator für Rubiks Cubes in PHP programmiert. Heute wollte ich das ganze in Javascript umschreiben. Soweit klappte alles auch ganz gut, allerdings gibts ein kleines Problem mit der Vorschau des Würfels.

    Der gesamte Code ist hier zu finden: http://codepen.io/MyXoToD/pen/wFxJh

    Im Javascript-Bereich geht es mir um den Bereich bei Zeile 107. Dort laufe ich in einer Schleife durch jeden Move im Scramble und "drehe" somit die ebenen. Nach jedem Durchlauf sollte in tmpCube die aktuelle Positionierung des Würfels stehen. Das scheint hier aber nicht wirklich zu klappen.
    Wenn man nur einen Zug im Scramble macht, klappt alles aber sobald man 2 oder mehr macht, kommt es nicht mehr klar mit der Eingabe. In meiner PHP Version klappt das super...
    Was mache ich hier bei Javascript falsch? Wie kann ich nach jedem durchlauf den aktuellen Stand des Würfels richtig abspeichern, damit dieser beim nächsten Durchlauf verwendet wird?

    Hoffe mir kann hier jemand die Welt erklären
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Don't follow me, I run into walls.

  2. #2
    Forum Guru Avatar von synaptic
    Registriert seit
    20.06.2007
    Ort
    Butzbach-Wiesental
    Beiträge
    10.901
    Danke
    45
    Bekam 48 mal "Danke" in 46 Postings
    Blog-Einträge
    1

    Standard AW: [JS] Variable lässt sich in einer For-Schleife nicht wie gewollt zwischenspeicher

    also ich bin zwar mit den würfeldingern vollstens überfordert und hab auch in deinem code direkt nicht gefunden, was mir auffallen würde /aufgefallen ist.

    aber evtl liegts daran, dass in javascript objekte nen call by reference bekommen und simple datentypen nen call by value.
    denn damit würdest du hier:
    newCube = cube;
    und hier:
    tmpCube = newCube;

    letztendlich nur nen zeiger umbiegen, aber an sich nur an "cube" agieren
    wobei ich akuter weise auch jetzt nicht weiß, ob es sowas wie ne native copy oder clone-funktion gibt im js, hab sowas bisher nicht gebraucht.
    KEIN support via pn, email, messenger oder falsch geposteten threads
    Futter für deine Schnuffelzwerge gibts bei den Schnuffelzwergen TOP Qualität, also klicken und kaufen

  3. #3
    Großmeister(in)
    Themenstarter
    Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard AW: [JS] Variable lässt sich in einer For-Schleife nicht wie gewollt zwischenspeicher

    Sowas dachte ich mir schon irgendwie. Nur hab ich auch keine Idee, wie man das anders machen könnte... Irgendwie muss es ja aber machbar sein, denke ich. Wenn ich in dem For-Block direkt die Daten aus tmpCube in cube schreibe, passiert auch nur mist. Liegt aber vermutlich auch hier daran, dass ich nach den Durchläufen nicht immer den aktuellen Stand übergeben kann... Hmmm.

    Edit:
    Nun hab ich etwas völlig verrücktes rausgefunden... Anscheinend werden die Daten doch richtig zwischengespeichert aber nicht alle Oo Wie geht denn das...
    Wenn ich den besagten Teil wiefolgt umschreibe:
    Code:
        var tmpCube = new Array();
        var newCube = new Array();
        newCube = cube;
        scramble = "R";
        for (key in scramble) {
            var value = scramble[key];
            tmpCube = newCube;
            switch (value) {
                case "R":
                    newCube['R1'] = tmpCube['R7'];
                    newCube['R2'] = tmpCube['R4'];
                    newCube['R3'] = tmpCube['R1'];
                    newCube['R4'] = tmpCube['R8'];
                    newCube['R6'] = tmpCube['R2'];
                    newCube['R7'] = tmpCube['R9'];
                    newCube['R8'] = tmpCube['R6'];
                    newCube['R9'] = tmpCube['R3'];
                    newCube['B7'] = tmpCube['U3'];
                    newCube['B4'] = tmpCube['U6'];
                    newCube['B1'] = tmpCube['U9'];
                    newCube['U9'] = tmpCube['F9'];
                    newCube['U6'] = tmpCube['F6'];
                    newCube['U3'] = tmpCube['F3'];
                    newCube['F3'] = tmpCube['D3'];
                    newCube['F6'] = tmpCube['D6'];
                    newCube['F9'] = tmpCube['D9'];
                    newCube['D3'] = tmpCube['B7'];
                    newCube['D6'] = tmpCube['B4'];
                    newCube['D9'] = tmpCube['B1'];
                break;
    dann sind immer die letzten 3 Veränderungen falsch. Sprich in diesem Fall newCube D3, D6 und D9 sind zum Schluss falsch. Bei den anderen ist es richtig. Das versteh ich nicht :O
    Geändert von MyXoToD (09.04.2013 um 16:38 Uhr)
    Don't follow me, I run into walls.

  4. #4
    Forum Guru Avatar von synaptic
    Registriert seit
    20.06.2007
    Ort
    Butzbach-Wiesental
    Beiträge
    10.901
    Danke
    45
    Bekam 48 mal "Danke" in 46 Postings
    Blog-Einträge
    1

    Standard AW: [JS] Variable lässt sich in einer For-Schleife nicht wie gewollt zwischenspeicher

    also wieso nur 3 falsch sind, kann ich dir nicht sagen, da musste nochmal explizit die werte per hand vergleichen.
    aber das konstrukt hier ist auch seltsam:

    Code:
    var newCube = new Array();
        newCube = cube;
    da bräuchteste die faxe mit dem new Array() ja nicht. an der stelle würde ich nen concat nehmen, um NUR die werte aus cube in newcube zu bekommen.
    KEIN support via pn, email, messenger oder falsch geposteten threads
    Futter für deine Schnuffelzwerge gibts bei den Schnuffelzwergen TOP Qualität, also klicken und kaufen

Ähnliche Themen

  1. JavaScript: Variable beinhaltet immer den letzten Wert in einer Schleife
    Von WWKiller im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 15.03.2012, 13:32
  2. Lässt sich nicht speichern
    Von Unregistriert im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 19
    Letzter Beitrag: 13.06.2009, 19:58
  3. BAnner lässt sich nicht öffnen?
    Von thebosstomas im Forum Off Topic und Quasselbox
    Antworten: 0
    Letzter Beitrag: 18.05.2008, 20:46
  4. AVM Treiber lässt sich nicht löschen
    Von Anne333 im Forum Computer - Internet Forum
    Antworten: 0
    Letzter Beitrag: 14.08.2007, 13:59
  5. linux lässt sich nicht installieren!!
    Von cookie im Forum Computer - Internet Forum
    Antworten: 21
    Letzter Beitrag: 25.11.2005, 16:07

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •