# Memory Spiel



## sora_nai (17. Feb 2016)

Hi!
Ich bin über dieses Memory Spiel gestolpert und habe bei ein paar Zeilen Verständnisprobleme.
Und zwar diese function 

```
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>
    <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>
```


----------



## kneitzel (17. Feb 2016)

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 (17. Feb 2016)

Danke vielmals für die Antwort! Eine Frage:


kneitzel hat gesagt.:


> 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  ?
Und wo genau passiert das zweimal schreiben der Zahlen  ?


----------



## kneitzel (17. Feb 2016)

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._


----------

