Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.06.2017, 17:42
Интересующийся
Отправить личное сообщение для r1sus Посмотреть профиль Найти все сообщения от r1sus
 
Регистрация: 22.02.2016
Сообщений: 26

Реализация алгоритма игры
Игра заключается в том, чтобы при выборе цвета опорного элемента, соседи со схожим цветом меняли свой цвет. И так далее, пока все игровое поле не будет заполнено одним цветом.
У меня уже реализован алгоритм, но работает когда как
Не пинайте ногами, код очень не хороший, но мне сейчас нужно чтоб работало, потом уже красоту наведу.
Я на эту игру уже неделю смотрю, может нужен просто свежий взгляд.
Спасибо всем!


https://codepen.io/jasesmith/pen/mRmWjQ

Последний раз редактировалось r1sus, 23.06.2017 в 09:58.
Ответить с цитированием
  #2 (permalink)  
Старый 22.06.2017, 17:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от r1sus
соседи со схожим цветом меняли свой цвет
на какой цвет?
Ответить с цитированием
  #3 (permalink)  
Старый 22.06.2017, 17:57
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

я чет проиграл в твою игру, не вытащил катку.
Ответить с цитированием
  #4 (permalink)  
Старый 22.06.2017, 18:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

похоже нужна волна от опорной клетки
Ответить с цитированием
  #5 (permalink)  
Старый 22.06.2017, 18:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

r1sus,
добавить выбор цвета и фильтрацию
https://javascript.ru/forum/dom-wind...tml#post447768
Ответить с цитированием
  #6 (permalink)  
Старый 22.06.2017, 18:18
Интересующийся
Отправить личное сообщение для r1sus Посмотреть профиль Найти все сообщения от r1sus
 
Регистрация: 22.02.2016
Сообщений: 26

..

Последний раз редактировалось r1sus, 23.06.2017 в 14:41. Причина: Дополнение
Ответить с цитированием
  #7 (permalink)  
Старый 22.06.2017, 19:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

игра, сделать все клетки одинакого цвета
r1sus,
кликать по кнопкам слева от блока, окончание игры фиксируйте самостоятельно
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  *{
    padding: 0;
    margin: 0;
  }

  .cell {
    text-align: center;
     float: left;
     height: 23px;
     width: 23px;
     border: #0000CD 1px solid;
     background-color: #FFEBCD;
     font-size: 12px;
     -webkit-transition: all .5s ease-in-out;
     -moz-transition: all .5s ease-in-out;
     -o-transition: all .5s ease-in-out;
     transition: all .5s ease-in-out;
  }
  #matrix{
    display: inline-block;
    margin: 50px auto;

  }
  #color{
    margin: 50px auto;
     position: relative;
  }

  .but {
    text-align: center;
     height: 23px;
     width: 23px;
     margin: 12px;
     border-radius: 4px;
  }

  </style>

  <script>
window.addEventListener("DOMContentLoaded", function() {
    var matrix = document.getElementById("matrix"),
        l = (Math.random() * 15 | 0) + 10;
        t = (Math.random() * 10 | 0) + 10, n = l * t,
        color = document.getElementById("color");

    function createColorBg(num) {
        var temp = [];
        for (var i = 0; i < num; i++) temp[i] = "#" + ("000000" + (Math.random() * 16777215 | 0).toString(16)).slice(-6);
        return temp
    }


    function rund(num) {
        return Math.floor(Math.random() * num)
    }

    function createBut(bgColor)
    {
       bgColor.forEach(function(clr, i) {
       var div = document.createElement("div");
           div.className = "but";
           div.style.backgroundColor = bgColor[i];
           div.addEventListener("click", function(event) {
        currentColor = divs[0].dataset.bg;
        newColor = i;
        wave(0)
    })
      color.appendChild(div);
})
    }

    function createMatrix(numColor) {
        var w;
        for (var i = 0; i < n; i++) {
            var div = document.createElement("div");
            div.className = "cell";
            div.dataset.index = i;
            var num = rund(numColor);
            div.dataset.bg = num;
            div.style.backgroundColor = bgColor[num];
            matrix.appendChild(div);
            if (i == l - 1) w = matrix.offsetWidth + 1
        }
        matrix.style.width = w + "px";
        matrix.style.display = "block"
    }

    function chec(indx, size) {
        var s = [],
            x = indx % l,
            y = indx / l | 0;
        size = size || 1;
        for (var i = y - size; i <= y + size; i++)
            for (var k = x - size; k <= x + size; k++) {
                var num = k + i * l;
                i > -1 && i < t && k > -1 && k < l && num < i * l + l && s.push(num)
            }
        return s
    }
    var numColor = 3;
    var bgColor = createColorBg(numColor);
    createMatrix(numColor);
    var divs = [].slice.call(document.querySelectorAll(".cell"), 0);
    var currentColor;
    var newColor;

    createBut(bgColor);

    function wave(index) {
        var elems = chec(index);
        elems.forEach(function(indx) {
            var bg = divs[indx].dataset.bg;
            if (bg == currentColor && bg != newColor) {
                divs[indx].dataset.bg = newColor;
                divs[indx].style.backgroundColor = bgColor[newColor];
                window.setTimeout(function() {
                    wave(indx)
                }, 300)
            }
        })
    }

});
  </script>
</head>

<body>
<div id="matrix" ></div>
<span id="color" ></span>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 22.06.2017, 20:47
Интересующийся
Отправить личное сообщение для r1sus Посмотреть профиль Найти все сообщения от r1sus
 
Регистрация: 22.02.2016
Сообщений: 26

..

Последний раз редактировалось r1sus, 22.06.2017 в 20:51.
Ответить с цитированием
  #9 (permalink)  
Старый 22.06.2017, 20:48
Интересующийся
Отправить личное сообщение для r1sus Посмотреть профиль Найти все сообщения от r1sus
 
Регистрация: 22.02.2016
Сообщений: 26

Рони,Спасибо большое, на ваш взгляд мой код совсем не годный? Критики можно еще попросить)
Ответить с цитированием
  #10 (permalink)  
Старый 22.06.2017, 20:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

r1sus,
мне легче написать свой вариант, разбор чужого кода без пояснений отнимает много времени.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игры на JavaScript Вовантуз Ваши сайты и скрипты 8 06.03.2018 20:39
Приглашаю оценить черновик игры Штосс (3,7,Туз) Serg_pnz Ваши сайты и скрипты 4 08.02.2013 16:12
Реализация игрового поля для игры "Точки" last-art Events/DOM/Window 7 22.04.2012 03:18
Написание игры (для игры в онлайн) JavaStart Общие вопросы Javascript 0 23.02.2012 11:48
Реализация алгоритма (массив координат) ed_17 Общие вопросы Javascript 1 02.03.2011 19:25