Показать сообщение отдельно
  #1 (permalink)  
Старый 09.09.2021, 21:52
Новичок на форуме
Отправить личное сообщение для Paulsw01 Посмотреть профиль Найти все сообщения от Paulsw01
 
Регистрация: 02.07.2021
Сообщений: 7

Функция для игры в пары
Как реализовать функцию которая выполняла бы следующие условия "Если обе открытые карточки содержат одинаковую цифру, они остаются открытыми до конца игры. Если же вторая карточка содержит отличную от первой цифру, обе они закрываются, как только игрок откроет следующую карточку. Таким образом на поле остаются открытыми только найденные пары или 1-2 карточки, открытые игроком."

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- <link rel="stylesheet" href="style.css"> -->
    <title>Document</title>
    <style type="text/css">
        .wrapper-cards {
            display: flex;
            flex-wrap: wrap;
            margin-top: 40px;
        }
 
        .card {
            width: 120px;
            height: 200px;
            margin-right: 35px;
            margin-bottom: 35px;
            border: 2px solid black;
            text-align: center;
            font-size: 128px;
            cursor: pointer;
        }
 
        .card:hover {
            box-shadow: 0 0 5px #2f2d2d;
        }
    </style>
</head>
 
<body>
    <div class="wrapper">
        <input class="input" value="4" type="number" min="4" max="10">
        <button class="button">Начать игру</button>
 
    </div>
    <div class="wrapper-cards">
        <!-- <div class="card"></div>
        <div class="card"></div>
        <div class="card"></div>
        <div class="card"></div> -->
    </div>
    <script src="main.js"></script>
</body>
 
</html>


let input = document.querySelector('.input');
let button = document.querySelector('.button');
let wrapperCards = document.querySelector('.wrapper-cards');
 
 
// создаем масив
let arr = ["1", "1", "2", "2", "3", "3", "4", "4", "5", "5", "6", "6", "7", "7", "8", "8", "9", "9", "10", "10", "11", "11", "12", "12", "13", "13", "14", "14", "15", "15", "16", "16"];
let result = 4
let newArr = new Array();
 
button.onclick = () => {
    let value = +input.value;
 
    // очищаем .wrapper-cards
 
    if (document.querySelector(".card")) {
        wrapperCards.innerHTML = ''
    }
 
    // проверяем введеное число
 
    if (value % 2 == 0 && value <= 10 && value >= 4) {
        result = value;
    } else {
        result = 4;
        input.innerHTML = 4
        alert('Введите четное число от 4 до 10')
    }
 
    // задаем ширину .wrapper-cards
 
    wrapperCards.style.width = (160 * result / 2) + 'px';
 
    // создаем новый масив
 
    for (let i = 0; i < result; i++) {
        newArr[i] = arr[i]
    }
 
    // перемешиваем масив
 
    function shuffle(array) {
        array.sort(() => Math.random() - 0.5);
    }
    shuffle(newArr);
 
    // создаем div .card
 
    function getListContent() {
        let fragment = new DocumentFragment();
 
        for (let i = 0; i < result; i++) {
            card = document.createElement("div");
            card.classList.add('card');
            // card.append(newArr[i]);
            card.setAttribute('data-number', newArr[i])
            fragment.append(card);
        }
        return fragment;
    }
    wrapperCards.append(getListContent()); // (*)
 
    console.log(result)
 
    // находим .card
 
    // let cardInDom = document.querySelector(".card");
 
    let cardInDom = document.querySelectorAll(".card");
 
    // вызываем функцию по клику на .card и показываем цифру
 
    for (let i = 0; i < cardInDom.length; i++) {
        cardInDom[i].onclick = () => {
            let cardValue = cardInDom[i].getAttribute("data-number");
            console.log(cardValue)
            cardInDom[i].innerHTML = cardValue
        };
    };
};
Ответить с цитированием