sozday-dlya-menya-kuiz-sayt/index.html

378 lines
24 KiB
HTML
Raw Permalink 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.

<!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>
<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">20</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 / 20</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>
</div>
</div>
</div>
</section>
<footer class="kt-ai-wrap kt-ai-pagefoot">
<span>© 2026 ҰБТ: Қазақстан тарихы</span>
<span class="kt-ai-spacer"></span>
<span>Сәттілік тілейміз!</span>
</footer>
<script>
const QUESTIONS = [
{ q: "Афанасьев мәдениеті қай аймақтарда таралған?", options: ["Жетісу мен Оңтүстік Қазақстан", "Шығыс Қазақстан мен Оңтүстік Сібір", "Батыс Қазақстан мен Еділ бойы", "Маңғыстау мен Арал маңы"], correct: 1 },
{ q: "Афанасьевтіктердің негізгі кәсібіне қайсысы жатпайды?", options: ["Аңшылық", "Балық аулау", "Мал бағу", "Теңіз саудасы"], correct: 3 },
{ q: "Афанасьевтіктер Сібірге қандай мәдени жетістіктерді алып келді?", options: ["Тек аңшылық құралдарын", "Металл өңдеу мен егіншілік мәдениетін", "Тек жазу мәдениетін", "Қыш өндіруді ғана"], correct: 1 },
{ q: "Афанасьевтіктер қайтыс болған адамдарды қалай жерлеген?", options: ["Өзенге тастаған", "Ағаш үйлерге жерлеген", "Қорғандарға жерлеген", "Үңгірлерге орналастырған"], correct: 2 },
{ q: "Қарасұқ мәдениеті негізінен қай кезеңде қалыптасты?", options: ["Б.з.б. IV мыңжылдықтың басында", "Б.з.б. II мыңжылдықтың соңында", "Б.з.б. I мыңжылдықтың соңында", "Б.з. II ғасырында"], 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: ["1200 м", "2000 м", "2800 м", "3600 м"], correct: 3 },
{ 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: "Ұйық мәдениеті қай дәуірде қалыптасты?", options: ["Неолит дәуірінде", "Қола дәуірінде", "Ерте темір дәуірінде", "Орта ғасырда"], correct: 2 },
{ q: "Ұйық мәдениеті негізінен қай аумақтарда таралған?", options: ["Тува, Шығыс Алтай және Солтүстік-Батыс Моңғолия", "Жетісу, Сырдария және Арал маңы", "Батыс Қазақстан мен Еділ бойы", "Орталық және Солтүстік Қазақстан"], correct: 0 },
{ q: "Ұйық мәдениетінің маңызды ескерткіштеріне қайсысы жатады?", options: ["Бесшатыр қорғандары", "Аржан қорғандары", "Есік қорғаны", "Тасмола қорғандары"], correct: 1 },
{ q: "Ұйық мәдениеті қорғандарынан қандай өнер үлгісіндегі алтын бұйымдар табылды?", options: ["Грек стиліндегі", "Қытай стиліндегі", "Скиф-сақтардың аң стиліндегі", "Үнді стиліндегі"], correct: 2 },
{ q: "Тағар мәдениеті қай аймақта өмір сүрді?", options: ["Оңтүстік Сібірде", "Батыс Қазақстанда", "Жетісуда", "Хорезмде"], correct: 0 },
{ q: "Тағарлықтар көсемдерін жерлеу үшін не тұрғызған?", options: ["Кесене", "Үлкен қорған", "Тас мұнара", "Жер асты сарайын"], correct: 1 },
{ q: "Тағарлықтардың жерлеу орындарына тән ерекшелік:", options: ["Жылқы мен ат әбзелдері жиі кездеседі", "Жылқы мен ат әбзелдері кездеспейді", "Тек теңіз жануарларының сүйектері табылған", "Қорғандар мүлдем болмаған"], correct: 1 },
{ q: "Тағарлықтар негізінен қандай мал өсірді?", options: ["Түйе", "Жылқы", "Ірі қара", "Ешкі"], correct: 2 },
{ q: "Тағарлықтардың қоныстары негізінен неден тұрғызылды?", options: ["Кірпіштен", "Тастан", "Бөренелі ағаштан", "Қамыстан"], correct: 2 },
{ q: "Пазырық мәдениеті қай аумақтарда таралды?", options: ["Таулы Алтай мен Шығыс Қазақстанда", "Батыс Қазақстан мен Аралда", "Оңтүстік Қазақстан мен Хорезмде", "Солтүстік Қазақстан мен Еділ бойында"], correct: 0 },
{ q: "Пазырық мәдениеті туралы маңызды деректердің жақсы сақталуына не себеп болды?", options: ["Құрғақ климат", "Мәңгілік тоң жағдайы", "Қорғандардың биіктігі", "Өзендердің жақын орналасуы"], correct: 1 },
{ q: "Қазақстандағы сақ қорғандарының ішіндегі ең ежелгілері қай ғасырға жатады?", options: ["Б.з.б. X ғасыр", "Б.з.б. IX ғасыр", "Б.з.б. VIII ғасыр", "Б.з.б. VI ғасыр"], correct: 2 },
{ q: "Бесшатыр қорғандарының ірі үлгілерінің диаметрі мен биіктігі қаншаға дейін жеткен?", options: ["50 м және 5 м", "75 м және 10 м", "100 м және 17 м", "150 м және 25 м"], correct: 2 },
{ q: "Тасмола мәдениетінің басты ерекшеліктерінің бірі қандай?", options: ["Катакомбалық қабірлер", "«Мұртты» қорғандар", "Тас жәшікті қабірлер", "Үлкен ағаш табыттар"], correct: 1 },
{ q: "Тасмола мәдениеті қай кезеңде және қай аумақта таралды?", options: ["Б.з.б. X–VIII ғғ., Жетісуда", "Б.з.б. VII–III ғғ., Солтүстік және Орталық Қазақстанда", "Б.з.б. II–I ғғ., Батыс Қазақстанда", "Б.з. I–III ғғ., Оңтүстік Қазақстанда"], correct: 1 }
];
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>