Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2018, 00:07   #1
kreejoo
Новичок
Джуниор
 
Регистрация: 24.02.2018
Сообщений: 1
Стрелка функция, где будет реализовано открытие карт по клику и проверка на совпадение

Пожалуй, перейду сразу к делу.
Создаю небольшую игру (Найди пару). Имеется 52 карты, рандомно выбирается 9 карт, создаются пары и рандомно располагаются на столе. В качестве блоков я использую ячейки таблицы. Это я смог реализовать, проблема в том, что не могу понять, как написать алгоритм, при котором карты будут раскрываться (можно максимум раскрыть 2 карты) и проверяться условие совпадения. Благодарю за помощь.
Код HTML и JS ниже:
HTML:
Код:
<table class="cards" cellspacing="25">
            <tr>
                 <td id="k1"></td>
                 <td id="k2"></td>
                 <td id="k3"></td>
                 <td id="k4"></td>
                 <td id="k5"></td>
                 <td id="k6"></td>
            </tr>            
            <tr>
                 <td id="k7"></td>
                 <td id="k8"></td>
                 <td id="k9"></td>
                 <td id="k10"></td>
                 <td id="k11"></td>
                 <td id="k12"></td>
            </tr>
                 <td id="k13"></td>
                 <td id="k14"></td>
                 <td id="k15"></td>
                 <td id="k16"></td>
                 <td id="k17"></td>
                 <td id="k18"></td>
            <tr>
            </tr>
        </table>
JavaScript:
Код:
function hideme(obj)
{
    obj.parentNode.style.display="none";//Скрыть первую страницу
    idsecondpage.style.display="block";//Показать вторую страницу
    $(document).ready(function () {
        rest();});
}
 
 
function rest(){
 
    //функция, которая перемешивает массив
    function mix(mixArray) {
      var index, valueIndex; 
      for (var i=0; i<=mixArray.length-1; i++) {
        index = Math.floor(Math.random()*i);
        valueIndex = mixArray[index];
        mixArray[index] = mixArray[i];
        mixArray[i] = valueIndex;
      }
      return mixArray;
    }
    var u, g, t;
    var click_flag = 1;
    var count_click = 0; //Кол-во кликов
    var game_array = [];
    var arr;
    var idtr = ['k1', 'k2', 'k3', 'k4', 'k5', 'k6', 'k7', 'k8', 'k9', 'k10', 'k11', 'k12', 'k13', 'k14', 'k15', 'k16', 'k17', 'k18'];//Массив с id ячеек
    var map = [];//Массив для сохранения положения карт
    while(game_array.length < 9) {
            var rando = Math.floor(Math.random() * (52 - 1 + 1)) + 1;//Выбираются рандомные 9 карт из 52
            var found = false;
            for (t = 0; t < game_array.length; t++) {
                if (game_array[t] === rando){ 
                    found = true;
                    break;
                }
            }
            if (!found) { game_array[game_array.length]=rando; }
        }
    for(u=0, g=9; u<9; u++, g++)
        {
            game_array[g]=game_array[u];//Создаем пару для карт
        } 
    mix(game_array); //перемешиваем массив (картинки)
    function rub() {//Функция, котороя закрывает карты
    for(u=0;u<18;u++){
        var l = document.getElementById(idtr[u]);
        l.innerHTML="<img width='120' height='160' src='img/fon.png'>";        
    }
    }    
 
    function raskladka(){//Функция, которая раскладывает карты по ячейкам
    for(u=0, g=0; u<18; u++, g++)
    {    
     var k = document.getElementById(idtr[u]);
     k.innerHTML="<img  width='120' height='160' src='img/"+game_array[g]+".png'>";
        
   }
        function find (arr){
            u=0;
            while (game_array[u]!=arr)
                {
                    u++;
                }
            return u;
        }        
    }
    //function startSlidek1() { $('#k1 img').attr('src', 'img/'+ game_array[0] +'.png');  }
    rub();
    setTimeout(raskladka, 1700);
    setTimeout(rub, 6700);    
    //$('#k1').click(startSlidek1);    
}
$(document).ready(function () {
    $('#idrest').click(rest);//Начать заново
 });
kreejoo вне форума Ответить с цитированием
Старый 25.02.2018, 02:37   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Чего-то у тебя тяжко не с JS, а с основами программирования в принципе...
Либо уж очень не в ту сторону ты задачу декомпозируешь.
Тут же простейший алгоритмы:
клик на карте, проверяем была ли только что нажата карта, если нет - переворачиваем и запоминаем.
Если да - сверяем с нажатой картой. Если совпадают, то открываем обе, если нет - закрываем первую...
В конце еще можно добавить проверку на то, открыты ли все карты...
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
где прописываются настройки smtp-сервера для, которым будет пользоваться php-функция mail для отправки исходящего сообщения? robix PHP 2 04.09.2017 15:19
Проверка данных на совпадение A_next Microsoft Office Excel 4 26.09.2013 09:19
RichEdit проверка на совпадение volod3000 Общие вопросы Delphi 2 09.12.2011 15:25
Проверка на совпадение записи Lokos БД в Delphi 4 29.04.2010 08:55
открытие файла по клику на ячейке Lucifffer Microsoft Office Excel 1 13.03.2009 11:55