let startTime;
let timerId;
let displayTimerId;
let gameEnded = false;
let totalPoints = 0;
let attemptsLeft = 3;
// ゲーム開始ボタンのクリックイベント
document.getElementById("startButton").addEventListener("click", function() {
if (attemptsLeft > 0) {
startTime = new Date().getTime();
document.getElementById("stopButton").disabled = false;
document.getElementById("startButton").disabled = true;
// 初期メッセージを表示
document.getElementById("timerDisplay").textContent = "タイマーが動いています... 3秒経ったら消えます";
document.getElementById("result").textContent = "";
gameEnded = false;
// 3秒後にメッセージを更新
setTimeout(() => {
document.getElementById("timerDisplay").textContent = "タイマーが動いています...";
}, 3000);
} else {
alert("ゲーム終了!リロードして新しいゲームを開始してください。");
}
});
// ゲーム停止ボタンのクリックイベント
document.getElementById("stopButton").addEventListener("click", function() {
if (!gameEnded) {
clearTimeout(timerId);
// タイマー表示を消去
document.getElementById("timerDisplay").textContent = "";
showResult();
document.getElementById("startButton").disabled = false;
attemptsLeft--;
updateAttemptsDisplay();
// 残り回数が0になった場合の処理
if (attemptsLeft === 0) {
document.getElementById("startButton").disabled = true;
alert("ゲーム終了!最終スコア: " + totalPoints);
}
}
});
function showResult() {
let currentTime = new Date().getTime();
let elapsedTime = ((currentTime - startTime) / 1000).toFixed(2);
let difference = Math.abs(elapsedTime - 20).toFixed(2);
let points = calculatePoints(difference);
totalPoints += points;
let resultMessage = `${elapsedTime}秒でストップしました。\n`;
resultMessage += `20秒まであと: ${difference}秒差\n`;
resultMessage += `獲得ポイント: ${points}`;
if (difference === 0) {
resultMessage = "おめでとう!ちょうど20秒!あなたはすごくついてるね!!!\n" + resultMessage;
} else if (elapsedTime > 20) {
resultMessage += "\n20秒超えちゃったね…次はぴったり20秒を目指そう!";
} else {
resultMessage += "\n20秒まで届かなかったね…次はぴったり20秒目指してみよう!";
}
document.getElementById("result").textContent = resultMessage;
document.getElementById("stopButton").disabled = true;
document.getElementById("totalPoints").textContent = `累計ポイント: ${totalPoints}`;
gameEnded = true;
}
function calculatePoints(difference) {
if (difference === 0) return 15;
if (difference <= 0.5) return 10;
if (difference <= 1) return 8;
if (difference <= 2) return 5;
if (difference <= 3) return 3;
if (difference <= 5) return 1;
return 0;
}
function updateAttemptsDisplay() {
document.getElementById("attemptsLeft").textContent = `残り回数: ${attemptsLeft}`;
}