Newer
Older
2024-naoki / script.js
let startTime;
let timerId;
let displayTimerId;
let gameEnded = false;
let totalPoints = 0;
let attemptsLeft = 5;

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;
        
        displayTimerId = setTimeout(() => {
            document.getElementById("timerDisplay").textContent = "";
        }, 2000);
    } else {
        alert("ゲーム終了!リロードして新しいゲームを開始してください。");
    }
});

document.getElementById("stopButton").addEventListener("click", function() {
    if (!gameEnded) {
        clearTimeout(timerId);
        clearTimeout(displayTimerId);
        showResult();
        document.getElementById("startButton").disabled = false;
        attemptsLeft--;
        updateAttemptsDisplay();
        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 += `目標との差: ${difference}秒\n`;
    resultMessage += `獲得ポイント: ${points}`;

    if (difference == 0) {
         totalPoints += 5; // ぴったり30秒の場合、追加で15ポイント
        resultMessage = "おめでとう!ちょうど30秒です!\n" + resultMessage;
    } else if (elapsedTime > 30) {
        resultMessage += "\n30秒を超えましたが、よく頑張りました!";
    }

    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 6;
    if (difference <= 3) return 4;
    if (difference <= 5) return 2;
    return 1;
}

function updateAttemptsDisplay() {
    document.getElementById("attemptsLeft").textContent = `残り回数: ${attemptsLeft}`;
}