JS记忆卡游戏-如何防止用户同时翻转超过2张卡片

时间:2019-05-23 22:28:13

标签: javascript

如何防止用户同时翻动2张以上的牌,当用户进行错配时使用设置超时,如果在设置超时期间快速单击,则可以翻动2张以上的牌。我该如何预防?

我试图使var isProcessing = true 并且当用户进行错误匹配时,编写以下代码:

2

但这不起作用

game.html

combos2(EMPLOYEES,POSTS,LIST):-
   LIMIT is POSTS-EMPLOYEES+1,
   length(LIST,EMPLOYEES),
   LIST ins 1..LIMIT,
   sum(LIST,#=,POSTS),
   Mid is (LIMIT+1) div 2,           %%
   maplist(dist(Mid), LIST, DISTS),  %%    
   sum(DISTS,#=,Totaldist),          %%
   labeling([],[Totaldist|LIST]).

dist(Mid, E, D) :-
    D #= abs(Mid-E).

?- combos2(2,10,L).
   L = [5,5]
;  L = [4,6]
;  L = [6,4]
;  L = [3,7]
;  L = [7,3]
;  ...

game.js

if (isProcessing ) {
    return;
}

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

我认为您的isProcessing想法是一个很好的解决方案。您需要将其放在这里:

 // No match, schedule to flip them back in 1 second
 if (card1 !== card2) {
     isProcessing = true; // SET IS PROCESSING BEFORE TIMER
     setTimeout(function () {
         wrongMatch.play();
         elCard.classList.remove('flipped');
         elPreviousCard.classList.remove('flipped');
         elPreviousCard = null;
         isProcessing = false; // SET IS NOT PROCESSING AFTER TIME
     }, 1000)

在您的点击功能中:

function cardClicked(elCard) {
    if (isProcessing) { return; }