sozday-dlya-menya-kuiz-sayt/qanly-uysin-sarmattar.html

381 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">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: "Қаңлы мемлекеті қай ғасырда Сырдарияның орта ағысында күшейді?", options: ["Б.з.б. IV ғасырда", "Б.з.б. III ғасырда", "Б.з.б. II ғасырда", "Б.з.б. I ғасырда"], 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: 0 },
{ q: "Ақтөбе қалашығы қай өзеннің оң жағалауында орналасқан?", options: ["Іле", "Шу", "Сырдария", "Талас"], correct: 2 },
{ q: "Б.з.б. 101 жылы Қытай Даваниді жаулап алған кезде Қаңлы мемлекеті кімдердің жағына шықты?", options: ["Қытайлардың", "Ғұндардың", "Ферғаналықтардың", "Үйсіндердің"], correct: 2 },
{ q: "Б.з.б. 47–46 жылдары қаңлылар кімге қарсы күресте солтүстік ғұн билеушісіне қолдау көрсетті?", options: ["Қытайларға", "Үйсіндерге", "Сарматтарға", "Юэчжилерге"], correct: 1 },
{ q: "Кейін қаңлылар ғұндарға қарсы кіммен одақ жасасты?", options: ["Үйсіндермен", "Сарматтармен", "Қытаймен", "Юэчжилермен"], correct: 2 },
{ q: "Қаңлы мемлекеті бірнеше иелікке қай ғасырларда бөлінді?", options: ["Б.з.б. IV–III ғасырларда", "Б.з.б. II–I ғасырларда", "I–II ғасырларда", "IV–V ғасырларда"], correct: 2 },
{ q: "V ғасырда Қаңлы мемлекеті қай елдің императорлық сарайына елшілік жіберді?", options: ["Үндістан", "Қытай", "Парсы", "Рим"], correct: 1 },
{ q: "Үйсін мемлекеті негізінен қай аумақта құрылды?", options: ["Батыс Қазақстан мен Каспий маңында", "Жетісу, Тарбағатай және Тянь-Шань аумағында", "Сырдарияның төменгі ағысында", "Еділ мен Жайық аралығында"], correct: 1 },
{ q: "Үйсіндер кімдердің ұрпақтары деп көрсетілген?", options: ["Сақ тиграхаудалардың", "Массагеттердің", "Сарматтардың", "Ғұндардың"], correct: 0 },
{ q: "Үйсіндердің шаруашылығының негізгі сипаты:", options: ["Толық отырықшы егіншілік", "Жартылай көшпелі шаруашылық", "Теңіз саудасы", "Тек аңшылық"], correct: 1 },
{ q: "Үйсіндердегі жоғары билеушінің атауы:", options: ["Шаньюй", "Гуньмо (Күнби)", "Тулы", "Уәзір"], correct: 1 },
{ q: "Үйсіндердің билеушісі Күнбидің сарайы орналасқан қала:", options: ["Битянь", "Чигу", "Даван", "Шаш"], correct: 1 },
{ q: "Чигу қаласының мағынасы:", options: ["Алтын қала", "Қызыл Аңғар", "Үлкен қала", "Көк қала"], correct: 1 },
{ q: "Үйсін мемлекеті қандай бөліктерге бөлінді?", options: ["Сол жақ, оң жақ және орталық", "Солтүстік, оңтүстік және батыс", "Шығыс, батыс және солтүстік", "Орталық, солтүстік және оңтүстік"], correct: 0 },
{ q: "Күнбиден кейінгі жоғары лауазымды тұлға:", options: ["Шаньюй", "Тулы (дулы)", "Қаған", "Тархан"], correct: 1 },
{ q: "Үйсіндерде шенеуніктерден, тексерушілерден және хатшылардан тұратын қандай құрылым болды?", options: ["Әскери кеңес", "Төрешілік аппараты", "Сауда кеңесі", "Халық жиналысы"], correct: 1 },
{ q: "Үйсіндер туралы негізгі ақпарат қай деректерден белгілі?", options: ["Рим деректерінен", "Парсы деректерінен", "Қытай деректерінен", "Үнді деректерінен"], correct: 2 },
{ q: "Үйсіндердің батыс шегі қай өзендердің бойымен өтті?", options: ["Іле мен Ертіс", "Шу мен Талас", "Сырдария мен Әмудария", "Еділ мен Жайық"], correct: 1 },
{ q: "Б.з.б. II ғасырда үйсіндер кімдермен ғұндарға қарсы одақтасты?", options: ["Сарматтармен", "Қаңлылармен", "Қытайлармен", "Массагеттермен"], correct: 2 },
{ q: "Б.з.б. I ғасырда Үйсін мемлекеті қандай екі иелікке бөлінді?", options: ["Сол және оң қанатқа", "Үлкен күнби және Кіші күнби иеліктеріне", "Шығыс және Батыс иеліктерге", "Орталық және Батыс иеліктерге"], correct: 1 },
{ q: "Б.з. II ғасырда үйсіндер қандай жағдайға жетті?", options: ["Қытайға толық бағынды", "Қаңлы мемлекетіне қосылды", "Қытайдан толық құтылды", "Сарматтарға тәуелді болды"], correct: 2 },
{ q: "IV ғасырда үйсіндер кімдердің қысымымен Тянь-Шань тауларына қоныс аударды?", options: ["Ғұндардың", "Қытайлардың", "Жужандардың", "Сарматтардың"], correct: 2 },
{ q: "Сарматтар Геродот деректерінде қалай аталды?", options: ["Скифтер", "Савроматтар", "Массагеттер", "Юэчжилер"], correct: 1 },
{ q: "Сарматтар қай аймақты мекендеді?", options: ["Жетісу мен Тянь-Шаньды", "Батыс Қазақстан, Еділ мен Жайық аралығын", "Сырдария мен Әмудария аралығын", "Алтай мен Тарбағатайды"], correct: 1 },
{ q: "Б.з.б. III ғасырда сарматтарды Ұлы Даланың батыс бөлігінен ығыстырғандар:", 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;
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;
startTimer();
document.getElementById('q-total').textContent = QUESTIONS.length;
showQuestion();
}
function showQuestion() {
const q = QUESTIONS[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;
QUESTIONS.forEach((q, i) => {
if (answers[i] === q.correct) {
correct++;
} else {
wrong++;
}
});
const percentage = Math.round((correct / QUESTIONS.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>