А почему обязательно на компьютере?
Разве "материальные" игры, игрушки, головоломки хуже? Я немного знаю о чем говорю, т.к. моя жена всю жизнь проработала психологом в психиатрической больнице (правда не с детьми). Им необходим не столько компьютер, сколько доступная активность для мозга, моторика для рук, общение... |
Voraa, Вы абсолютно без сомнений правы во всём!
Но просто, как дополнение к основному, на компьютере можно создавать бесконечное количество наглядного материала... да и по правде, мне самому интересно повозиться с кодом, но у меня, к сожалению, очень ограниченный объем знаний((( Порой радуюсь, как дитя малое, что удалось что-нибудь "модифицировать" самостоятельно из чужого... повторюсь, я глубоко восхищён возможностями JS! Но я далеко немолод и нездоров, чтобы достаточно хорошо освоить этот замечательный стремительно развивающийся язык((( Хотя всё же жизнь продолжается и я не теряю надежд на лучшее - вот на неделе скачал современные книги по JS))) Voraa, спасибо Вам за добрые слова! |
Цитата:
только надо добавить это https://javascript.ru/forum/css-html...tml#post543513 |
рони,
Судя по той и этой теме, автор так и не определился окончательно что ему нужно. |
Цитата:
Изображение, которое сначала генерируется, например, из 16 маленьких изображений, автоматически делится на 9 сегментов, которые рандомно перемешиваются, и их необходимо кликами по соседним привести в исходное положение, как на первоначально сгенерированной картинке: ![]() Извините, если невразумительно объясняю(( |
Рони, сначала генерация изображения, как было продемонстрировано Вами в этой теме:
https://javascript.ru/forum/css-html...tml#post543474 Потом раздел на сегменты, как на изображении для Rise выше, затем ваша же реализация перемещения разделённых сегментов в другой моей теме: https://javascript.ru/forum/css-html...tml#post542829 P.S. Предупреждал не кидать в меня тапками!)) |
типа пятнашек
<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> |
Rise, все 9 сегментов (разделенные красным на изображении выше) должны быть активны - меняться соседние сегменты между собой при кликах на них.
|
MallSerg, спасибо!))
Только все изображения-элементы должны быть видны (не как в "пятнашках"). |
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> |
Часовой пояс GMT +3, время: 23:36. |