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

397 lines
24 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">40</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 / 40</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–IX ғасырларды қамтитын кезең қалай аталады?", options: ["Ежелгі дәуір", "Ерте орта ғасыр", "Дамыған орта ғасыр", "Кейінгі орта ғасыр"], correct: 1 },
{ q: "Қазақстан тарихында X–XII ғасырларды қамтитын кезең:", options: ["Ерте орта ғасыр", "Кейінгі орта ғасыр", "Дамыған орта ғасыр", "Ежелгі дәуір"], correct: 2 },
{ q: "Қазақстан тарихында XIII–XVII ғасырларды қамтитын кезең:", options: ["Кейінгі орта ғасыр", "Ерте орта ғасыр", "Дамыған орта ғасыр", "Түркі дәуірі"], correct: 0 },
{ q: "Ежелгі түріктер тарих сахнасына қай кезеңде шықты?", options: ["V ғасырдың басында", "V ғасырдың соңында", "VI ғасырдың ортасында", "VII ғасырдың басында"], correct: 2 },
{ q: "Түркілердің түпкі Отаны қай аймақ болды?", options: ["Алтайдың шығыс бөлігі", "Маньчжурияның батысы", "Солтүстік Кавказ", "Жетісу"], correct: 0 },
{ q: "Түркі дәуірі қай ғасырлар аралығын қамтиды?", options: ["V–X ғасырлар", "VI–XIII ғасырлар", "VII–XIV ғасырлар", "VI–X ғасырлар"], correct: 1 },
{ q: "VI ғасырда Гоби шөлінің солтүстігін мекендеген түркі тілдес тайпалар:", options: ["Қарлұқтар", "Қыпшақтар", "Теле тайпалары", "Оғыздар"], correct: 2 },
{ q: "Теле тайпаларының Гоби шөлінің солтүстігінде мекендегені туралы мәлімет қай дереккөздерде кездеседі?", options: ["Парсы деректерінде", "Араб деректерінде", "Византия деректерінде", "Қытай деректерінде"], correct: 3 },
{ q: "Теле тайпаларының оңтүстік-батысындағы көршілері:", options: ["Иран тілдес тайпалар", "Қытайлар", "Соғдылар", "Византиялықтар"], correct: 0 },
{ q: "Теле тайпаларының оңтүстігіндегі көршісі:", options: ["Парсы елі", "Қытай", "Византия", "Эфталиттер"], correct: 1 },
{ q: "Теле тайпаларының ата-бабалары кімдер болды?", options: ["Сақтар", "Ғұндар", "Үйсіндер", "Қаңлылар"], correct: 1 },
{ q: "Ерте орта ғасырда Қазақстан жерінде ірге тіккен алғашқы феодалдық мемлекеттердің бірі:", options: ["Қарахан мемлекеті", "Түрік қағанаты", "Алтын Орда", "Ақ Орда"], correct: 1 },
{ q: "Түрік қағанаты қай жылы құрылды?", options: ["542 жылы", "545 жылы", "552 жылы", "603 жылы"], correct: 2 },
{ q: "Қытай деректерінде түркілер туралы алғашқы мәліметтер қай жылдан бастап кездеседі?", options: ["542 жылдан", "545 жылдан", "552 жылдан", "568 жылдан"], correct: 0 },
{ q: "Түркілер жужан қағанына салықты қандай түрде төледі?", options: ["Мал түрінде", "Астық түрінде", "Алтын түрінде", "Темір түрінде"], correct: 3 },
{ q: "«Түрік» сөзі қандай мағынаны білдіреді?", options: ["Еркін, тәуелсіз", "Берік, күшті", "Ұлы, даңқты", "Батыл, ержүрек"], correct: 1 },
{ q: "«Түрік» атауы қай әулетке байланысты айтылды?", options: ["Ашина әулетіне", "Жужан әулетіне", "Қытай әулетіне", "Эфталиттер әулетіне"], correct: 0 },
{ q: "Түрік қағанаты негізінен қандай тайпалардан тұрды?", options: ["Оғыздардан", "Қыпшақтардан", "Теле тайпаларынан", "Қарлұқтардан"], correct: 2 },
{ q: "Түрік қолбасшысына Қытай елшісі қай жылы келді?", options: ["542 жылы", "545 жылы", "552 жылы", "568 жылы"], correct: 1 },
{ q: "552 жылы қандай маңызды оқиға болды?", options: ["Түрік қағанаты екіге бөлінді", "Византиямен келісім жасалды", "Бумын жужандар әскерін талқандады", "Эфталиттер мемлекеті құрылды"], correct: 2 },
{ q: "552 жылы Бумын қандай лауазымға ие болды?", options: ["Ябғу", "Шад", "Елбасы", "Түркі елінің қағаны"], correct: 3 },
{ q: "Бумын қаған қай жылы «Елхан» атағын алды?", options: ["545 жылы", "552 жылы", "553 жылы", "603 жылы"], correct: 1 },
{ q: "Бумын қаған қайтыс болғаннан кейін билікке келген тұлға:", options: ["Иштеми қаған", "Земарх", "Мұқан қаған", "Маниах"], correct: 2 },
{ q: "Мұқан қағанның билік құрған жылдары:", options: ["542–552 жылдар", "552–553 жылдар", "553–572 жылдар", "572–603 жылдар"], correct: 2 },
{ q: "Мұқан қаған Бумын қағанға кім болды?", options: ["Інісі", "Баласы", "Әкесі", "Немересі"], correct: 1 },
{ q: "Мұқан қағанның басты жетістіктерінің бірі:", options: ["Византияны жаулап алуы", "Қытайды толық бағындыруы", "Түркілердің Орталық Азия мен Оңтүстік Сібірдегі үстемдігін бекітуі", "Түрік қағанатын Батыс және Шығыс қағанаттарына бөлуі"], correct: 2 },
{ q: "Мұқан қағаннан кейін мемлекетті кім басқарды?", options: ["Бумын", "Иштеми", "Земарх", "Маниах"], correct: 1 },
{ q: "Иштеми қаған Бумынға кім болды?", options: ["Баласы", "Немересі", "Інісі", "Әкесі"], correct: 2 },
{ q: "Иштеми қаған тұсында Түрік қағанатының аумағы қай жерлерге дейін жетті?", options: ["Үндістаннан Қытайға дейін", "Маньчжуриядан Босфорға дейін", "Алтайдан Үндістанға дейін", "Еділден Қытайға дейін"], correct: 1 },
{ q: "Түркілер мен парсылар одақтасып қай мемлекетті талқандады?", options: ["Қытай мемлекетін", "Византияны", "Жужандар мемлекетін", "Эфталиттер мемлекетін"], correct: 3 },
{ q: "568 жылы түрік елшілігін Византияға кім басқарды?", options: ["Земарх", "Маниах", "Мұқан", "Иштеми"], correct: 1 },
{ q: "Византиядан Түрік қағанатына келген елші:", options: ["Маниах", "Бумын", "Земарх", "Ашина"], correct: 2 },
{ q: "Түрік қағанаты қай жылы Батыс Түрік және Шығыс Түрік қағанаттарына бөлінді?", options: ["552 жылы", "568 жылы", "603 жылы", "630 жылы"], correct: 2 },
{ q: "Түрік мемлекетінде қарапайым халық қалай аталды?", options: ["Бектер", "Таттар", "Будындар", "Ябғулар"], correct: 2 },
{ q: "Түрік мемлекетіндегі алым-салық төлеушілер немесе құлдар қалай аталды?", options: ["Будындар", "Бектер", "Таттар", "Ерлер"], correct: 2 },
{ q: "Түрік қағанатының Ұлы қаған ордасы қай жерде орналасты?", options: ["Жетісуда", "Алтайда", "Маньчжурияда", "Солтүстік Кавказда"], correct: 1 },
{ q: "Түрік қағанатында қағанның негізгі міндеттерінің бірі:", options: ["Тек салық жинау", "Тек саудамен айналысу", "Жоғарғы сот міндетін атқарып, әскерге басшылық ету", "Діни рәсімдерді басқару"], correct: 2 },
{ q: "Қағанның мемлекетті басқаруда сүйенген әлеуметтік тобы:", options: ["Қарапайым малшыларға", "Қытай елшілеріне", "Тайпаның ақсүйек қауымына", "Құлдарға"], 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>