document.addEventListener('DOMContentLoaded', () => {
const startButton = document.getElementById('startButton');
const gameDiv = document.getElementById('game');
const questionElem = document.getElementById('question');
const answerForm = document.getElementById('answerForm');
const answerInput = document.getElementById('answerInput');
const timerElem = document.getElementById('timeLeft');
const exam1Elem = document.getElementById('exam1');
const exam2Elem = document.getElementById('exam2');
const exam3Elem = document.getElementById('exam3');
const exam4Elem = document.getElementById('exam4');
const exam5Elem = document.getElementById('exam5');
const resultMessageElem = document.getElementById('resultMessage');
let questions = [];
let currentQuestion = {};
let timer;
let timeLeft = 30;
let questionCount = 0;
const maxQuestions = 10;
let score = 0;
startButton.addEventListener('click', () => {
resetGame();
startButton.style.display = 'none';
gameDiv.style.display = 'block';
loadQuestions('pr-ad.csv');
});
answerForm.addEventListener('submit', (e) => {
e.preventDefault();
checkAnswer();
});
function loadQuestions(file) {
fetch(file)
.then(response => response.text())
.then(data => {
questions = parseCSV(data);
nextQuestion();
startTimer();
})
.catch(error => console.error('Error loading questions:', error));
}
function parseCSV(data) {
const lines = data.split('\n').slice(1);
return lines.map(line => {
const [question, answer, ex1, ex2, ex3, ex4, ex5] = line.split(',');
if (question && answer) {
return { question, answer, ex1, ex2, ex3, ex4, ex5 };
}
return null;
}).filter(q => q !== null);
}
function nextQuestion() {
if (questionCount >= maxQuestions || questions.length === 0) {
endGame();
return;
}
questionCount++;
const randomIndex = Math.floor(Math.random() * questions.length);
currentQuestion = questions[randomIndex];
questionElem.textContent = currentQuestion.question;
exam1Elem.textContent = currentQuestion.ex1 || '';
exam2Elem.textContent = currentQuestion.ex2 || '';
exam3Elem.textContent = currentQuestion.ex3 || '';
exam4Elem.textContent = currentQuestion.ex4 || '';
exam5Elem.textContent = currentQuestion.ex5 || '';
answerInput.value = '';
answerInput.focus();
resultMessageElem.textContent = '';
}
function checkAnswer() {
if (answerInput.value === currentQuestion.answer) {
score++;
questions = questions.filter(q => q !== currentQuestion);
nextQuestion();
resetTimer();
} else {
answerInput.value = '';
}
}
function startTimer() {
timeLeft = 30;
timerElem.textContent = timeLeft;
timer = setInterval(() => {
timeLeft--;
timerElem.textContent = timeLeft;
if (timeLeft <= 0) {
clearInterval(timer);
resultMessageElem.textContent = `時間切れです!正解は:${currentQuestion.answer}。得点:${score}`;
setTimeout(endGame, 5000);
}
}, 1000);
}
function resetTimer() {
clearInterval(timer);
startTimer();
}
function endGame() {
resultMessageElem.textContent = `ゲーム終了!あなたの得点は${score}点です`;
setTimeout(() => {
startButton.style.display = 'block';
gameDiv.style.display = 'none';
}, 5000);
clearInterval(timer);
}
function resetGame() {
score = 0;
questionCount = 0;
questions = [];
clearInterval(timer);
timerElem.textContent = '30';
resultMessageElem.textContent = '';
answerInput.value = '';
}
});