Проект: Сапер в Javascript

С продолжением расширения ваших знаний в Javascript, программы, которые вы пишете, будут все более и более приближенными к реальным. В этом проекте вы получите шанс создать еще одну классическую браузерную игру - Сапера. Это потребует некоторых размышлений, чтобы обработать разные варианты, но действительно полезно иметь возможность поиграть во что-то вроде этого.

Ваше задание

Создайте Сапера в браузере. Начните с небольшой доски (9x9 и с 10 минами).

Основные правила заключаются в том, что игрок должен отметить каждую мину на доске, не нажимая на нее. Игрок получает достаточно информации для решения, потому что каждый квадрат, будет отображать количество мин к которым он прикасается. Игрок имеет ровно столько флагов, сколько есть мин. Победа объявляется если были открыты все квадраты за исключением мин.

  1. Создайте для проекта репозиторий на Github.
  2. Создайте пустой документ HTML.
  3. Подумайте, о том, из чего должна состоять игра. Какие понадобятся объекты и функции? Лучше сейчас подумать несколько лишних минут, чем потом переделывать программу, теряя часы впустую. Лучшее, что вы можете сделать - решить все на доске прежде, чем касаться компьютера.
  4. Создайте объект доски и функцию render(), которая отображает и обновляет его.
  5. Чтобы начать игру, случайным образом разместите мины в пределах доски и обновите квадраты на доске так, чтобы они показывали количество мин к которым они прикасаются.
  6. Создайте логику, необходимую для обновления доски всякий раз, когда пользователь щелкает на квадрате. Вы хотите различать, когда пользователь устанавливает флажок, а когда открывает поле, так что смотрите этот пост на Stack Overflow про обработку правого клика с jQuery.
  7. Теперь создайте основную игровую логику, которая проверяет неудачи и победы, а затем снова отрисовывает поле. Вам необходимо раскрывать нажатый квадрат и, если он не прикасается непосредственно к шахте, также надлежащим образом найти ближайшие квадраты, пока вы не дойдете до тех, что непосредственно прикасаются к мине (сыграйте пробную игру, чтобы увидеть это в действии).
  8. Теперь добавьте пользовательский ввод для новой игры, который спрашивает, какой размер доски использовать.
  9. Создайте таймер, который отсчитывает, сколько времени потребовалось пользователю, чтобы выиграть игру.
  10. Играйте!
  11. Отправьте решение на Github.

Решения студентов

Поделиться уроком: