Тест на знание казахского языка | IQRA ACADEMY
[Предыдущая структура HTML остается без изменений до формы]
// Массив с вопросами теста
const questions = [
{
type: "language",
question: "Для кого рассматриваете обучение?",
answers: [
{ text: "Для себя", correct: null },
{ text: "Для ребенка", correct: null }
]
},
{
type: "language",
question: "В какие сроки хотите заговорить на казахском языке?",
answers: [
{ text: "За 1-2 месяца", correct: null },
{ text: "За 3-6 месяцев", correct: null },
{ text: "За 6-12 месяцев", correct: null }
]
},
{
type: "language",
question: "Сколько свободного времени в день есть на изучение казахского языка?",
answers: [
{ text: "30-60 минут", correct: null },
{ text: "1-2 часа", correct: null },
{ text: "Более 2 часов", correct: null }
]
},
{
type: "language",
question: "Изучали ли казахский язык до этого?",
answers: [
{ text: "Нет, никогда не изучал(а)", correct: null },
{ text: "Да, в школе/университете", correct: null },
{ text: "Да, самостоятельно", correct: null }
]
},
{
question: "Выберите правильный перевод слова 'Здравствуйте':",
answers: [
{ text: "Сәлеметсіз бе", correct: true },
{ text: "Рахмет", correct: false },
{ text: "Кешіріңіз", correct: false }
]
},
{
question: "Как сказать 'Как вас зовут?' на казахском:",
answers: [
{ text: "Қайда барасыз?", correct: false },
{ text: "Сіздің атыңыз кім?", correct: true },
{ text: "Сіз қайдансыз?", correct: false }
]
},
{
question: "Как будет 'спасибо' на казахском?",
answers: [
{ text: "Рахмет", correct: true },
{ text: "Кешіріңіз", correct: false },
{ text: "Сау болыңыз", correct: false }
]
},
{
question: "Выберите правильный перевод числа 'пять':",
answers: [
{ text: "Үш", correct: false },
{ text: "Бес", correct: true },
{ text: "Жеті", correct: false }
]
},
{
question: "Как сказать 'До свидания':",
answers: [
{ text: "Сау болыңыз", correct: true },
{ text: "Кездескенше", correct: false },
{ text: "Рахмет", correct: false }
]
},
{
question: "Выберите слово, означающее 'дом':",
answers: [
{ text: "Көше", correct: false },
{ text: "Үй", correct: true },
{ text: "Мектеп", correct: false }
]
}
];
// Основные переменные для отслеживания состояния теста
let currentQuestion = 0;
let score = 0;
let coins = 0;
let userAnswers = {};
// Функция запуска теста
function startQuiz() {
document.getElementById('intro').style.display = 'none';
document.getElementById('questionContainer').style.display = 'block';
showQuestion();
}
// Функция отображения вопроса
function showQuestion() {
const questionData = questions[currentQuestion];
document.getElementById('question').textContent = questionData.question;
const answersDiv = document.getElementById('answers');
answersDiv.innerHTML = '';
questionData.answers.forEach((answer, index) => {
const button = document.createElement('div');
button.className = 'answer';
button.textContent = answer.text;
button.onclick = () => selectAnswer(answer.correct, button, answer.text);
answersDiv.appendChild(button);
});
updateProgress();
}
// Функция обновления прогресса
function updateProgress() {
const progress = ((currentQuestion) / questions.length) * 100;
document.getElementById('progress').style.width = `${progress}%`;
}
// Функция создания анимации монетки
function createFlyingCoin(x, y) {
const coin = document.createElement('div');
coin.className = 'coin-icon flying-coin';
coin.textContent = '₸';
coin.style.left = `${x}px`;
coin.style.top = `${y}px`;
document.body.appendChild(coin);
setTimeout(() => {
coin.remove();
}, 1000);
}
// Функция выбора ответа
function selectAnswer(correct, button, answerText) {
const questionData = questions[currentQuestion];
const answers = document.getElementsByClassName('answer');
Array.from(answers).forEach(answer => {
answer.style.pointerEvents = 'none';
});
if (questionData.type === 'language') {
userAnswers[questionData.question] = answerText;
button.classList.add('correct');
setTimeout(nextQuestion, 500);
} else {
if (correct) {
button.classList.add('correct');
score++;
const rect = button.getBoundingClientRect();
createFlyingCoin(rect.right, rect.top);
const audio = document.getElementById('coinSound');
if (audio) {
audio.currentTime = 0;
audio.play().catch(() => {});
}
addCoins(10);
} else {
button.classList.add('wrong');
}
setTimeout(nextQuestion, 1000);
}
}
// Функция добавления монет
function addCoins(amount) {
coins += amount;
const coinCounter = document.getElementById('coinCount');
coinCounter.textContent = coins;
coinCounter.classList.add('coin-animation');
setTimeout(() => {
coinCounter.classList.remove('coin-animation');
}, 500);
}
// Функция перехода к следующему вопросу
function nextQuestion() {
currentQuestion++;
if (currentQuestion < questions.length) {
showQuestion();
} else {
submitQuizData();
}
}
// Функция отправки результатов в форму Tilda
function submitQuizData() {
document.getElementById('questionContainer').style.display ='none';
// Подготовка данных для отправки
const testQuestions = questions.filter(q => !q.type || q.type !== 'language');
const percentage = (score / testQuestions.length) * 100;
let level;
if (percentage >= 80) {
level = "B1 - Средний уровень";
} else if (percentage >= 50) {
level = "A2 - Базовый уровень";
} else {
level = "A1 - Начальный уровень";
}
// Заполняем скрытые поля формы
document.getElementById('quiz_score').value = score;
document.getElementById('quiz_level').value = level;
document.getElementById('quiz_answers').value = JSON.stringify(userAnswers);
// Показываем форму Tilda
const tildaForm = document.getElementById('form827913703');
tildaForm.style.display = 'block';
tildaForm.scrollIntoView({ behavior: 'smooth' });
}