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

402 lines
29 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: "Қидандар 907–1125 жылдары құрған мемлекет қалай аталды?", options: ["Қарақытай", "Ляо", "Қарахан", "Хорезмшах"], correct: 1 },
{ q: "Қидандар жазба деректерде қандай тайпалар ретінде сипатталды?", options: ["Түркі тілдес", "Иран тілдес", "Монғол тілдес", "Славян тілдес"], correct: 2 },
{ q: "Ляо мемлекеті қай жылы талқандалды?", options: ["907 жылы", "1125 жылы", "1128 жылы", "1141 жылы"], correct: 1 },
{ q: "1125 жылы Ляо мемлекетін кімдер талқандады?", options: ["Наймандар мен керейлер", "Хорезмшахтар мен қарахандар", "Қытайдың біріккен күштері мен олардың одақтастары", "Салжұқтар мен моңғолдар"], correct: 2 },
{ q: "Қидандардың батысқа қарай жылжуына кім басшылық етті?", options: ["Мұхаммед Хорезмшах", "Күшлік хан", "Елюй Даши", "Шыңғыс хан"], correct: 2 },
{ q: "Қидандар батысқа жылжып, қай өңірге енді?", options: ["Сырдарияның төменгі ағысына", "Жетісудың солтүстік-шығысына", "Маңғыстауға", "Еділ бойына"], correct: 1 },
{ q: "Жергілікті түркі халқымен араласқан қидандар қандай атаумен белгілі болды?", options: ["Қыпшақтар", "Қарахандар", "Қарақытайлар", "Наймандар"], correct: 2 },
{ q: "1128 жылы Баласағұн билеушісі қидандарды не үшін шақырды?", options: ["Қытайға қарсы соғысу үшін", "Бағынбаған тайпаларға қарсы одақтас ретінде", "Сауда келісімін жасау үшін", "Хорезмшахтарға қарсы көмек сұрау үшін"], correct: 1 },
{ q: "Қидандар 1128 жылы қандай қаланы басып алды?", options: ["Бұхара", "Самарқан", "Баласағұн", "Отырар"], correct: 2 },
{ q: "Қарақытай мемлекеті қай жылы Жетісуда құрылды?", options: ["1125 жылы", "1128 жылы", "1141 жылы", "1143 жылы"], correct: 1 },
{ q: "Қарақытай мемлекетінің негізін қалаған билеуші:", options: ["Күшлік хан", "Мұхаммед Хорезмшах", "Елюй Даши", "Шыңғыс хан"], correct: 2 },
{ q: "Қарақытай мемлекетінің ордасы мәтінде қалай көрсетілген?", options: ["Ғұзорда", "Самарқанда", "Бұхарада", "Баласағұнда"], correct: 0 },
{ q: "1141 жылы болған Қатуан шайқасында Елюй Даши кімдердің әскерін талқандады?", options: ["Найман-қыпшақ әскерін", "Біріккен салжұқ-қарахан әскерін", "Қытай-моңғол әскерін", "Хорезмшах-найман әскерін"], correct: 1 },
{ q: "Қатуан шайқасы болған жылды анықтаңыз.", options: ["1128 жыл", "1141 жыл", "1143 жыл", "1212 жыл"], correct: 1 },
{ q: "Қарақытайлар басып алған аймақтарды көрсетіңіз.", options: ["Жетісу, Мауараннахр, Шығыс Түркістан", "Еділ бойы, Қырым, Кавказ", "Моңғолия, Қытай, Корея", "Дешті Қыпшақ, Сібір, Еділ бойы"], correct: 0 },
{ q: "Қарақытайлар Хорезмшахтар мемлекетінің билеушісін жеңгеннен кейін не істетті?", options: ["Мемлекетін жойды", "Оны өз әскеріне қосты", "Жыл сайын алым-салық төлеуге мәжбүр етті", "Баласағұнға көшірді"], correct: 2 },
{ q: "Қарақытайлар Қарахан әулетіне қатысты қандай саясат жүргізді?", options: ["Қарахан әулетін толық жойды", "Қарахан әулетін биліктен кетіріп, елді тікелей басқарды", "Оларды вассал етіп, алым-салық алумен шектелді", "Қарахан әулетімен одақ құрды"], correct: 2 },
{ q: "Қарақытайлар Қарахандардың басқару жүйесіне қатысты қандай саясат ұстанды?", options: ["Басқару жүйесін түбегейлі өзгертті", "Басқару жүйесіне өзгеріс енгізбеді", "Барлық билікті дінбасыларға берді", "Әскери басқару жүйесін енгізді"], correct: 1 },
{ q: "Қарақытай билеушісінің лауазымы қалай аталды?", options: ["Қаған", "Хан", "Гурхан", "Сұлтан"], correct: 2 },
{ q: "«Гурхан» атауының мағынасы қандай?", options: ["Ұлы қолбасшы", "Хандардың ханы", "Ел билеушісі", "Құдайдың елшісі"], correct: 1 },
{ q: "Гурханның бас ордасы қай жерде орналасты?", options: ["Іле өзенінің бойында", "Баласағұнға жақын, Шу өзенінің бойында", "Сырдария бойында", "Бұхара қаласында"], correct: 1 },
{ q: "Гурханның салық саясатына қатысты дұрыс тұжырымды анықтаңыз.", options: ["Салықты толық жойды", "Әр отбасынан бір динардан салық алды", "Тек саудагерлерден салық алды", "Әр отбасынан он динардан салық алды"], correct: 1 },
{ q: "Гурхан өз маңайындағыларға енші жер бермеді. Оның басты себебі қандай болды?", options: ["Жер жетіспеді", "Дінге байланысты тыйым салынды", "Өзара қырқыстан және олардың күшейіп кетуінен қауіптенді", "Халықтың наразылығынан қорықты"], correct: 2 },
{ q: "Елюй Даши қай жылы қайтыс болды?", options: ["1141 жылы", "1143 жылы", "1185 жылы", "1212 жылы"], correct: 1 },
{ q: "Елюй Даши қайтыс болғаннан кейін билік кімнің қолына өтті?", options: ["Оның ұлының", "Оның қызының", "Оның жесірінің", "Күшлік ханның"], correct: 2 },
{ q: "Қарақытайларда билікке мұрагерлік ету құқығына кімдер ие болды?", options: ["Тек ер адамдар", "Тек әскербасылар", "Ерлер және билеуші рудың әйелдері", "Тек дінбасылар"], correct: 2 },
{ q: "Қарақытай тарихындағы билікке ие болған әйелдердің бірі кім?", options: ["Елюй Дашидің қызы", "Күшлік ханның қызы", "Мұхаммед Хорезмшахтың әйелі", "Баласағұн билеушісінің қызы"], correct: 0 },
{ q: "XII ғасырдың ортасынан бастап қарақытайлардың салық саясаты қалай өзгерді?", options: ["Салық мөлшерін азайтты", "Салық жинауды тоқтатты", "Ашық тонауға көшті", "Сауда салығын ғана енгізді"], correct: 2 },
{ q: "XII ғасырдың соңында қарақытайлардың қандай діни саясаты күшейді?", options: ["Барлық діндерге тыйым салынды", "Мұсылмандарды қудалау басталды", "Христиандықты міндеттеді", "Буддизмге тыйым салынды"], correct: 1 },
{ q: "Қарақытайлардың Жетісудағы билігінің әлсіреуіне әсер еткен факторды көрсетіңіз.", options: ["Сауданың дамуы", "Бейбіт тұрғындарды тонау және мұсылмандарды ығыстыру", "Қытаймен достық қатынас орнатуы", "Салықтарды жоюы"], correct: 1 },
{ q: "Қарақытайлар соғысып, жеңіліске ұшыраған Хорезмшах билеушісі:", options: ["Елюй Даши", "Күшлік хан", "Мұхаммед", "Шыңғыс хан"], correct: 2 },
{ q: "Қарақытай билеушісін кім тұтқындады?", options: ["Қытай әскерлері", "Күшлік хан және оның одақтастары", "Салжұқтар", "Қарахандар"], correct: 1 },
{ q: "Қарақытай мемлекеті қай жылы өмір сүруін тоқтатты?", options: ["1208 жылы", "1212 жылы", "1218 жылы", "1221 жылы"], correct: 1 },
{ q: "Оқиғалардың дұрыс хронологиялық ретін анықтаңыз:\n\n1. Елюй Дашидің Қатуан шайқасында жеңіске жетуі\n2. Қарақытай мемлекетінің өмір сүруін тоқтатуы\n3. Қидандардың Баласағұнды басып алуы\n4. Ляо мемлекетінің құлауы", options: ["4 – 3 – 1 – 2", "3 – 4 – 1 – 2", "4 – 1 – 3 – 2", "1 – 3 – 4 – 2"], correct: 0 },
{ q: "Қарақытайлардың Жетісуға алғаш қоныстанған кездегі саяси ұстанымы қандай болды?", options: ["Жергілікті билеушілерге қарсы бірден соғыс бастады", "Жергілікті билеушілерге бағынатындықтарын білдірді", "Хорезмшахтарға тәуелді болды", "Қытай билігін мойындады"], correct: 1 },
{ q: "Қарақытайлар бастапқыда Жетісуға қандай мақсатпен шақырылды?", options: ["Сауда жолдарын қорғау үшін", "Қытай әскеріне қарсы күресу үшін", "Бағынбаған тайпаларға қарсы күресуге көмектесу үшін", "Исламды тарату үшін"], correct: 2 },
{ q: "Қарақытайлардың әскерінде қандай өзгеріс жасалды?", options: ["Әскер таратылды", "Әскер тәртібі күшейтілді", "Әскер тек жалдамалылардан құрылды", "Әскер саны қысқартылды"], correct: 1 },
{ q: "Гурханның өкілетті басқарушылары қандай қызмет атқарды?", options: ["Тек әскер басқарды", "Тек сот қызметін атқарды", "Бағыныштыларды бақылап, салық жинады", "Сауда керуендерін басқарды"], correct: 2 },
{ q: "Қарақытайлар қай аймақты басып алғаннан кейін Мауараннахрдың орталық бөлігін де өз құрамына қосты?", options: ["Бұхараны", "Баласағұнды", "Отырарды", "Таразды"], correct: 0 },
{ q: "Қарақытайлардың Қарахандықтарға қатысты саясатының ерекшелігі неде болды?", options: ["Олардың мәдениетін толық жойды", "Басқару жүйесін сақтап, вассалдық тәуелділік орнатты", "Қарахан әулетін бірден жойды", "Барлық жерді жергілікті халыққа бөліп берді"], correct: 1 },
{ q: "Қарақытайлар билігінің соңғы кезеңінде Жетісуда қандай қозғалыс күшейді?", options: ["Мұсылмандардың қозғалысы", "Қытайлықтардың көтерілісі", "Қыпшақтардың қозғалысы", "Саудагерлердің қозғалысы"], correct: 0 },
{ q: "Қарақытайлардың Жетісудағы билігінің әлсіреуіне төмендегі оқиғалардың қайсысы тікелей ықпал етті?", options: ["Халықтың әл-ауқатының көтерілуі", "Бейбіт тұрғындардың тонауға ұшырауы", "Салықтардың жойылуы", "Сауда қатынастарының күшеюі"], correct: 1 },
{ q: "1208 жылы Жетісуға келген Күшлік бастаған наймандарды бұл өңірге не әкелді?", options: ["Хорезмшахтар", "Қарахандар", "Шыңғыс ханның Монғолиядан ығыстыруы", "Қытай билеушілері"], correct: 2 },
{ q: "1208 жылы Күшлік бастаған наймандардың Жетісуға келуінің нәтижесі қандай болды?", 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>