Hlavní obsah
Pexeso: Bodování a výhra
Naše hra "pexeso" je téměř dokončena! Chybí jí jen jedna věc: bodování. Zde je připomenutí této části herních pravidel:
Cílem hry je otočit všechny kartičky vzhůru (tj. najít všechny odpovídající dvojice obrázků) s co nejmenším počtem pokusů. To znamená, že nižší počet pokusů je lepší skóre.
Jak zaznamenáme počet pokusů? "Pokus" je pokaždé, když otočíš dvě kartičky, což odpovídá bloku if, který ověřuje
flippedTiles.length === 2
. Můžeme přidat novou globální proměnnou, numTries
, kterou zvýšíme uvnitř této podmínky.if (flippedTiles.length === 2) {
numTries++;
...
}
Když hra skončí, chceme zobrazit výsledné skóre - když hráč posbírá všechny páry. Jak to uděláme? Máme dvě možnosti:
- Budeme iterovat v našem poli kartiček a ověřovat, zda je
isMatch
true
pro všechny kartičky. - Použijeme globální proměnnou pro sledování počtu párů nalezených hráčem, přičemž následně ověříme, zda hráč získal celkový počet možných párů.
Podobnou rozpravu jsme vedli již dříve a nakonec jsme se rozhodli pro možnost, kde nemusíme pokaždé iterovat v celém poli. Pojďme si proto opět zvolit možnost 2.
Nejprve inicializujeme
numMatches
na 0 na stejném místě, kde inicializujeme všechny naše ostatní globální proměnné herního stavu:var numMatches = 0;
Pak uvnitř bloku
if
pro posbírané páry zvyšujeme proměnnou numMatches
:if (flippedTiles[0].face === flippedTiles[1].face) {
flippedTiles[0].isMatch = true;
flippedTiles[1].isMatch = true;
flippedTiles.length = 0;
numMatches++;
}
Na konci naší funkce
draw
zkontrolujeme, zda hráč našel všechny páry a pak uživateli zobrazíme nějakou vítěznou zprávu:if (numMatches === tiles.length/2) {
fill(0, 0, 0);
text("Nalezeno během " + numTries + " pokusů",
20, 360);
}
Můžeš si to vyzkoušet níže, ale možná ti bude chvíli trvat, než se dostaneš až k vítězné zprávě (nic proti tobě, samozřejmě i nám to nějakou tu chvíli zabere!).
Zde je tip, který se ti hodí kdykoli, když budeš testovat určité části tvé hry, které jsou těžko dosažitelné - dočasně tvé hry uprav tak, ať je jednodušší se tam dostat. Například v této hře změň
NUM_ROWS
a NUM_COLS
na menší čísla a budeš ji moci dokončit mnohem rychleji. Teď to zkus níže!Chceš se zapojit do diskuze?
Zatím žádné příspěvky.