JSFiddle - React, Tailwind, and code Playground

by LuckyCat

HTML

<a href="#" id="go">Начать игру</a>

JavaScript

document.getElementById("go").onclick = function(){
    var SECRET_NUMBER;
    var enteredByUser;
    var numberOftry;
    var hotCold = [];
    var computerLose = false;
    
    SECRET_NUMBER = Math.floor(Math.random() * 49 + 1);
    numberOftry = parseInt(prompt('Компьютер:\n- Я загадал число [1..50]. Слабо отгадать?\n\nИгрок:\n- Вызов принят! Я отгадаю его за столько попыток:'));
    hotCold[0] = SECRET_NUMBER;                                    
    
    enteredByUser = parseInt(prompt('Игрок:\n - Я думаю это:'));     //  Попытка сделать программу более живой.
    if (enteredByUser === SECRET_NUMBER) {
        winnMessage();                                                // Я думаю, что при первой попытке нужно выводить именно это, а не "тепло" / "холодно"
        computerLose = true; 
    } else enteredByUser = parseInt(prompt('Компьютер:\n - Нет, попробуй еще:')); // Этот блок не обязателен
    
    for (var i = 1; i < (numberOftry - 1); i += 1) { //  (numberOftry-1) - так как 1 попытку я потратила выше в коде. (1), (2), (3) - Та же причина            
        if (enteredByUser === SECRET_NUMBER) {
            winnMessage();
            computerLose = true;
            break;
        } else {
            hotCold[i] = Math.abs(SECRET_NUMBER - enteredByUser);
            if (hotCold[i] > hotCold[i - 1]) enteredByUser = parseInt(prompt('Компьютер:\n- Холодно. Осталось ' + (numberOftry - i - 1) + ' попыток:')); //  (1)
            else enteredByUser = parseInt(prompt('Компьютер:\n- Тепло. Осталось ' + (numberOftry - i - 1) + ' попыток:')); //  (2)
        }
    }
    
    if (computerLose == false) {
        alert('Компьютер:\n- Ха-ха! Торжество исскуственного интеллекта! Я загадывал ' + SECRET_NUMBER)
    };
    
    
    function winnMessage() {
        alert('Компьютер:\n- Да! загаданое число: ' + SECRET_NUMBER + '\n- Ты справился за ' + (i + 1) + ' попыток'); //(3)
    }
    
}