sozday-dlya-menya-kuiz-sayt/turgesh-kaganaty.html

410 lines
28 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- no-design-system -->
<!DOCTYPE html>
<html lang="kk" data-theme="auto">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>ҰБТ: Түргеш қағанаты және соғдылар</title>
<link rel="stylesheet" href="design-system/kt-ai-fonts.css">
<link rel="stylesheet" href="design-system/kt-ai-tokens.css">
<link rel="stylesheet" href="design-system/kt-ai-components.css">
<link rel="stylesheet" href="design-system/kt-ai-page.css">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🏹</text></svg>">
<style>
.kt-ai-hero { background: linear-gradient(135deg, var(--kt-ai-bg-soft) 0%, var(--kt-ai-bg) 100%); }
.question-card { margin-bottom: var(--kt-ai-space-6); }
.options-grid { display: grid; gap: var(--kt-ai-space-3); margin-top: var(--kt-ai-space-5); }
.option-btn { text-align: left; justify-content: flex-start; padding-left: var(--kt-ai-space-4); }
.option-btn::before { content: ''; width: 24px; height: 24px; border-radius: 50%; border: 2px solid var(--kt-ai-fg-muted); margin-right: var(--kt-ai-space-3); flex-shrink: 0; display: inline-block; vertical-align: middle; }
.option-btn[data-selected="true"]::before { background: var(--kt-ai-primary); border-color: var(--kt-ai-primary); }
.option-btn.correct { background: #dcfce7 !important; border-color: #22c55e !important; color: #166534; }
.option-btn.wrong { background: #fee2e2 !important; border-color: #ef4444 !important; color: #991b1b; }
.score-display { font-size: var(--kt-ai-text-3xl); font-weight: var(--kt-ai-weight-bold); color: var(--kt-ai-primary); margin: var(--kt-ai-space-6) 0; }
.progress-bar { height: 8px; background: var(--kt-ai-bg-soft); border-radius: var(--kt-ai-radius-full); overflow: hidden; margin-bottom: var(--kt-ai-space-5); }
.progress-fill { height: 100%; background: var(--kt-ai-primary); transition: width 0.3s ease; }
.hidden { display: none; }
.fade-in { animation: fadeIn 0.4s ease; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.timer-badge { display: inline-flex; align-items: center; gap: var(--kt-ai-space-2); padding: var(--kt-ai-space-2) var(--kt-ai-space-4); background: var(--kt-ai-bg-soft); border-radius: var(--kt-ai-radius-lg); font-weight: var(--kt-ai-weight-semibold); }
.timer-badge.warning { background: #fef3c7; color: #92400e; }
.timer-badge.danger { background: #fee2e2; color: #991b1b; }
.stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--kt-ai-space-4); margin-bottom: var(--kt-ai-space-6); }
.stat-card { text-align: center; padding: var(--kt-ai-space-4); background: var(--kt-ai-bg-soft); border-radius: var(--kt-ai-radius-xl); }
.stat-value { font-size: var(--kt-ai-text-2xl); font-weight: var(--kt-ai-weight-bold); color: var(--kt-ai-primary); }
.stat-label { font-size: var(--kt-ai-text-sm); color: var(--kt-ai-fg-muted); }
.welcome-text { font-size: var(--kt-ai-text-lg); color: var(--kt-ai-fg-muted); margin-bottom: var(--kt-ai-space-3); }
.name-input { max-width: 400px; margin: var(--kt-ai-space-6) auto; }
.answer-feedback { margin-top: var(--kt-ai-space-4); padding: var(--kt-ai-space-3); border-radius: var(--kt-ai-radius-lg); font-weight: var(--kt-ai-weight-medium); }
.answer-feedback.correct { background: #dcfce7; color: #166534; }
.answer-feedback.wrong { background: #fee2e2; color: #991b1b; }
</style>
</head>
<body>
<header class="kt-ai-pagehead">
<div class="kt-ai-wrap kt-ai-pagehead-in">
<strong>🏹 Түргеш қағанаты</strong>
<span class="kt-ai-spacer"></span>
<span id="header-user-name" style="color: var(--kt-ai-primary); font-weight: var(--kt-ai-weight-semibold);"></span>
<span class="kt-ai-spacer"></span>
<a class="kt-ai-btn" data-variant="ghost" href="index.html">Басқа тест</a>
<button class="kt-ai-btn" data-variant="ghost" onclick="showStartScreen()">Қайта бастау</button>
</div>
</header>
<section class="kt-ai-hero" data-align="center">
<div class="kt-ai-wrap">
<h1>Түргеш қағанаты және соғдылар</h1>
<p class="kt-ai-hero-sub">Біліміңді тексер және қайталауды ұмытпа!</p>
<div id="login-section" style="max-width: 400px; margin: var(--kt-ai-space-6) auto;">
<div class="kt-ai-field">
<label>Аты-жөніңізді енгізіңіз:</label>
<input class="kt-ai-input" id="user-name" placeholder="Мысалы: Алиев Арман" type="text">
</div>
<button class="kt-ai-btn" data-variant="primary" data-size="lg" onclick="startQuiz()" style="margin-top: var(--kt-ai-space-4);">Тестілеуді бастау</button>
</div>
<div id="welcome-section" class="hidden">
<p class="welcome-text">Қош келдіңіз, <strong id="user-display-name" style="color: var(--kt-ai-primary); font-weight: var(--kt-ai-weight-bold);"></strong>!</p>
<button class="kt-ai-btn" data-variant="primary" data-size="lg" onclick="startQuiz()">Тестілеуді бастау</button>
</div>
</div>
</section>
<section id="quiz-section" class="kt-ai-section hidden">
<div class="kt-ai-wrap" data-width="narrow">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--kt-ai-space-4);">
<div class="timer-badge" id="timer">
⏱️ <span id="timer-value">00:00</span>
</div>
<div style="color: var(--kt-ai-fg-muted);">Сұрақ <span id="q-current">1</span> / <span id="q-total">52</span></div>
</div>
<div class="progress-bar">
<div class="progress-fill" id="progress"></div>
</div>
<div class="kt-ai-card question-card fade-in">
<h2 id="question-text" style="margin-bottom: var(--kt-ai-space-5); font-size: var(--kt-ai-text-xl);">Сұрақ мәтіні</h2>
<div class="options-grid" id="options-container"></div>
<div id="answer-feedback" class="answer-feedback hidden"></div>
</div>
<div style="display: flex; gap: var(--kt-ai-space-3); justify-content: space-between; margin-top: var(--kt-ai-space-6);">
<button class="kt-ai-btn" data-variant="ghost" id="prev-btn" onclick="prevQuestion()">← Артқа</button>
<button class="kt-ai-btn" data-variant="primary" id="next-btn" onclick="nextQuestion()">Алға →</button>
</div>
</div>
</section>
<section id="result-section" class="kt-ai-section hidden">
<div class="kt-ai-wrap" data-width="narrow">
<div class="kt-ai-card" style="text-align: center">
<h2>Тестілеу аяқталды!</h2>
<div class="stats-grid">
<div class="stat-card">
<div class="stat-value" id="correct-count">0</div>
<div class="stat-label">Дұрыс жауап</div>
</div>
<div class="stat-card">
<div class="stat-value" id="wrong-count">0</div>
<div class="stat-label">Қате жауап</div>
</div>
<div class="stat-card">
<div class="stat-value" id="percentage">0%</div>
<div class="stat-label">Нәтиже</div>
</div>
</div>
<div class="score-display" id="score">0 / 52</div>
<p id="score-message" style="color: var(--kt-ai-fg-muted); margin-bottom: var(--kt-ai-space-6); font-size: var(--kt-ai-text-lg);"></p>
<div class="kt-ai-hero-actions">
<button class="kt-ai-btn" data-variant="primary" data-size="lg" onclick="showStartScreen()">Қайта тапсыру</button>
<a class="kt-ai-btn" data-variant="ghost" data-size="lg" href="index.html" style="margin-left: var(--kt-ai-space-3);">Басқа тест</a>
</div>
</div>
</div>
</section>
<footer class="kt-ai-wrap kt-ai-pagefoot">
<span>ҰБТ 2027 жыл | Айбек Бахытжанұлы</span>
<span class="kt-ai-spacer"></span>
<span>Сәттілік тілейміз!</span>
</footer>
<script>
const QUESTIONS = [
{ q: "Түргештер VI ғасырда қай мемлекеттің құрамында болды?", options: ["Шығыс Түрік қағанаты", "Батыс Түрік қағанаты", "Түрікмен мемлекеті", "Қарлұқ қағанаты"], correct: 1 },
{ q: "Түргештер Жетісуда өз саяси үстемдігін қай жылы орнатты?", options: ["603 жылы", "704 жылы", "715 жылы", "756 жылы"], correct: 1 },
{ q: "Түргештер негізінен қай аймақта қоныстанды?", options: ["Сырдария мен Әмудария аралығы", "Ертіс пен Есіл аралығы", "Іле мен Шу өзендерінің аралығы", "Еділ мен Жайық аралығы"], correct: 2 },
{ q: "Түргештер қандай екі топқа бөлінді?", options: ["Ақ және көк түргештер", "Сары және қара түргештер", "Қызыл және ақ түргештер", "Көк және қара түргештер"], correct: 1 },
{ q: "Шу түргештері қалай аталды?", options: ["Қара түргештер", "Ақ түргештер", "Сары түргештер", "Көк түргештер"], correct: 2 },
{ q: "Іле түргештері қалай аталды?", options: ["Сары түргештер", "Қара түргештер", "Ақ түргештер", "Көк түргештер"], correct: 1 },
{ q: "Түргештер әулетінің негізін қалаған қаған кім?", options: ["Сұлық", "Құтайба ибн Мүсілім", "Үшлік", "Махмұд Қашғари"], correct: 2 },
{ q: "Үшлік қағанның билік құрған жылдары:", options: ["680–690 жж.", "704–706 жж.", "715–738 жж.", "740–756 жж."], correct: 1 },
{ q: "Үшлік елді неше әкімшілік аймаққа бөлді?", options: ["10", "15", "20", "25"], correct: 2 },
{ q: "Үшлік бөлген әрбір әкімшілік аймақ қанша әскер шығарды?", options: ["5 000", "6 000", "7 000", "10 000"], correct: 2 },
{ q: "Үшлік қағанның бас ордасы қай қала болды?", options: ["Тараз", "Суяб", "Күнгіт", "Бұхара"], correct: 1 },
{ q: "Суяб қаласы қай өзеннің бойында орналасқан еді?", options: ["Іле", "Ертіс", "Шу", "Сырдария"], correct: 2 },
{ q: "Түргештердің екінші ордасы қай қалада орналасты?", options: ["Тараз", "Суяб", "Күнгіт", "Атлах"], correct: 2 },
{ q: "Күнгіт қаласы қай өзеннің бойында орналасқан?", options: ["Іле", "Шу", "Талас", "Сырдария"], correct: 0 },
{ q: "Түргеш қағанаты тарихындағы әйгілі билеушілерді көрсетіңіз.", options: ["Үшлік пен Сұлық", "Құтайба мен Сұлық", "Махмұд пен Үшлік", "Бумын мен Істеми"], correct: 0 },
{ q: "Түргештер қай билеушілерінің тұсында күшейіп, Жетісудағы ең қуатты мемлекетке айналды?", options: ["Үшлік пен Сұлықтың", "Құтайба мен Сұлықтың", "Махмұд Қашғари мен Үшліктің", "Қытай императорларының"], correct: 0 },
{ q: "Түргештердің оңтүстік-батыстағы басты қарсыласы кім болды?", options: ["Қарлұқтар", "Қытайлар", "Арабтар", "Соғдылар"], correct: 2 },
{ q: "Түргештер оңтүстік-шығыста кімдердің басқыншылығына қарсы тұрды?", options: ["Арабтардың", "Қытайлардың", "Қарлұқтардың", "Соғдылардың"], correct: 1 },
{ q: "Түргештерге шығыстан қандай мемлекет қауіп төндірді?", options: ["Батыс Түрік қағанаты", "Шығыс Түрік қағанаты", "Қарлұқ қағанаты", "Араб халифаты"], correct: 1 },
{ q: "Арабтар Орталық Азияға басқыншылық жорықтарын қай ғасырда бастады?", options: ["VI ғасырдың бірінші жартысында", "VI ғасырдың соңында", "VII ғасырдың екінші жартысында", "VIII ғасырдың соңында"], correct: 2 },
{ q: "Үшлік 706 жылы кімдерге көмек беруге тырысты?", options: ["Қытайларға", "Қарлұқтарға", "Арабтарға", "Соғдыларға"], correct: 3 },
{ q: "Түркі-соғды одағы араб әскерлеріне қай жерде соққы берді?", options: ["Тараз түбінде", "Бұхара түбінде", "Атлах түбінде", "Суяб түбінде"], correct: 1 },
{ q: "Бұхара түбіндегі шайқаста араб әскерлерінің қолбасшысы кім болды?", options: ["Сұлық", "Үшлік", "Құтайба ибн Мүсілім", "Махмұд Қашғари"], correct: 2 },
{ q: "Құтайба ибн Мүсілім одақтастар арасындағы қандай жағдайды пайдаланды?", options: ["Экономикалық дағдарысты", "Келісімшартты", "Келіспеушілікті", "Табиғи апатты"], correct: 2 },
{ q: "Сыртқы басқыншылармен белсенді күрес қай қағанның есімімен байланысты?", options: ["Үшлік", "Сұлық", "Құтайба", "Махмұд"], correct: 1 },
{ q: "Сұлық қаған қай жылдары билік құрды?", options: ["704–706 жж.", "706–715 жж.", "715–738 жж.", "740–756 жж."], correct: 2 },
{ q: "Сұлық қаған тұсында түргештердің ордасы қай қала болды?", options: ["Суяб", "Күнгіт", "Тараз", "Бұхара"], correct: 2 },
{ q: "Сұлық қағанның негізгі жетістіктерінің бірі:", options: ["Түргеш мемлекетін әлсіретуі", "Мемлекеттің бұрынғы қуатын қалпына келтіруі", "Қытайға бағынуы", "Арабтармен одақ құруы"], correct: 1 },
{ q: "Сұлықтың дипломатиялық және әскери шаралары қандай қауіптің алдын алды?", options: ["Қарлұқтардың қауіпін", "Соғдылардың қауіпін", "Қытай тарапынан төнген қауіпті", "Арабтардың қауіпін"], correct: 2 },
{ q: "Арабтар Сұлық қағанға қандай лақап ат қойды?", options: ["Жауынгер", "Сүзеген", "Батыр", "Жеңімпаз"], correct: 1 },
{ q: "Сүзеген деген лақап ат араб тілінде қалай аталды?", options: ["Әбу Музахим", "Әбу Насыр", "Әбу Әли", "Ибн Мүсілім"], correct: 0 },
{ q: "Сұлық қайтыс болғаннан кейін қай мемлекет Жетісуга басқыншылық саясатын қайта бастады?", options: ["Араб халифаты", "Қарлұқ қағанаты", "Қытай империясы", "Батыс Түрік қағанаты"], correct: 2 },
{ q: "Қытай әскерлері Таразды қай жылы басып алып, тонады?", options: ["704 жылы", "715 жылы", "740 жылы", "751 жылы"], correct: 2 },
{ q: "740 жылы Қытай әскерлері қай түргеш орталығын қиратты?", options: ["Таразды", "Суябты", "Күнгітті", "Бұхараны"], correct: 1 },
{ q: "Атлах шайқасы қай жылы болды?", options: ["740 жылы", "745 жылы", "751 жылы", "756 жылы"], correct: 2 },
{ q: "Атлах шайқасы қай қаланың маңында болды?", options: ["Суяб", "Тараз", "Бұхара", "Күнгіт"], correct: 1 },
{ q: "Атлах шайқасында кімдер соғысты?", options: ["Түргештер мен соғдылар", "Арабтар мен қытайлар", "Қарлұқтар мен соғдылар", "Түріктер мен арабтар"], correct: 1 },
{ q: "Атлах шайқасында түргештер мен қарлұқтар қай жақты қолдады?", options: ["Қытайларды", "Арабтарды", "Соғдыларды", "Шығыс Түріктерді"], correct: 1 },
{ q: "Атлах шайқасы қанша күнге созылды?", options: ["3 күн", "4 күн", "5 күн", "7 күн"], correct: 2 },
{ q: "Атлах шайқасының нәтижесінде қандай оқиға болды?", options: ["Араб әскері толық талқанданды", "Қытай әскері толық талқанданды", "Түргештер жеңілді", "Соғдылар Жетісудан кетті"], correct: 1 },
{ q: "Атлах шайқасының тарихи маңыздарының бірін көрсетіңіз.", options: ["Қытайлар Жетісудан қуылды", "Түргештер Қытайға бағынды", "Арабтар Жетісуды тастап кетті", "Қарлұқтар Орталық Азиядан кетті"], correct: 0 },
{ q: "Атлах шайқасынан кейін түркілер арасында не кеңінен тарала бастады?", options: ["Буддизм", "Христиандық", "Ислам мәдениеті", "Конфуцийлік"], correct: 2 },
{ q: "Түргеш мемлекеті қай жылы құлды?", options: ["740 жылы", "751 жылы", "756 жылы", "760 жылы"], correct: 2 },
{ q: "Түргеш мемлекетінің құлауына әсер еткен негізгі себептердің бірі:", options: ["Соғдылардың толық жеңісі", "Қытай және арабтармен соғыстар", "Исламның таралуы", "Сауданың дамуы"], correct: 1 },
{ q: "Соғдылардың Жетісуга қоныс аударуының негізгі себептерінің бірін В.В. Бартольд қалай түсіндірді?", options: ["Әскери міндеткерлік", "Сауда", "Мал шаруашылығының дамуы", "Түргештердің арнайы шақыруы"], correct: 1 },
{ q: "Соғдылардың Жетісуга қоныс аударуының себептерінің бірі қандай болды?", options: ["Қытай империясының шақыруы", "Соғды еліндегі тап күресінің өршуі", "Түргештердің соғысты тоқтатуы", "Қарлұқтардың қысымы"], correct: 1 },
{ q: "Соғды диқандары мен көпестері не себепті Жетісуга көшіп кетті?", options: ["Сауда жолдарын кеңейту үшін ғана", "Түргештерден қорғану үшін", "Билеушілердің қысымына шыдамағандықтан", "Қытай әскеріне қосылу үшін"], correct: 2 },
{ q: "Соғдылардың Жетісуга қоныс аударуының үшінші себебі неге байланысты болды?", options: ["Арабтардың Орталық Азияны жаулап алу әрекетіне", "Қытайлардың Жетісуды басып алуына", "Түргештердің әлсіреуіне", "Қарлұқтардың көшуіне"], correct: 0 },
{ q: "Соғдылардың Жетісуга қоныс аударуы қай салалардың дамуына елеулі із қалдырды?", options: ["Әскери өнер мен теңіз саудасына", "Егіншілік және қала мәдениетіне", "Мал шаруашылығы мен аңшылыққа", "Кеме жасау мен балық аулауға"], correct: 1 },
{ q: "Жетісуга қоныс аударған соғдылардың кейінгі тағдыры қалай сипатталады?", options: ["Қытайланып кетті", "Арабтанып кетті", "Түркіленіп кетті", "Үнділеніп кетті"], correct: 2 },
{ q: "Соғдылар Жетісуга қай ғасырларда қоныс аударды?", options: ["IV–V ғасырларда", "V–VI ғасырларда", "VI–VIII ғасырларда", "VIII–IX ғасырларда"], correct: 2 },
{ q: "Соғдылар түркі тілді ортаға түскеннен кейін нені қабылдады?", options: ["Қытай тілін және мәдениетін", "Жергілікті тұрғындардың тілін, мәдениеті мен әдет-ғұрпын", "Арабтардың діни дәстүрін", "Парсылардың әскери жүйесін"], correct: 1 },
{ q: "Махмұд Қашғари соғдылар туралы қандай пікір жазған?", options: ["Соғдылардың барлығы араб тілінде сөйлегенін", "Соғдылардың түркі тілін қабылдамағанын", "Соғдылар арасында түркіше сөйлемейтіндердің болмағанын", "Соғдылардың Жетісудан көшіп кеткенін"], correct: 2 }
];
let currentQuestion = 0;
let answers = {};
let quizStarted = false;
let timerInterval = null;
let seconds = 0;
let userName = '';
let answered = false;
let shuffledQuestions = [];
function shuffleArray(array) {
const shuffled = [...array];
for (let i = shuffled.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
}
return shuffled;
}
function checkLogin() {
const savedName = localStorage.getItem('ebtUserName');
if (savedName) {
userName = savedName;
document.getElementById('login-section').classList.add('hidden');
document.getElementById('welcome-section').classList.remove('hidden');
document.getElementById('user-display-name').textContent = userName;
document.getElementById('header-user-name').textContent = userName;
}
}
function showStartScreen() {
document.getElementById('quiz-section').classList.add('hidden');
document.getElementById('result-section').classList.add('hidden');
document.querySelector('.kt-ai-hero').classList.remove('hidden');
quizStarted = false;
stopTimer();
checkLogin();
}
function startTimer() {
seconds = 0;
timerInterval = setInterval(() => {
seconds++;
const mins = Math.floor(seconds / 60);
const secs = seconds % 60;
document.getElementById('timer-value').textContent =
(mins < 10 ? '0' : '') + mins + ':' + (secs < 10 ? '0' : '') + secs;
const badge = document.getElementById('timer');
if (seconds > 600) {
badge.className = 'timer-badge danger';
} else if (seconds > 300) {
badge.className = 'timer-badge warning';
}
}, 1000);
}
function stopTimer() {
if (timerInterval) {
clearInterval(timerInterval);
timerInterval = null;
}
document.getElementById('timer').className = 'timer-badge';
}
function startQuiz() {
const nameInput = document.getElementById('user-name');
if (nameInput && nameInput.value.trim()) {
userName = nameInput.value.trim();
localStorage.setItem('ebtUserName', userName);
document.getElementById('user-display-name').textContent = userName;
document.getElementById('header-user-name').textContent = userName;
}
if (!userName) {
alert('Аты-жөніңізді енгізіңіз!');
return;
}
document.querySelector('.kt-ai-hero').classList.add('hidden');
document.getElementById('result-section').classList.add('hidden');
document.getElementById('quiz-section').classList.remove('hidden');
quizStarted = true;
currentQuestion = 0;
answers = {};
seconds = 0;
shuffledQuestions = shuffleArray(QUESTIONS);
startTimer();
document.getElementById('q-total').textContent = shuffledQuestions.length;
showQuestion();
}
function showQuestion() {
const q = shuffledQuestions[currentQuestion];
document.getElementById('q-current').textContent = currentQuestion + 1;
document.getElementById('question-text').textContent = q.q;
const container = document.getElementById('options-container');
container.innerHTML = '';
const feedback = document.getElementById('answer-feedback');
feedback.className = 'answer-feedback hidden';
answered = answers[currentQuestion] !== undefined;
const letters = ['A', 'B', 'C', 'D'];
q.options.forEach((opt, i) => {
const btn = document.createElement('button');
btn.className = 'kt-ai-btn option-btn';
btn.setAttribute('data-selected', answers[currentQuestion] === i);
btn.innerHTML = `<span style="font-weight: bold; margin-right: 8px;">${letters[i]})</span> ${opt}`;
btn.onclick = () => selectAnswer(i);
if (answered) {
btn.disabled = true;
if (i === q.correct) {
btn.classList.add('correct');
} else if (answers[currentQuestion] === i && i !== q.correct) {
btn.classList.add('wrong');
}
} else {
if (answers[currentQuestion] === i) {
btn.style.borderColor = 'var(--kt-ai-primary)';
btn.style.background = 'var(--kt-ai-bg-soft)';
} else {
btn.style.borderColor = 'var(--kt-ai-border)';
btn.style.background = 'var(--kt-ai-card-bg)';
}
}
container.appendChild(btn);
});
if (answered) {
const isCorrect = answers[currentQuestion] === q.correct;
feedback.textContent = isCorrect ? '✅ Дұрыс!' : '❌ Қате! Дұрыс жауап: ' + letters[q.correct] + ') ' + q.options[q.correct];
feedback.className = 'answer-feedback ' + (isCorrect ? 'correct' : 'wrong');
feedback.classList.remove('hidden');
}
updateProgress();
updateButtons();
}
function selectAnswer(index) {
if (answered) return;
answers[currentQuestion] = index;
showQuestion();
}
function nextQuestion() {
if (currentQuestion < QUESTIONS.length - 1) {
currentQuestion++;
showQuestion();
} else {
showResults();
}
}
function prevQuestion() {
if (currentQuestion > 0) {
currentQuestion--;
answered = false;
showQuestion();
}
}
function updateProgress() {
const progress = ((currentQuestion + 1) / QUESTIONS.length) * 100;
document.getElementById('progress').style.width = progress + '%';
}
function updateButtons() {
document.getElementById('prev-btn').style.visibility = currentQuestion === 0 ? 'hidden' : 'visible';
const nextBtn = document.getElementById('next-btn');
nextBtn.textContent = currentQuestion === QUESTIONS.length - 1 ? 'Аяқтау' : 'Алға →';
}
function showResults() {
stopTimer();
let correct = 0;
let wrong = 0;
shuffledQuestions.forEach((q, i) => {
if (answers[i] === q.correct) {
correct++;
} else {
wrong++;
}
});
const percentage = Math.round((correct / shuffledQuestions.length) * 100);
document.getElementById('quiz-section').classList.add('hidden');
document.getElementById('result-section').classList.remove('hidden');
document.getElementById('correct-count').textContent = correct;
document.getElementById('wrong-count').textContent = wrong;
document.getElementById('percentage').textContent = percentage + '%';
document.getElementById('score').textContent = `${correct} / ${QUESTIONS.length}`;
let message = '';
if (percentage >= 90) message = 'Өте жақсы! ҰБТ-ға дайынсың 🎉';
else if (percentage >= 70) message = 'Жақсы нәтиже! 👍';
else if (percentage >= 50) message = 'Жаман емес, бірақ жақсартуға болады 👌';
else message = 'Әлі де дайындалу керек 📚';
document.getElementById('score-message').textContent = message + ' | Уақыт: ' + document.getElementById('timer-value').textContent;
}
document.addEventListener('keydown', (e) => {
if (!quizStarted) return;
if (e.key === 'ArrowRight' || e.key === ' ') nextQuestion();
if (e.key === 'ArrowLeft') prevQuestion();
});
checkLogin();
</script>
</body>
</html>