Здесь делается волшебство. примерно форум заработает в 16:00 по мск.

Добро пожаловать в ролевой мир! // Здесь ты не просто читаешь историю, ты ее пишешь! Именно ты решаешь, как будет развиваться твоя история, с кем ты будешь строить отношения, и какой путь ты выберешь.И помни, твой персонаж будет создавать новые сюжетные линии и переплетая судьбы, казалось бы на первый взгляд несовместимые.Заставь себя и своего игрока плакать и смеяться, переживать все взлеты и падения настоящих чувств. приемная ждет тебя, мой дорогой друг!
01/07
актуально!
20/04
в разработке
15/03
посмотри свой результат

тест

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » тест » важные моменты » игра мемо


игра мемо

Сообщений 1 страница 2 из 2

1

[html]<style>
  .forum-table-container {
    background-image: url(https://upforme.ru/uploads/0019/49/95/2/114311.jpg);  /* Фон подложки */
    color: #2e2d2d;
    padding: 20px;
  text-align: center;
    border-radius: 10px;
    font-family: American Typewriter , sans-serif;
  }
  .forum-table-header {
    text-align: center;
    font-family: American Typewriter , serif;
    font-size: 40px;
    font-weight: bold;
    margin-bottom: 20px;
    text-transform: uppercase;
  }
  .forum-table-columns {
    display: flex;
text-align: center;
    border-radius: 10px;
    gap: 15px;
  }
  .forum-table-column {
    flex: 1;
  text-align: center !important;
    background-color: #dddddd;
    color: #2e2d2d;
    border-radius: 10px;
    padding: 15px;
  }
  .forum-table-column h3 {
    text-align: center;
    font-size: 18px;
    font-weight: bold;
    border-radius: 10px;
    text-transform: uppercase;
    margin-top: 0;
  }
  .forum-table-column hr {
    border: none;
text-align: center;
    height: 1px;
    background-color: #2e2d2d;
    margin: 10px 0;
  }
  .forum-table-column ul {
    list-style-type: none;
    padding: 0;
text-align: center;
    margin: 0;
  }
  .forum-table-column li {
    margin-bottom: 10px;
  text-align: center;
  }
  .forum-table-footer {
    background-color: #dddddd;
    color: #2e2d2d;
    border-radius: 10px;
    text-align: center;
    padding: 10px;
    margin-top: 20px;
    font-weight: bold;
  }
  .forum-table-footer .highlight {
    font-weight: bold;
  text-align: center;
  }
</style>

<div class="forum-table-container">
 
<div class="forum-table-column">
      <h1>MEMO</h1>
      <hr>
      <ul>
        <li>Написала простенький скрипт для игры в поиск совпадений. Ищем пары, тренируем мозг в перерывах между постами.</li>

      </ul>
    </div>

</div>
[/html]

[html]<!-- === MEMO 8×6 (48 карточек), серый, American Typewriter, хороший рандом === -->
<style>
.memo{
  --tile:96px; --gap:12px; --radius:14px; --cols:8;      /* кол-во колонок и размер ячейки */
  --front:#1d1d1f; --back:#2a2a2c; --accent:#9aa0a6;
  --ok:#9b9b9b; --text:#e6e6e6; --muted:#b5b5b5; --blank:#242426;
  font-family:"American Typewriter","Georgia","Times New Roman",serif;
  max-width:950px; margin:16px auto; padding:14px;
  background:linear-gradient(180deg,#151516,#1c1c1e);
  border-radius:20px; box-shadow:10 10px 28px rgba(0,0,0,.45); color:var(--text)
}
.memo h3{margin:0 0 .5rem;font-size:20px}
.memo .memo__controls{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.memo .memo__btn{appearance:none;border:1px solid #3a3a3c;background:#171718;color:var(--text);padding:6px 10px;border-radius:10px;cursor:pointer;font-size:13px}
.memo .memo__btn:hover{border-color:var(--accent);box-shadow:0 0 0 2px rgba(154,160,166,.15) inset}
.memo .memo__status{font-size:13px;color:var(--muted)}
.memo .grid{display:grid;grid-template-columns:repeat(var(--cols),var(--tile));gap:var(--gap);justify-content:center}

@media (max-width:880px){.memo{--tile:86px}}
@media (max-width:760px){.memo{--cols:7;--tile:78px}}
@media (max-width:620px){.memo{--cols:6;--tile:70px}}
@media (max-width:520px){.memo{--cols:5;--tile:64px}}

.memo input[type=checkbox]{position:absolute;opacity:0;pointer-events:none}
.memo .memo-card{width:var(--tile);height:var(--tile);border-radius:var(--radius);position:relative;perspective:900px}
.memo .memo-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:var(--radius);
  transition:transform .5s,box-shadow .2s;backface-visibility:hidden;user-select:none}
.memo .memo-front{background:var(--front);border:1px solid #2c2c2e;box-shadow:inset 0 0 0 1px rgba(255,255,255,.03)}
.memo .memo-back{background:var(--back);border:1px dashed rgba(255,255,255,.12);transform:rotateY(180deg);
  font-size:28px; letter-spacing:.6px}
.memo input:checked + label .memo-front{transform:rotateY(180deg)}
.memo input:checked + label .memo-back{transform:rotateY(360deg)}
.memo label{display:block;width:100%;height:100%;cursor:pointer;outline:none}
.memo label:focus-visible .memo-front{box-shadow:0 0 0 3px rgba(154,160,166,.35)}
.memo label:hover .memo-front{box-shadow:0 0 0 2px rgba(154,160,166,.18) inset}

/* Цифры/иконки на обороте из data-symbol */
.memo label .memo-back::before{content:attr(data-symbol); transform:translateY(-1px)}

/* Зафиксированная пара */
.memo label[data-locked]{pointer-events:none}
.memo label[data-locked] .memo-back{
  box-shadow:0 0 0 2px rgba(155,155,155,.35) inset, 0 6px 14px rgba(0,0,0,.25);
  border-color:rgba(200,200,200,.4)
}
</style>

<div class="memo" id="memo48">
  <form>
    <h3>MEMO — найди пары</h3>
    <div class="memo__controls">
      <small>Открывай по две карточки</small>
      <div class="memo__status">Найдено: <b class="memo__found">0</b> / 24</div>
      <button class="memo__btn" type="reset">СБРОС</button>
    </div>

    <div class="grid" id="memo-grid"></div>
  </form>
</div>

<script>
(() => {
  const root = document.getElementById('memo48');
  if (!root) return;

  const grid = root.querySelector('#memo-grid');
  const form = root.querySelector('form');
  const foundEl = root.querySelector('.memo__found');
  const TOTAL = 24;                       // число пар
  const symbols = Array.from({length: TOTAL}, (_,i) => String(i+1).padStart(2,'0'));

  let opened = [];
  let lock = false;
  let found = 0;

  // криптографически стойкий (при наличии) Фишер–Йетс
  function rndInt(max){
    if (window.crypto && crypto.getRandomValues){
      const buf = new Uint32Array(1);
      crypto.getRandomValues(buf);
      return buf[0] % max;
    }
    return Math.floor(Math.random() * max);
  }
  function shuffle(arr){
    for (let m = arr.length; m; ){
      const i = rndInt(m--);
      [arr[m], arr[i]] = [arr[i], arr[m]];
    }
    return arr;
  }

  function buildDeck(){
    grid.innerHTML = '';
    const deck = shuffle(symbols.concat(symbols)); // дублируем и мешаем

    deck.forEach((sym, idx) => {
      const card  = document.createElement('div');  card.className = 'memo-card';
      const input = document.createElement('input'); input.type='checkbox'; input.id = `mc${idx}`;
      const label = document.createElement('label'); label.setAttribute('for', input.id);
      const front = document.createElement('span');  front.className = 'memo-face memo-front';
      const back  = document.createElement('span');  back.className  = 'memo-face memo-back'; back.dataset.symbol = sym;
      label.append(front, back); card.append(input, label); grid.append(card);
    });

    // сброс внутренних состояний
    opened = [];
    lock = false;
    found = 0;
    foundEl.textContent = '0';
  }

  function getSymbol(input){
    return input.nextElementSibling.querySelector('.memo-back').dataset.symbol;
  }
  function lockPair(a,b){
    a.nextElementSibling.dataset.locked = '1';
    b.nextElementSibling.dataset.locked = '1';
  }

  root.addEventListener('change', (e) => {
    const input = e.target;
    if (input.tagName !== 'INPUT') return;

    if (input.nextElementSibling.dataset.locked){ input.checked = true; return; }
    if (lock && input.checked){ input.checked = false; return; }

    if (input.checked){
      opened.push(input);
      if (opened.length === 2){
        lock = true;
        const [a,b] = opened;
        const sa = getSymbol(a), sb = getSymbol(b);
        if (sa === sb){
          lockPair(a,b);
          found++;
          foundEl.textContent = String(found);
          opened = [];
          lock = false;
        } else {
          const toClose = opened.slice();
          opened = [];
          setTimeout(() => {
            toClose.forEach(inp => inp.checked = false);
            lock = false;
          }, 700);
        }
      }
    } else {
      opened = opened.filter(x => x !== input);
    }
  });

  form.addEventListener('reset', () => {
    setTimeout(buildDeck, 0); // при сбросе — новая случайная раскладка
  });

  buildDeck(); // старт
})();
</script>[/html]

[hideprofile]

0

2

[html]<style>
  .forum-table-container {
    background-image: url(https://upforme.ru/uploads/0019/49/95/2/114311.jpg);  /* Фон подложки */
    color: #2e2d2d;
    padding: 20px;
  text-align: center;
    border-radius: 10px;
    font-family: American Typewriter , sans-serif;
  }
  .forum-table-header {
    text-align: center;
    font-family: American Typewriter , serif;
    font-size: 40px;
    font-weight: bold;
    margin-bottom: 20px;
    text-transform: uppercase;
  }
  .forum-table-columns {
    display: flex;
text-align: center;
    border-radius: 10px;
    gap: 15px;
  }
  .forum-table-column {
    flex: 1;
  text-align: center !important;
    background-color: #dddddd;
    color: #2e2d2d;
    border-radius: 10px;
    padding: 15px;
  }
  .forum-table-column h3 {
    text-align: center;
    font-size: 18px;
    font-weight: bold;
    border-radius: 10px;
    text-transform: uppercase;
    margin-top: 0;
  }
  .forum-table-column hr {
    border: none;
text-align: center;
    height: 1px;
    background-color: #2e2d2d;
    margin: 10px 0;
  }
  .forum-table-column ul {
    list-style-type: none;
    padding: 0;
text-align: center;
    margin: 0;
  }
  .forum-table-column li {
    margin-bottom: 10px;
  text-align: center;
  }
  .forum-table-footer {
    background-color: #dddddd;
    color: #2e2d2d;
    border-radius: 10px;
    text-align: center;
    padding: 10px;
    margin-top: 20px;
    font-weight: bold;
  }
  .forum-table-footer .highlight {
    font-weight: bold;
  text-align: center;
  }
</style>

<div class="forum-table-container">
 
<div class="forum-table-column">
      <h1>MEMO</h1>
      <hr>
      <ul>
        <li>Написала простенький скрипт для игры в поиск совпадений. Ищем пары, тренируем мозг в перерывах между постами.</li>

      </ul>
    </div>

</div>
[/html]

[html]<!-- === MEMO 8×6 (48 карточек), серый, American Typewriter, хороший рандом === -->
<style>
.memo{
  --tile:96px; --gap:12px; --radius:14px; --cols:8;      /* кол-во колонок и размер ячейки */
  --front:#1d1d1f; --back:#2a2a2c; --accent:#9aa0a6;
  --ok:#9b9b9b; --text:#e6e6e6; --muted:#b5b5b5; --blank:#242426;
  font-family:"American Typewriter","Georgia","Times New Roman",serif;
  max-width:950px; margin:16px auto; padding:14px;
  background:linear-gradient(180deg,#151516,#1c1c1e);
  border-radius:20px; box-shadow:10 10px 28px rgba(0,0,0,.45); color:var(--text)
}
.memo h3{margin:0 0 .5rem;font-size:20px}
.memo .memo__controls{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.memo .memo__btn{appearance:none;border:1px solid #3a3a3c;background:#171718;color:var(--text);padding:6px 10px;border-radius:10px;cursor:pointer;font-size:13px}
.memo .memo__btn:hover{border-color:var(--accent);box-shadow:0 0 0 2px rgba(154,160,166,.15) inset}
.memo .memo__status{font-size:13px;color:var(--muted)}
.memo .grid{display:grid;grid-template-columns:repeat(var(--cols),var(--tile));gap:var(--gap);justify-content:center}

@media (max-width:880px){.memo{--tile:86px}}
@media (max-width:760px){.memo{--cols:7;--tile:78px}}
@media (max-width:620px){.memo{--cols:6;--tile:70px}}
@media (max-width:520px){.memo{--cols:5;--tile:64px}}

.memo input[type=checkbox]{position:absolute;opacity:0;pointer-events:none}
.memo .memo-card{width:var(--tile);height:var(--tile);border-radius:var(--radius);position:relative;perspective:900px}
.memo .memo-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:var(--radius);
  transition:transform .5s,box-shadow .2s;backface-visibility:hidden;user-select:none}
.memo .memo-front{background:var(--front);border:1px solid #2c2c2e;box-shadow:inset 0 0 0 1px rgba(255,255,255,.03)}
.memo .memo-back{background:var(--back);border:1px dashed rgba(255,255,255,.12);transform:rotateY(180deg);
  font-size:28px; letter-spacing:.6px}
.memo input:checked + label .memo-front{transform:rotateY(180deg)}
.memo input:checked + label .memo-back{transform:rotateY(360deg)}
.memo label{display:block;width:100%;height:100%;cursor:pointer;outline:none}
.memo label:focus-visible .memo-front{box-shadow:0 0 0 3px rgba(154,160,166,.35)}
.memo label:hover .memo-front{box-shadow:0 0 0 2px rgba(154,160,166,.18) inset}

/* Цифры/иконки на обороте из data-symbol */
.memo label .memo-back::before{content:attr(data-symbol); transform:translateY(-1px)}

/* Зафиксированная пара */
.memo label[data-locked]{pointer-events:none}
.memo label[data-locked] .memo-back{
  box-shadow:0 0 0 2px rgba(155,155,155,.35) inset, 0 6px 14px rgba(0,0,0,.25);
  border-color:rgba(200,200,200,.4)
}
</style>

<div class="memo" id="memo48">
  <form>
    <h3>MEMO — найди пары</h3>
    <div class="memo__controls">
      <small>Открывай по две карточки</small>
      <div class="memo__status">Найдено: <b class="memo__found">0</b> / 24</div>
      <button class="memo__btn" type="reset">СБРОС</button>
    </div>

    <div class="grid" id="memo-grid"></div>
  </form>
</div>

<script>
(() => {
  const root = document.getElementById('memo48');
  if (!root) return;

  const grid = root.querySelector('#memo-grid');
  const form = root.querySelector('form');
  const foundEl = root.querySelector('.memo__found');
  const TOTAL = 24;                       // число пар
  const symbols = Array.from({length: TOTAL}, (_,i) => String(i+1).padStart(2,'0'));

  let opened = [];
  let lock = false;
  let found = 0;

  // криптографически стойкий (при наличии) Фишер–Йетс
  function rndInt(max){
    if (window.crypto && crypto.getRandomValues){
      const buf = new Uint32Array(1);
      crypto.getRandomValues(buf);
      return buf[0] % max;
    }
    return Math.floor(Math.random() * max);
  }
  function shuffle(arr){
    for (let m = arr.length; m; ){
      const i = rndInt(m--);
      [arr[m], arr[i]] = [arr[i], arr[m]];
    }
    return arr;
  }

  function buildDeck(){
    grid.innerHTML = '';
    const deck = shuffle(symbols.concat(symbols)); // дублируем и мешаем

    deck.forEach((sym, idx) => {
      const card  = document.createElement('div');  card.className = 'memo-card';
      const input = document.createElement('input'); input.type='checkbox'; input.id = `mc${idx}`;
      const label = document.createElement('label'); label.setAttribute('for', input.id);
      const front = document.createElement('span');  front.className = 'memo-face memo-front';
      const back  = document.createElement('span');  back.className  = 'memo-face memo-back'; back.dataset.symbol = sym;
      label.append(front, back); card.append(input, label); grid.append(card);
    });

    // сброс внутренних состояний
    opened = [];
    lock = false;
    found = 0;
    foundEl.textContent = '0';
  }

  function getSymbol(input){
    return input.nextElementSibling.querySelector('.memo-back').dataset.symbol;
  }
  function lockPair(a,b){
    a.nextElementSibling.dataset.locked = '1';
    b.nextElementSibling.dataset.locked = '1';
  }

  root.addEventListener('change', (e) => {
    const input = e.target;
    if (input.tagName !== 'INPUT') return;

    if (input.nextElementSibling.dataset.locked){ input.checked = true; return; }
    if (lock && input.checked){ input.checked = false; return; }

    if (input.checked){
      opened.push(input);
      if (opened.length === 2){
        lock = true;
        const [a,b] = opened;
        const sa = getSymbol(a), sb = getSymbol(b);
        if (sa === sb){
          lockPair(a,b);
          found++;
          foundEl.textContent = String(found);
          opened = [];
          lock = false;
        } else {
          const toClose = opened.slice();
          opened = [];
          setTimeout(() => {
            toClose.forEach(inp => inp.checked = false);
            lock = false;
          }, 700);
        }
      }
    } else {
      opened = opened.filter(x => x !== input);
    }
  });

  form.addEventListener('reset', () => {
    setTimeout(buildDeck, 0); // при сбросе — новая случайная раскладка
  });

  buildDeck(); // старт
})();
</script>[/html]

[hideprofile]

0


Вы здесь » тест » важные моменты » игра мемо


Рейтинг форумов | Создать форум бесплатно