<b> // состоянием: смотрите комментарий в функции newgame(). </b>
<b> // Нет необходимости вызывать display() здесь. </b>
<b> history.replaceState(state, "", "#guess" + state.guessnum); </b>
<b> } </b>
<b>}; </b>
<b>// Этот обработчик событий вызывается всякий раз, когда пользователь вводит число.</b>
<b>// Он обновляет состояние игры, сохраняет и отображает его.</b>
<b>function handle6uess() { </b>
<b> // Извлечь число из поля ввода</b>
<b> var g = parseInt(this.value); </b>
<b> // Если это число и оно попадает в требуемый диапазон</b>
<b> if ((g > state.low) && (g < state.high)) { </b>
<b> // Обновить объект состояния для этой попытки </b>
<b> if (g < state.n)</b>
<b> state.low = g; </b>
<b> else</b>
<b> if (g > state.n) state.high = g; </b>
<b> state.guess = g; </b>
<b> state.guessnum++; </b>
<b> // Сохранить новое состояние в истории посещений</b>
<b> save(state); </b>
<b> // Изменить документ в ответ на попытку пользователя</b>
<b> display(state); </b>
<b> } </b>
<b> else { // Ошибочная попытка: не сохранять новое состояние</b>
<b> alert("Please enter a number greater than " + state.low +</b>
<b> " and less than " + state.high); </b>
<b> } </b>
<b>} </b>
<b>// Изменяет документ, отображая текущее состояние игры,</b>
<b>function display(state) { </b>
<b> // Отобразить заголовок документа</b>
<b> ui.heading.innerHTML = document.title = </b>
<b> "I'm thinking of a number between " + state.low + </b>
<b> " and " + state.high + "."</b>
<b> // Отобразить диапазон чисел с помощью таблицы</b>
<b> ui.low.style.width = state.low + "%";</b>
<b> ui.mid.style.width = (state.high-state.low) + "%";</b>
<b> ui.high.style.width = (100-state.high) + "%"; </b>
<b> // Сделать поле ввода видимым, очистить его и установить фокус ввода </b>
<b> ui.input.style.visibility = "visible";</b>
<b> ui.input.value = "";</b>
<b> ui.input.focus(); </b>
<b> // Вывести приглашение к вводу, опираясь на последнюю попытку</b>
<b> if (state.guess === undefined)</b>
<b> ui.prompt.innerHTML = "Type your guess and hit Enter:";</b>
<b> else if (state.guess < state.n)</b>
<b> ui.prompt.innerHTML = state.guess + " is too low. Guess again:";</b>
<b> else if (state.guess > state.n)</b>
<b> ui.prompt.innerHTML = state.guess + " is too high. Guess again:";</b>
<b> else {</b>
<b> // Если число угадано, скрыть поле ввода и отобразить кнопку</b>
<b> // Play Again (Играть еще раз).</b>
<b> ui.input.style.visibility = "hidden"; // Попыток больше не будет</b>
<b> ui.heading.innerHTML = document.title = state.guess + " is correct!";</b>
<b> ui.prompt.innerHTML =</b>
<b> "You Win! <button onclick='newgame(true)'>Play Again</button>“;</b>
<b> }</b>
<b>}</b>
<b></script></b>
<b><style> /* CSS-стили, чтобы придать игре привлекательный внешний вид */</b>
<b> #prompt { font-size: 16pt; }</b>
<b> table { width: 90%; margin:10px; margin-left:5%; }</b>
<b> #low, «high { background-color: lightgray; height: 1em; }</b>
<b> #mid { background-color: green; }</b>
<b></style></b>
<b></head></b>
<b><body><!-- Следующие элементы образуют пользовательский интерфейс игры --></b>
<b><!-- Заголовок игры и текстовое представление диапазона чисел --></b>