Загрузка данных


const fragments = [
  { src: '1.png', position: 0 },
  { src: '2.png', position: 1 },
  { src: '3.png', position: 2 },
  { src: '4.png', position: 3 }
];

const gridContainer = document.getElementById('grid');
const fragmentsContainer = document.getElementById('fragments');
const message = document.getElementById('message');

function renderGrid() {
  gridContainer.innerHTML = '';
  for (let i = 0; i < 4; i++) {
    const slot = document.createElement('div');
    slot.className = 'slot';
    slot.dataset.position = i;
    slot.addEventListener('dragover', e => e.preventDefault());
    slot.addEventListener('drop', drop);
    gridContainer.appendChild(slot);
  }
}

function renderFragments() {
  fragmentsContainer.innerHTML = '';
  const shuffled = [...fragments].sort(() => Math.random() - 0.5);

  shuffled.forEach(item => {
    const img = document.createElement('img');
    img.src = item.src;
    img.className = 'fragment';
    img.draggable = true;
    img.dataset.position = item.position;
    img.addEventListener('dragstart', e => {
      e.dataTransfer.setData('text/plain', item.position);
    });
    fragmentsContainer.appendChild(img);
  });
}

function drop(e) {
  e.preventDefault();
  let slot = e.target.classList.contains('slot') ? e.target : e.target.closest('.slot');
  if (!slot) return;

  const pos = e.dataTransfer.getData('text/plain');
  const draggedImg = document.querySelector(`.fragment[data-position="${pos}"]`);
  if (!draggedImg) return;

  if (slot.children.length > 0) {
    fragmentsContainer.appendChild(slot.children[0]);
  }

  slot.appendChild(draggedImg);
  checkCompletion();
}

function checkCompletion() {
  const slots = document.querySelectorAll('.slot');
  let correct = 0;
  let filled = 0;

  slots.forEach(slot => {
    const img = slot.querySelector('img');
    if (img) {
      filled++;
      if (img.dataset.position == slot.dataset.position) correct++;
    }
  });

  if (filled === 4) {
    if (correct === 4) {
      message.textContent = '✅ Картинка собрана!';
      message.className = 'success';
    } else {
      message.textContent = '❌ Неправильно!';
      message.className = 'error';
    }
  } else {
    message.textContent = '';
    message.className = '';
  }
}

function submitAuth() {
  const user = document.getElementById('username').value.trim();
  const pass = document.getElementById('password').value.trim();

  if (!user || !pass) {
    alert('Заполните логин и пароль!');
    return;
  }

  if (!message.classList.contains('success')) {
    alert('Сначала правильно соберите капчу!');
    return;
  }

  alert('Успешный вход! Добро пожаловать, ' + user);
}

document.addEventListener('DOMContentLoaded', () => {
  renderGrid();
  renderFragments();
});