JavaScript. Подробное руководство, 6-е издание, стр. 378

<b>    // состоянием: смотрите комментарий в функции newgame(). </b>

<b>    // Нет необходимости вызывать display() здесь. </b>

<b>    history.replaceState(state, &quot;&quot;, &quot;#guess&quot; + 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 &gt; state.low) &amp;&amp; (g &lt; state.high)) { </b>

<b>    // Обновить объект состояния для этой попытки </b>

<b>    if (g &lt; state.n)</b>

<b>      state.low = g; </b>

<b>    else</b>

<b>      if (g &gt; 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(&quot;Please enter a number greater than &quot; + state.low +</b>

<b>          &quot; and less than &quot; + state.high); </b>

<b>  } </b>

<b>} </b>

<b>// Изменяет документ, отображая текущее состояние игры,</b>

<b>function display(state) { </b>

<b>  // Отобразить заголовок документа</b>

<b>  ui.heading.innerHTML = document.title = </b>

<b>     &quot;I'm thinking of a number between &quot; + state.low + </b>

<b>     &quot; and &quot; + state.high + &quot;.&quot;</b>

<b>  // Отобразить диапазон чисел с помощью таблицы</b>

<b>  ui.low.style.width = state.low + &quot;%&quot;;</b>

<b>  ui.mid.style.width = (state.high-state.low) + &quot;%&quot;;</b>

<b>  ui.high.style.width = (100-state.high) + &quot;%&quot;; </b>

<b>  // Сделать поле ввода видимым, очистить его и установить фокус ввода </b>

<b>  ui.input.style.visibility = &quot;visible&quot;;</b>

<b>  ui.input.value = &quot;&quot;;</b>

<b>  ui.input.focus(); </b>

<b>  // Вывести приглашение к вводу, опираясь на последнюю попытку</b>

<b>  if (state.guess === undefined)</b>

<b>    ui.prompt.innerHTML = &quot;Type your guess and hit Enter:&quot;;</b>

<b>  else if (state.guess &lt; state.n)</b>

<b>    ui.prompt.innerHTML = state.guess + &quot; is too low. Guess again:&quot;;</b>

<b>  else if (state.guess &gt; state.n)</b>

<b>    ui.prompt.innerHTML = state.guess + &quot; is too high. Guess again:&quot;;</b>

<b>  else {</b>

<b>    // Если число угадано, скрыть поле ввода и отобразить кнопку</b>

<b>    // Play Again (Играть еще раз).</b>

<b>    ui.input.style.visibility = &quot;hidden&quot;; // Попыток больше не будет</b>

<b>    ui.heading.innerHTML = document.title = state.guess + &quot; is correct!&quot;;</b>

<b>    ui.prompt.innerHTML =</b>

<b>      &quot;You Win! &lt;button onclick='newgame(true)'&gt;Play Again&lt;/button&gt;“;</b>

<b>  }</b>

<b>}</b>

<b>&lt;/script&gt;</b>

<b>&lt;style&gt; /* 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>&lt;/style&gt;</b>

<b>&lt;/head&gt;</b>

<b>&lt;body&gt;&lt;!-- Следующие элементы образуют пользовательский интерфейс игры --&gt;</b>

<b>&lt;!-- Заголовок игры и текстовое представление диапазона чисел --&gt;</b>