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

Ha webszűrőt használsz, győződj meg róla, hogy a *.kastatic.org és a *.kasandbox.org nincsenek blokkolva.

Fő tartalom

Memóriajáték: Pontozás és győzelem

A memóriajátékunk majdnem készen van! Már csak a pontozás hiányzik belőle. A játékszabály szerint:
A játék célja, hogy minden kártya a képével felfelé fordítva legyen előttünk – tehát megtaláljunk minden összetartozó kártyát. A lehető legkevesebb próbálkozásból kell ezt összehoznunk; minél kevesebbszer próbálkozunk, annál magasabb pontszámot kapunk.
Hogyan követhetnénk nyomon, hogy hányszor próbálkoztunk? Egyáltalán, mi is számít próbálkozásnak? Az, ha felfordítunk két lapot, tehát, hogy hányszor léptünk be abba a blokkba, ami ezt a feltételt ellenőrzi: flippedTiles.length === 2. Hozzunk létre egy új globális változót, numTries-t, és inkrementáljuk minden alkalommal, amikor a feltétel igaz.
if (flippedTiles.length === 2) {
  numTries++;
  ...
}
Jó lenne azt is tudni, hogy mikor van vége a játéknak (amikor a játékos az összes lapot felfordította). Ezt többféleképpen megoldhatjuk, így elsőre ez a kettő jutott eszembe:
  1. Végigjárjuk a kártyák tömbjét, és megnézzük az isMatch értékét mindre: ha mind true, nyertünk.
  2. Bevezetünk egy globális változót a megtalált párok számának vezetésére, és ezt ellenőrizgetjük: ha eléri az összes pár számát, nyertünk.
Hasonló dilemmával találkoztunk korábban is, és akkor azt az opciót választottuk, amivel nem kellett bejárnunk a teljes tömböt minden ellenőrzésnél. Maradjunk ennél a gyakorlatnál: legyen a második opció a nyerő.
Először inicializáljuk a numMatches változót 0 értékkel ott, ahol a játékban szereplő összes többi globális állapotváltozónknak értéket adunk:
var numMatches = 0;
Ezután abban az if-blokkban, ahol ellenőrizzük, hogy a két felfordított kártya egy pár-e, inkrementáljuk (növeljük 1-el) az előbb inicializált numMatches változót:
if (flippedTiles[0].face === flippedTiles[1].face) {
  flippedTiles[0].isMatch = true;
  flippedTiles[1].isMatch = true;
  flippedTiles.length = 0;
  numMatches++;
}
A draw függvényünk végén megnézzük, hogy minden párt megtalált-e a játékos: ha igen, kiírhatunk valamilyen gratuláló üzenetet.
if (numMatches === tiles.length/2) {
  fill(0, 0, 0);
  text("You found them all in " + numTries + " tries",
       20, 360);
}
Alul kipróbálhatod, de lehet, beletelik egy kis időbe, mire sikerül – nekem sem megy gyorsan!
Gyors tipp a játékjaid teszteléséhez, ha olyan részt vizsgálnál, ahova nehéz eljutni: ne félj átmenetileg módosítani a játékot, hogy könnyebb legyen! Ebben a játékban például érdemes a NUM_ROWS és NUM_COLS változókat kisebb értékűre vennünk, így sokkal gyorsabban végzünk. Próbáld ki ezt alább!

Szeretnél részt venni a beszélgetésben?

Még nincs hozzászólás.
Tudsz angolul? Kattints ide, ha meg szeretnéd nézni, milyen beszélgetések folynak a Khan Academy angol nyelvű oldalán.