Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 07.02.2022, 20:32
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Voraa, Вы абсолютно без сомнений правы во всём!
Но просто, как дополнение к основному, на компьютере можно создавать бесконечное количество наглядного материала... да и по правде, мне самому интересно повозиться с кодом, но у меня, к сожалению, очень ограниченный объем знаний(((
Порой радуюсь, как дитя малое, что удалось что-нибудь "модифицировать" самостоятельно из чужого... повторюсь, я глубоко восхищён возможностями JS! Но я далеко немолод и нездоров, чтобы достаточно хорошо освоить этот замечательный стремительно развивающийся язык(((
Хотя всё же жизнь продолжается и я не теряю надежд на лучшее - вот на неделе скачал современные книги по JS)))
Voraa, спасибо Вам за добрые слова!
Ответить с цитированием
  #32 (permalink)  
Старый 07.02.2022, 23:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,150

Сообщение от Rise
А что это за игра?
https://javascript.ru/forum/css-html...tml#post543102

только надо добавить это

https://javascript.ru/forum/css-html...tml#post543513
Ответить с цитированием
  #33 (permalink)  
Старый 08.02.2022, 00:49
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Сообщение от Rise
Судя по той и этой теме, автор так и не определился окончательно что ему нужно.
Rise, моё окончательное видение:
Изображение, которое сначала генерируется, например, из 16 маленьких изображений, автоматически делится на 9 сегментов, которые рандомно перемешиваются, и их необходимо кликами по соседним привести в исходное положение, как на первоначально сгенерированной картинке:

Извините, если невразумительно объясняю((
Ответить с цитированием
  #34 (permalink)  
Старый 08.02.2022, 01:29
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Рони, сначала генерация изображения, как было продемонстрировано Вами в этой теме:
https://javascript.ru/forum/css-html...tml#post543474
Потом раздел на сегменты, как на изображении для Rise выше, затем ваша же реализация перемещения разделённых сегментов в другой моей теме:
https://javascript.ru/forum/css-html...tml#post542829
P.S. Предупреждал не кидать в меня тапками!))
Ответить с цитированием
  #35 (permalink)  
Старый 08.02.2022, 04:07
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,141

типа пятнашек
<iframe height="550" style="width: 100%;" scrolling="no" title="Fifteen game" src="https://codepen.io/mohnatus-the-lessful/embed/YzXNYQQ?default-tab=js%2Cresult&theme-id=light" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
  See the Pen <a href="https://codepen.io/mohnatus-the-lessful/pen/YzXNYQQ">
  Fifteen game</a> by FurryCat (<a href="https://codepen.io/mohnatus-the-lessful">@mohnatus-the-lessful</a>)
  on <a href="https://codepen.io">CodePen</a>.
</iframe>
Ответить с цитированием
  #36 (permalink)  
Старый 08.02.2022, 11:39
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Rise, все 9 сегментов (разделенные красным на изображении выше) должны быть активны - меняться соседние сегменты между собой при кликах на них.
Ответить с цитированием
  #37 (permalink)  
Старый 08.02.2022, 11:43
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

MallSerg, спасибо!))
Только все изображения-элементы должны быть видны (не как в "пятнашках").
Ответить с цитированием
  #38 (permalink)  
Старый 08.02.2022, 12:48
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Rise, вот так оно всё должно выглядеть в конечном результате, но только в этом варианте всё время будет одно и то же изображение собираться, поэтому я изначально в этой теме хотел каждый раз новое изображение генерировать для сборки:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style type="text/css">
        [data-id="1"] {
            background-image:url(https://i.ibb.co/cb6tXTH/canvas-01.jpg);
            width: 200px;
            height: 200px;
        }
        [data-id="2"] {
            background-image:url(https://i.ibb.co/r3nXCKj/canvas-02.jpg);
            width: 200px;
            height: 200px;
        }
        [data-id="3"] {
            background-image:url(https://i.ibb.co/PFc43HB/canvas-03.jpg);
            width: 200px;
            height: 200px;
        }
        [data-id="4"] {
            background-image:url(https://i.ibb.co/r5dVWj7/canvas-04.jpg);
            width: 200px;
            height: 200px;
        }                    
        [data-id="5"] {           
            background-image:url(https://i.ibb.co/jGp056d/canvas-05.jpg);
            width: 200px;
            height: 200px;
        }
        [data-id="6"] {
            background-image:url(https://i.ibb.co/GRVYX8H/canvas-06.jpg);
            width: 200px;
            height: 200px;
        }
        [data-id="7"] {
            background-image:url(https://i.ibb.co/QbR97Fr/canvas-07.jpg);
            width: 200px;
            height: 200px;
        }
        [data-id="8"] {
            background-image:url(https://i.ibb.co/StcY4gm/canvas-08.jpg);
            width: 200px;
            height: 200px;
        }
        [data-id="9"] {
            background-image:url(https://i.ibb.co/bB70pMR/canvas-09.jpg);
            width: 200px;
            height: 200px;
        }               
    </style>
    <script type="text/javascript">
        document.addEventListener("DOMContentLoaded", function() {
            let temp = [];
            let form = document.querySelector(".game");
            let tds = Array.from(form.querySelectorAll("[data-id]"));
            let idEnd = tds.map(({
                dataset: {
                    id
                }
            }) => id);
            let win;

            function exch(event) {
                if (win) return;
                let td = event.target.closest("[data-id]");
                if (td) {
                    let cellIndex = td.cellIndex;
                    let rowIndex = td.closest("tr").rowIndex;
                    if (temp.length) {
                        let x = Math.abs(cellIndex - temp[1]);
                        let y = Math.abs(rowIndex - temp[2]);
                        if ((x == 0 && y == 1) || (x == 1 && y == 0) || td === temp[0]) {
                            [td.dataset.id, temp[0].dataset.id] = [temp[0].dataset.id, td.dataset.id]
                            temp = [];
                        }
                    } else {
                        temp = [td, cellIndex, rowIndex];
                    }
                    win = tds.every(({
                        dataset: {
                            id
                        }
                    }, i) => id === idEnd[i]);
                    if (win) alert("Hello world!");
                }
            }
            form.addEventListener("click", exch);
            let color = idEnd.slice(0), len = color.length;
            color.forEach((_, i) => {
                let a = Math.trunc(Math.random() * len);
                [color[i], color[a]] = [color[a], color[i]];
            });
            tds.forEach(({dataset}, i) => dataset.id = color[i]);
        });
    </script>
</head>
<body>
    <form class="game">
        <table align="center" cellspacing="0" cellpadding="0">
            <tr>
                <td data-id="1"></td>
                <td data-id="2"></td>
                <td data-id="3"></td>
            </tr>
            <tr>
                <td data-id="4"></td>
                <td data-id="5"></td>
                <td data-id="6"></td>
            </tr>
            <tr>
                <td data-id="7"></td>
                <td data-id="8"></td>
                <td data-id="9"></td>
            </tr>
        </table>
    </form>
</body>
</html>
Ответить с цитированием
  #39 (permalink)  
Старый 08.02.2022, 13:11
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Rise, да, Вы правы - с непривычки может казаться трудновыполнимым, но при объяснении со временем всё становится понятно и исполнимо... во всяком случае в материальной версии, но она фактически только на один раз, потому что легко запоминается первоначальное расположение. Ну, я так увидел, если что))
Ответить с цитированием
  #40 (permalink)  
Старый 08.02.2022, 13:42
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Rise, да, видимо, всё как Вы и описали... виноват!((
Сообщение от Rise
Приходится постоянно перекликивать активный сегмент даже если он был тем же самым на прошлом ходе.
Да, именно так!
Сообщение от Rise
Это не совсем очевидное поведение было для меня.
Это моя оплошность!(((((
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DLE загрузка изображений через дополнительное поле armn555 Элементы интерфейса 0 18.08.2017 11:08
Ajax. Как сделать загрузку изображений, отображение, удаление как на Авито wowtschuk AJAX и COMET 1 07.03.2017 01:34
Повременная смена изображений jozev Элементы интерфейса 2 01.08.2011 18:43
Прокрутка изображений gen552 Элементы интерфейса 6 01.04.2011 13:11
Скролл мини изображений I-Trap Элементы интерфейса 1 25.11.2009 22:03