Memory Spiel

sora_nai

Mitglied
Hi!
Ich bin über dieses Memory Spiel gestolpert und habe bei ein paar Zeilen Verständnisprobleme.
Und zwar diese function
Code:
function init() {
                for(i = 0; i < 16; i++){
                    b[i] = i % 8;
                }
                wdh = Math.floor(Math.random() * 10001);
                for (i = 0; i < wdh; i++) {
                    x = Math.floor(Math.random() * 16);
                    y = Math.floor(Math.random() * 16);
                    h = b[x];
                    b[x] = b[y];
                    b[y] = h;
                }
            }

Wäre super wenn mit das jemand erklären könnte :)
Den zyklischen Tausch am Ende verstehe ich denke ich, aber was genau macht der Rest...?
Hier der ganze Code zum Verständnis:
HTML:
<html>
    <head>
        <title>Memory</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <style type="text/css">
            table {
                margin: 0 auto;
            }
            p {
                margin: 0 auto;
                text-align: center;
            }
        </style>
        <script type="text/javascript">
            var b = new Array();
            var aktbild1 = 100, aktbild2 = 100;
            function init() {
                for(i = 0; i < 16; i++){
                    b[i] = i % 8;
                }
                wdh = Math.floor(Math.random() * 10001);
                for (i = 0; i < wdh; i++) {
                    x = Math.floor(Math.random() * 16);
                    y = Math.floor(Math.random() * 16);
                    h = b[x];
                    b[x] = b[y];
                    b[y] = h;
                }
            }
            function pic(i){
                document.getElementById("feld").innerHTML = "Bild " + i + " wurde geklickt. Es hat die Nummer " + b[i] + ".";
            }
        </script>
    </head>
    <body>
        <script type="text/javascript">
            init();
            document.write("<table>");
            document.write("<tr>");
            for (i = 0; i < 16; i++) {
                document.write("<td><img src=bilder/bild" + b[i] + ".jpg height=100 width=100 onClick='pic(" + i + ");'></td>");
                if (i % 4 === 3)
                    document.write("</tr><tr>");
            }
            document.write("</tr></table>");
            document.write("<br>");
            document.write("<p id='feld'></p>");
        </script>
    </body>
</html>
 
K

kneitzel

Gast
Also da hat wieder jemand super Variablennamen gefunden :)

Also b[] scheint die Karten zu beinhalten. Es gibt 16 Karten, die jeweils eine Nummer von 0-7 bekommen haben. Jetzt wird das Kartenset in b[] initialisiert. Dazu werden die Zahlen von 0-7 zweimal geschrieben. So ist Karte 0 z.B. in Slot 0 und 8, die Karte 1 in 1 und 9 u.s.w.

Nun wird im Anschluss gemischt. Dazu wird bis zu 10000 Mal getauscht. (Die Stelle finde ich nicht ganz so logisch, aber ok.)
Zu einem Tausch werden zwei Zufallszahlen bis 16 ermittelt und dann der Inhalt der beiden Felder getauscht.
 

sora_nai

Mitglied
Danke vielmals für die Antwort! Eine Frage:
Es gibt 16 Karten, die jeweils eine Nummer von 0-7 bekommen haben. Jetzt wird das Kartenset in b[] initialisiert. Dazu werden die Zahlen von 0-7 zweimal geschrieben.
Anhand welcher Zeilen genau sieht man, dass sie Nummern von 0-7 haben :eek: ?
Und wo genau passiert das zweimal schreiben der Zahlen :D ?
 
K

kneitzel

Gast
b=i % 8
mit i von 0 bis 15

Schreib das Ergebnis einfach selbst mal auf. % ist der Modulo Operator, d.h. der Rest der Division.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Memory Spiel Angular, React, JQuery - Fragen zu JavaScript 17

Ähnliche Java Themen

Neue Themen


Oben