sozday-dlya-menya-kuiz-sayt/qarahan-memleketi.html

402 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">45</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 / 45</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: "Қарахан мемлекеті туралы деректер көп кездесетін авторлар:", options: ["Қытай және үнді авторлары", "Араб және парсы авторлары", "Грек және рим авторлары", "Орыс және моңғол авторлары"], correct: 1 },
{ q: "Қарахан әулетінің шығу тегі қай тайпалармен байланысты?", options: ["Қыпшақтармен", "Наймандармен", "Қашғарияда өмір сүрген қарлұқтармен", "Керейлермен"], correct: 2 },
{ q: "940 жылы Қашғарияның қарлұқ тайпалары қай қаланы басып алды?", options: ["Бұхараны", "Самарқандты", "Таразды", "Баласағұнды"], correct: 3 },
{ q: "940 жылы Баласағұнды басып алғаннан кейін жаңа әулеттің негізін қалаған билеуші:", options: ["Сатұқ Боғра хан", "Мұса қаған", "Күшлік хан", "Мұхаммед Хорезм шахы"], correct: 0 },
{ q: "Сатұқ Боғра хан Қарахан мемлекетін ресми түрде қай жылы құрды?", options: ["940 жылы", "942 жылы", "960 жылы", "999 жылы"], correct: 1 },
{ q: "Қарахан мемлекетінің атауы болжам бойынша кімнің есімімен байланысты?", options: ["Сатұқ Боғра ханның", "Мұса қағанның", "Қараханның", "Күшліктің"], correct: 2 },
{ q: "999 жылы қарахандықтар қай мемлекетті талқандады?", options: ["Газнауилер мемлекетін", "Қыпшақ хандығын", "Қарақытай мемлекетін", "Самани мемлекетін"], correct: 3 },
{ q: "Қарахан мемлекеті мен Газнауилер арасындағы шекара болған өзен:", options: ["Сырдария", "Ертіс", "Әмудария", "Іле"], correct: 2 },
{ q: "Қарахан мемлекетінің батыстағы негізгі иелігі:", options: ["Қашғар", "Мауараннахр", "Алтай", "Моңғолия"], correct: 1 },
{ q: "Қарахан мемлекетінің шығыстағы иелігі:", options: ["Қашғар", "Бұхара", "Самарқанд", "Мауараннахр"], correct: 0 },
{ q: "Қарахан мемлекетінде билік қай екі тайпалық топтың ақсүйектері арасында бөлінді?", options: ["Қыпшақ пен керей", "Жікіл мен яғма", "Найман мен қоңырат", "Үйсін мен дулат"], correct: 1 },
{ q: "Қарахан мемлекетінде қалыптасқан билік жүйесі қалай аталды?", options: ["Абсолюттік монархия", "Әскери демократия", "Тең құқықты қосарлы жүйе", "Республикалық жүйе"], correct: 2 },
{ q: "Қарахан мемлекетінің шығыс бөлігінің қағаны қандай атақ иеленді?", options: ["Боғра Қара қаған", "Арслан Қара қаған", "Ханбалық қаған", "Тархан қаған"], correct: 1 },
{ q: "Шығыс бөліктің ордасы орналасқан қалалар:", options: ["Бұхара мен Самарқанд", "Тараз бен Испиджаб", "Қашғар мен Баласағұн", "Отырар мен Сауран"], correct: 2 },
{ q: "Қарахан мемлекетінің батыс бөлігінің қағаны қандай атаққа ие болды?", options: ["Арслан Қара қаған", "Боғра Қара қаған", "Ұлы қаған", "Шад қаған"], correct: 1 },
{ q: "Батыс бөліктің ордасы бастапқыда қай қалада орналасты?", options: ["Бұхарада", "Қашғарда", "Баласағұнда", "Таразда"], correct: 0 },
{ q: "Кейін Батыс Қарахан бөлігінің ордасы қай қалаға көшірілді?", options: ["Қашғарға", "Самарқандқа", "Баласағұнға", "Таразға"], correct: 1 },
{ q: "Қарахан мемлекетінің шығыс бөлігі қай тайпамен байланысты болды?", options: ["Яғма", "Қыпшақ", "Жікіл", "Қарлұқ"], correct: 2 },
{ q: "Қарахан мемлекетінің батыс бөлігі қай тайпамен байланысты болды?", options: ["Жікіл", "Яғма", "Қыпшақ", "Найман"], correct: 1 },
{ q: "Қарахан мемлекетінде қызметі үшін жер үлесін алған адамдар қалай аталды?", options: ["Вақфтар", "Иқтадарлар", "Тархандар", "Қағандар"], correct: 1 },
{ q: "Қызметі үшін берілген жер үлесі қалай аталды?", options: ["Мүлік", "Вақф", "Иқта", "Ұлыс"], correct: 2 },
{ q: "Қарахан мемлекетінде дінбасыларының жер меншігі қалай аталды?", options: ["Иқта", "Мүлік", "Вақф (уақып)", "Сойырғал"], correct: 2 },
{ q: "Қарахандықтардағы жекеменшік жер иелену түрі:", options: ["Вақф", "Мүлік", "Иқта", "Ұлыс"], correct: 1 },
{ q: "Иқталық жүйенің қалыптасуы қандай үдеріске ықпал етті?", options: ["Құл иеленушіліктің жойылуына", "Феодалдық қатынастардың дамуына", "Сауда қатынастарының тоқтауына", "Көшпелі шаруашылықтың жойылуына"], correct: 1 },
{ q: "Иқталық жүйе нәтижесінде қандай әлеуметтік топ қалыптасты?", options: ["Жаңа ақсүйек қауымы", "Құлдар қауымы", "Қолөнершілер қауымы", "Діни қызметкерлер қауымы"], correct: 0 },
{ q: "Иқталық жүйенің әлсіреткен саяси салдарының бірі:", options: ["Орталық биліктің күшеюі", "Қаған билігінің толық орнығуы", "Жеке жер иелерінің қағандарға бағынбауы", "Мемлекеттің аумағының кеңеюі"], correct: 2 },
{ q: "Қарахандықтарда исламның мемлекеттік дінге айналуымен байланысты билеуші:", options: ["Сатұқ Боғра хан", "Күшлік хан", "Мұса қаған", "Мұхаммед Хорезм шахы"], correct: 2 },
{ q: "Мұса қаған исламды мемлекеттік дін деп қай жылы жариялады?", options: ["940 жылы", "942 жылы", "960 жылы", "999 жылы"], correct: 2 },
{ q: "Мұса қаған исламды мемлекеттік дін деп қай қалада жариялады?", options: ["Баласағұнда", "Таразда", "Қашғарда", "Самарқандта"], correct: 1 },
{ q: "Қарахандықтардың ислам дінін қабылдауына себептердің бірі:", options: ["Қытаймен байланысты тоқтату", "Билікті нығайту және мұсылман елдерімен байланыстарды кеңейту", "Көшпелі өмір салтынан толық бас тарту", "Қыпшақтарды бағындыру"], correct: 1 },
{ q: "Қарахан мемлекетінің әлсіреуін пайдаланған көшпелі тайпалар:", options: ["Қыпшақтар", "Наймандар", "Қидандар (қарақытайлар)", "Керейлер"], correct: 2 },
{ q: "XII ғасырдың бас кезінен бастап Жетісу кімдердің шапқыншылығына ұшырады?", options: ["Қыпшақтардың", "Қарақытайлардың", "Саманилердің", "Газнауилердің"], correct: 1 },
{ q: "XI ғасырдың 30-жылдарының соңында Қарахан мемлекеті қандай бөліктерге бөлінді?", options: ["Солтүстік және Оңтүстік", "Орталық және Шығыс", "Мауараннахрдағы Батыс және Жетісу мен Қашғардағы Шығыс", "Жетісу және Сырдария"], correct: 2 },
{ q: "1210 жылы Шығыс Қарахан әулетін талқандаған:", options: ["Мұса қаған", "Күшлік хан", "Сатұқ Боғра хан", "Мұхаммед Хорезм шахы"], correct: 1 },
{ q: "1212 жылы Батыс Қарахан әулетінің соңғы өкілін тақтан тайдырған:", options: ["Найман ханы Күшлік", "Сатұқ Боғра хан", "Хорезм шахы Мұхаммед", "Мұса қаған"], correct: 2 },
{ q: "Қарахан мемлекетінің солтүстік шекарасы Қыпшақ хандығымен қай нысандардың бойымен өтті?", options: ["Арал және Каспий теңіздері", "Балқаш және Алакөл көлдері", "Іле және Ертіс өзендері", "Сырдария және Әмудария өзендері"], correct: 1 },
{ q: "Қарахан мемлекетінің Шығыс бөлігіндегі жоғары билеуші мен Батыс бөлігіндегі кіші билеушінің дұрыс сәйкестігін анықтаңыз.", options: ["Арслан Қара қаған — Батыс, Боғра Қара қаған — Шығыс", "Боғра Қара қаған — Шығыс, Арслан Қара қаған — Батыс", "Арслан Қара қаған — Шығыс, Боғра Қара қаған — Батыс", "Екеуі де Шығыс бөлікті басқарды"], correct: 2 },
{ q: "Қарахан мемлекетінде иқта иеленушілерінің негізгі құқықтарының бірі:", options: ["Мемлекет атынан соғыс жариялау", "Аймақ немесе қала тұрғындарынан салық жинау", "Қағанды сайлау", "Мемлекеттік дінді өзгерту"], correct: 1 },
{ q: "Жеке жер иелерінің күшеюі Қарахан мемлекетінде қандай жағдайға әкелді?", options: ["Орталық биліктің нығаюына", "Мемлекеттің аумағының ұлғаюына", "Өзара қырқыс пен саяси тұрақсыздыққа", "Ислам дінінің жойылуына"], correct: 2 },
{ q: "Кейбір жеке жер иелерінің тәуелсіздікке ұмтылғанын көрсететін әрекет:", options: ["Өз теңгелерін шығарып, дипломатиялық байланыстар жүргізуі", "Исламды мемлекеттік дін деп жариялауы", "Қарақытайларға қарсы көтеріліс бастауы", "Баласағұнды астана етуі"], correct: 0 },
{ q: "Төмендегі оқиғалардың дұрыс хронологиялық ретін анықтаңыз:\n\n1. Мұса исламды мемлекеттік дін деп жариялады.\n2. Қарахандықтар Самани мемлекетін талқандады.\n3. Баласағұнды қарлұқтар басып алды.\n4. Шығыс Қарахан әулеті талқандалды.", options: ["3 → 1 → 2 → 4", "1 → 3 → 2 → 4", "3 → 2 → 1 → 4", "2 → 3 → 1 → 4"], correct: 0 },
{ q: "Қарақытайлар Қарахан билеушілерін өздеріне тәуелді еткеннен кейін қандай саясат ұстанды?", options: ["Қарахан мемлекетін толығымен жойды", "Жергілікті дін мен мәдениетке тыйым салды", "Тек салық алумен шектеліп, жергілікті мемлекеттік құрылымды сақтады", "Барлық халықты көшіріп жіберді"], correct: 2 },
{ q: "Қарақытайлардың Қарахан мемлекетіне қатысты саясатының ерекшелігі:", options: ["Мұрагерлік қаған билігін сақтауы", "Исламды мемлекеттік дін ретінде жоюы", "Қарахан әулетін толықтай биліктен кетіруі", "Барлық қалаларды қиратуы"], correct: 0 },
{ q: "Екі Қарахан қағанаты арасындағы шекара қай өзен бойымен өтті?", options: ["Ертіс", "Іле", "Сырдария", "Әмудария"], correct: 2 },
{ q: "Қарахан мемлекетінің саяси құлдырауын білдіретін оқиғалар дұрыс көрсетілген қатарды анықтаңыз.", options: ["Саманилердің күшеюі → Қыпшақтардың шапқыншылығы", "Қарақытай үстемдігі → Шығыс және Батыс әулеттерінің жойылуы", "Исламның таралуы → Баласағұнның алынуы", "Иқталық жүйенің қалыптасуы → мемлекеттің күшеюі"], correct: 1 }
];
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>