Қарлұқ қағанаты тесті қосылды (35 сұрақ)

This commit is contained in:
Aibek 2026-09-11 18:22:29 +00:00
parent 870f0b08ef
commit beaf2ac2c7

391
qarlyq-kaganaty.html Normal file
View File

@ -0,0 +1,391 @@
<!-- 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">35</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 / 35</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: "VII ғасырдың соңынан бастап қарлұқтар қай мемлекеттің ықпалында болды?", options: ["Батыс Түрік қағанаты", "Шығыс Түрік қағанаты", "Түргеш қағанаты", "Ұйғыр қағанаты"], correct: 1 },
{ q: "Қарлұқтар мекендеген негізгі аймақты көрсетіңіз.", options: ["Алтай мен Балқаш көлі аралығы", "Еділ мен Жайық аралығы", "Арал мен Каспий аралығы", "Сырдария мен Әмудария аралығы"], correct: 0 },
{ q: "Ибн әл-Факих қарлұқтар туралы қандай пікір айтқан?", options: ["«Олар — көне оғыздар»", "«Олар — көне түркілер»", "«Олар — ежелгі арабтар»", "«Олар — қыпшақтар»"], correct: 1 },
{ q: "Ибн әл-Факих қарлұқтар туралы мәлімет қалдырған ғасыр:", options: ["VIII ғасыр", "IX ғасыр", "X ғасыр", "XI ғасыр"], correct: 2 },
{ q: "Біріккен ұйғыр және қарлұқ күштері қай билікті құлатты?", options: ["Түргештердің билігін", "Шығыс түркілердің билігін", "Саманилер билігін", "Қарахандықтардың билігін"], correct: 1 },
{ q: "Орталық Азияда 744–840 жылдары өмір сүрген мемлекет:", options: ["Түргеш қағанаты", "Қарлұқ қағанаты", "Ұйғыр қағанаты", "Қарахан мемлекеті"], correct: 2 },
{ q: "Ұйғыр тайпаларының билеушісі қандай лауазым иеленді?", options: ["Жабғу", "Шад", "Қаған", "Тархан"], correct: 2 },
{ q: "Ұйғыр қағанаты құрамында қарлұқтар көсемінің лауазымы:", options: ["Қаған", "Жабғу", "Елбасы", "Хан"], correct: 1 },
{ q: "Қарлұқтардың ұйғырларға қарсы дербестік үшін күресі немен аяқталды?", options: ["Қарлұқтардың жеңісімен", "Ұйғырлардың жеңілісімен", "Қарлұқтардың жеңілісімен", "Бейбіт келісіммен"], correct: 2 },
{ q: "Қарлұқтар батысқа қарай қай жылы қашты?", options: ["704 жылы", "716 жылы", "746 жылы", "756 жылы"], correct: 2 },
{ q: "746 жылы қарлұқтар қай бағытқа қоныс аударды?", options: ["Шығысқа", "Батысқа", "Солтүстікке", "Оңтүстікке"], correct: 1 },
{ q: "Жетісуға келген қарлұқтар қай тайпалардың қарсылығына кездесті?", options: ["Қыпшақтардың", "Наймандардың", "Оғыздардың", "Керейлердің"], correct: 2 },
{ q: "VIII ғасырдың ортасында қарлұқтар оғыздарды қай бағытқа ығыстырды?", options: ["Іле аңғарына", "Сырдарияның төменгі ағысына", "Ертістің жоғарғы ағысына", "Еділ бойына"], correct: 1 },
{ q: "756 жылы қарлұқтар қай тайпаны Жетісудан ығыстырды?", options: ["Оғыздарды", "Қимақтарды", "Түргештерді", "Қыпшақтарды"], correct: 2 },
{ q: "756 жылғы оқиғаның нәтижесі:", options: ["Қарлұқтар Жетісуда саяси үстемдік орнатты", "Түргештер қайта күшейді", "Ұйғыр қағанаты құрылды", "Саманилер Жетісуды басып алды"], correct: 0 },
{ q: "VIII–X ғасырларда қарлұқ тайпаларының қоныстанған аумағы:", options: ["Жоңғар Алатауынан Сырдарияға дейін", "Алтайдан Еділге дейін", "Каспийден Қара теңізге дейін", "Ертістен Оралға дейін"], correct: 0 },
{ q: "Қарлұқтардың жерін батыстан шығысқа дейін жүріп өтуге қанша уақыт қажет болған?", options: ["10 күн", "20 күн", "30 күн", "40 күн"], correct: 2 },
{ q: "Қарлұқтардың жетекші тайпасы:", options: ["Бұлақ", "Шігіл", "Яғма", "Қаңлы"], correct: 0 },
{ q: "«Худдуд әл-Алам» дерегінде қарлұқтар жерінде қанша қала мен қоныс болғаны көрсетіледі?", options: ["15", "20", "25", "30"], correct: 2 },
{ q: "840 жылы қарлұқтардың қолдауымен Ұйғыр қағанатын кімдер құлатты?", options: ["Саманилер", "Енисей қырғыздары", "Түргештер", "Оғыздар"], correct: 1 },
{ q: "840 жылы қарлұқ жабғуы қандай лауазымды иеленді?", options: ["Хан", "Шад", "Қаған", "Тархан"], correct: 2 },
{ q: "Ұйғырлар мен қарлұқтардың бақталастығы немен аяқталды?", options: ["Ұйғырлардың жеңісімен", "Қарлұқтардың жеңісімен", "Саманилердің жеңісімен", "Бітім жасалуымен"], correct: 1 },
{ q: "Қарлұқ кезеңінде Қазақстан аумағында қандай үрдіс белсенді жүрді?", options: ["Арабтандыру", "Моңғолдандыру", "Түркілендіру", "Парсыландыру"], correct: 2 },
{ q: "Қарлұқ кезеңіндегі түркілендіру үрдісі қай ғасырларды қамтыды?", options: ["VI–VII ғасырлар", "VII–VIII ғасырлар", "VIII–X ғасырлар", "X–XII ғасырлар"], correct: 2 },
{ q: "Арабтар үшін Жетісудың маңыздылығының негізгі себебі:", options: ["Тек әскери бекіністердің болуы", "Стратегиялық және сауда-экономикалық маңызы", "Мұнай кен орындарының болуы", "Егіншілік аймағы болуы"], correct: 1 },
{ q: "IX ғасырдың 20-жылдарында Орталық Азияда билікке келген әулет:", options: ["Қарахандықтар", "Саманилер", "Селжұқтар", "Аббасилер"], correct: 1 },
{ q: "840 жылы саманилер түркілерге қарсы қандай соғыс жариялады?", options: ["«Ұлы жорық»", "«Қасиетті соғыс»", "«Азаттық соғысы»", "«Шығыс жорығы»"], correct: 1 },
{ q: "840 жылы саманилер басып алған қала:", options: ["Тараз", "Баласағұн", "Испиджаб", "Суяб"], correct: 2 },
{ q: "Испиджабтың тарихи маңызы:", options: ["Қарлұқтардың астанасы болды", "Оңтүстік Қазақстанда исламды таратудың орталығына айналды", "Ұйғырлардың саяси орталығы болды", "Түргештердің әскери орталығы болды"], correct: 1 },
{ q: "IX ғасырдың соңында саманилер басып алған қала:", options: ["Тараз", "Суяб", "Баласағұн", "Қойлық"], correct: 0 },
{ q: "Саманилердің жорықтары Қарлұқ қағанатына қалай әсер етті?", options: ["Қағанатты күшейтті", "Қағанатты әлсіретті", "Жаңа астана салуға мүмкіндік берді", "Қарлұқтардың аумағын кеңейтті"], correct: 1 },
{ q: "Қарлұқ қағанатына Қашғар жағынан қауіп төнген кезең:", options: ["VIII ғасырдың басы", "VIII ғасырдың ортасы", "IX ғасырдың басы", "X ғасырдың бірінші жартысы"], correct: 3 },
{ q: "940 жылы Қашғар түркілері қай қаланы басып алды?", options: ["Таразды", "Испиджабты", "Баласағұнды", "Суябты"], correct: 2 },
{ q: "Қарлұқ қағанатының өмір сүруін тоқтатуына тікелей себеп болған оқиға:", options: ["Түргештердің қайта күшеюі", "Баласағұнның Қашғар түркілері тарапынан басып алынуы", "Оғыздардың Жетісуға қайта келуі", "Енисей қырғыздарының шабуылы"], correct: 1 },
{ 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>