Untitled

mail@pastecode.io avatar
unknown
javascript
2 years ago
3.2 kB
3
Indexable
let myCards = document.getElementById("container");
let resultsArray = [];// آرایه برای نگهداری نتایج کلیک کاربر
let counter = 0;// شمارنده برای تعداد جفت کارت‌های مطابقت داده شده
let text = document.getElementById("text");// المان متن برای نمایش نتیجه
let seconds = 00;// شمارنده ثانیه
let tens = 00;// شمارنده دهم ثانیه
let appendTens = document.getElementById("tens");// المان مربوط به دهم ثانیه
let appendSeconds = document.getElementById("seconds");// المان مربوط به ثانیه
let Interval;// شمارنده برای شروع شدن زمان‌سنج
let images = ["sass", "git", "gulp", "css", "grunt"];// تصاویر مربوط به کارت‌ها
let clone = images.slice(0); // duplicate array // تکثیر آرایه images
let cards = images.concat(clone); // merge to arrays // ترکیب دو آرایه

// Shufffel function// تابع shuffle برای تصادفی کردن ترتیب کارت‌ها
function shuffle(o) {
  for (
    let j, x, i = o.length;
    i;
    j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x
    );
  return o;
}
shuffle(cards);// تصادفی کردن ترتیب کارت‌ها با استفاده از تابع shuffle

// ایجاد کارت‌ها و اضافه کردن آنها به المان کانتینر
for (let i = 0; i < cards.length; i++) {
  card = document.createElement("div");
  card.dataset.item = cards[i];
  card.dataset.view = "card";
  myCards.appendChild(card);

  // تابع onclick برای کلیک بر روی هر کارت
  card.onclick = function () {
    if (this.className != "flipped" && this.className != "correct") {
      this.className = "flipped";
      let result = this.dataset.item;
      resultsArray.push(result);
      clearInterval(Interval);
      Interval = setInterval(startTimer, 10);
    }

    if (resultsArray.length > 1) {
      if (resultsArray[0] === resultsArray[1]) {
        check("correct");
        counter++;
        win();
        resultsArray = [];
      } else {
        check("reverse");
        resultsArray = [];
      }
    }
  };
}

// تابع check برای چک کردن اصلاح کلاس المان‌های flipped
let check = function (className) {
  let x = document.getElementsByClassName("flipped");
  setTimeout(function () {
    for (let i = x.length - 1; i >= 0; i--) {
      x[i].className = className;
    }
  }, 500);
};

// تابع win برای بررسی پایان بازی
let win = function () {
  if (counter === 5) {
    clearInterval(Interval);
    text.innerHTML = "Your time was " + seconds + ":" + tens;
  }
};

// تابع شمارش زمان
function startTimer() {
  tens++;

  if (tens < 9) {
    appendTens.innerHTML = "0" + tens;
  }

  if (tens > 9) {
    appendTens.innerHTML = tens;
  }

  if (tens > 99) {
    seconds++;
    appendSeconds.innerHTML = "0" + seconds;
    tens = 0;
    appendTens.innerHTML = "0" + 0;
  }

  if (seconds > 9) {
    appendSeconds.innerHTML = seconds;
  }
}