If you're seeing this message, it means we're having trouble loading external resources on our website.

Wenn du hinter einem Webfilter bist, stelle sicher, dass die Domänen *. kastatic.org und *. kasandbox.org nicht blockiert sind.

Hauptinhalt

Memory: Punktezahl und gewinnen

Unser Memory-Spiel ist fast fertig! Jetzt fehlt nur noch eins: wie macht man Punkte? Zur Erinnerung hier noch einmal dieser Teil der Spielregeln:
Das Spielziel ist es, dass am Ende alle Karten mit der Oberseite nach oben gedreht liegen (also die zusammengehörigen Bildpaare gefunden wurden), und zwar mit so wenig Versuchen wie möglich. Dies bedeutet, je weniger Versuche, desto höher der Spielstand.
Wie verfolgen wir die Anzahl der Versuche? Also, ein "Versuch" bedeutet jedes Mal, dass du zwei Kacheln umgedreht hast, was unserem if-Block zur Prüfung von flippedTiles.length === 2 entspricht. Wir können eine neue globale Variable, numTries, hinzufügen, die wir innerhalb dieser Bedingung inkrementieren.
if (flippedTiles.length === 2) {
  numTries++;
  ...
}
Wir möchten den Spielstand anzeigen, wenn das Spiel vorbei ist, also wenn der Spieler alle zusammengehörigen Kacheln gefunden hat. Wie prüfen wir das? Ich kann mir zwei Wege vorstellen:
  1. Wir iterieren durch unser Array von Kacheln und prüfen ob isMatch für alle true ist.
  2. Wir verwenden eine globale Variable um zu speichern wieviele Paare der Spieler gefunden hat. Wir prüfen dann ob diese gleich der total möglichen Paare ist.
Wir hatten schon vorher eine ähnliche Diskussion und ich habe die Option gewählt bei welcher wir nicht jedes mal durch das ganze Array iterieren müssen. Machen wir es diesmal gleich und wählen Option 2.
Zuerst initialisieren wir numMatches auf 0, an der gleichen Stelle, an der wir alle unsere anderen globalen Spielzustandsvariablen initialisieren:
var numMatches = 0;
Wir erhöen dann im if-Block für Kachel-Paare die Variable numMatches.
if (flippedTiles[0].face === flippedTiles[1].face) {
  flippedTiles[0].isMatch = true;
  flippedTiles[1].isMatch = true;
  flippedTiles.length = 0;
  numMatches++;
}
Am Ende unserer draw-Funktion prüfen wir, ob der Spieler alle Paare gefunden hat und dann zeigen dem Benutzer dann einen Glückwunsch an:
if (numMatches === tiles.length/2) {
  fill(0, 0, 0);
  text("You found them all in " + numTries + " tries",
       20, 360);
}
Du kannst das Programm immer noch unten ausprobieren, es dürfte allerdings eine Weile dauern, bis du den Gewonnen hast. Nichts für ungut, mir geht es natürlich genauso.
Mein Tipp für den Fall, dass du Teile deines Spiels testen willst, zu deinen man nicht so einfach kommt: Verändere das Spiel vorübergehend, damit du schneller dort hin gelangst. In diesem Spiel kannst du zum Beispiel NUM_ROWS und NUM_COLS auf kleinere Zahlen ändern. Dann wirst du viel schneller fertig. Probier das unten mal aus!

Willst du an der Diskussion teilnehmen?

Noch keine Beiträge.
Verstehst du Englisch? Klick hier, um weitere Diskussionen auf der englischen Khan Academy Seite zu sehen.