Newer
Older
2024-naoki / scriptsytuuseiban.js
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}`;
}