diff --git a/README.md b/README.md index 3a0393d..5aef3e1 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ - Белые стены препятствий. - Красные огненные шары и лаву. - Желтые монетки. -- Игрок бардового цвета, потому что в данный момент он умер от сталкновения с огненным шаром. +- Игрока бордового цвета, потому что в данный момент он умер от столкновения с огненным шаром. Игрок управляется стрелками с клавиатуры. Основная цель каждого уровня — собрать все монетки. @@ -29,7 +29,7 @@ #### Подготовка репозитория 1. Установить git. -2. Создайте аккаунт в сервисе [GitHub] или [BitBucket] +2. Создайте аккаунт в сервисе [GitHub] или [BitBucket]. 3. Создайте публичный репозиторий. 4. Скопируйте ссылку на репозиторий (рекомендуем использовать HTTPS, если ранее вы не сталкивались с SSH). 5. Клонируйте ваш репозиторий локально, используя команду `git clone`. @@ -43,17 +43,17 @@ https://github.com/netology-code/js-game/releases 2. Разверните архив проекта в папку, созданную при подготовке репозитория. -3. Ваш код пишите в файле `./game.js` -4. Для запуска игры откройте в браузере файл `./index.html` -5. Для запуска тестов откройте в браузере файл `./test/index.html` +3. Ваш код пишите в файле `./game.js`. +4. Для запуска игры откройте в браузере файл `./index.html`. +5. Для запуска тестов откройте в браузере файл `./test/index.html`. Менять остальные файлы не рекомендуется. #### Публикация промежуточных версий -1. Добавьте к коммиту файл `game.js` командой `git add game.js` -2. Сделайте коммит `git commit` -3. Опубликуйте изменения с помощью команды `git push` +1. Добавьте к коммиту файл `game.js` командой `git add game.js`. +2. Сделайте коммит `git commit`. +3. Опубликуйте изменения с помощью команды `git push`. #### Создание локального сервера (необязательно) @@ -63,18 +63,18 @@ ##### Локальный сервер на php -1. Установить php на компьютер -2. Для запуска сервера в папке проекта запустить команду `php -S localhost:3000` -3. Для запуска игры откройте в браузере адрес `http://localhost:3000/index.html` -4. Для запуска тестов откройте в браузере адрес `http://localhost:3000/test/index.html` +1. Установить php на компьютер. +2. Для запуска сервера в папке проекта запустить команду `php -S localhost:3000`. +3. Для запуска игры откройте в браузере адрес `http://localhost:3000/index.html`. +4. Для запуска тестов откройте в браузере адрес `http://localhost:3000/test/index.html`. ##### Локальный сервер на NodeJS -1. Установить NodeJS -2. В папке проекта выполнить команду `npm install` -3. Для запуска сервера в папке проекта запустить команду `npm start` -4. Для запуска игры откройте в браузере адрес `http://localhost:3000/index.html` -5. Для запуска тестов откройте в браузере адрес `http://localhost:3000/test/index.html` +1. Установить NodeJS. +2. В папке проекта выполнить команду `npm install`. +3. Для запуска сервера в папке проекта запустить команду `npm start`. +4. Для запуска игры откройте в браузере адрес `http://localhost:3000/index.html`. +5. Для запуска тестов откройте в браузере адрес `http://localhost:3000/test/index.html`. При использовании NodeJS тесты и игра будут обновляться автоматически при изменении файлов. @@ -85,7 +85,7 @@ Для реализации в онлайн-песочнице вам нужно: -1. Зарегистрироваться на сервисе [CodePen] +1. Зарегистрироваться на сервисе [CodePen]. 2. Открыть заготовку проекта по ссылке: https://codepen.io/dfitiskin/pen/XRZqWd?editors=0010 @@ -100,7 +100,7 @@ https://netology-university.bitbucket.io/wm/resourses/codepen-guide.html #### Repl.it -1. Зарегистрироваться на сервисе [Repl.it] +1. Зарегистрироваться на сервисе [Repl.it]. 2. Создать новую песочницу «HTML, CSS, JS» https://repl.it/languages/web_project @@ -124,7 +124,7 @@ https://netology-university.bitbucket.io/wm/resourses/codepen-guide.html ``` -4. Нажмите кнопку «Save» +4. Нажмите кнопку «Save». 5. Реализовать код игры, последовательно следуя инструкции, во вкладке «index.js». 6. Периодически сохраняйте результат, чтобы не потерять изменения. 7. Отправляйте наставнику на проверку ссылку на вашу песочницу, которую можно получить по кнопке «Share». @@ -140,13 +140,13 @@ https://netology-university.bitbucket.io/wm/resourses/codepen-guide.html Просто кликайте на соответствующий пункт, чтобы сосредоточиться на нем. Процесс реализации можно построить таким образом: -1. Выбрать компонет или даже метод компонента. +1. Выбрать компонент или даже метод компонента. 2. Отфильтровать тесты, оставив только выбранный компонент или его метод. 3. Реализовать код, который удовлетворит первому проваленному тесту. 4. Убедиться, что тест помечен как успешный. 5. Если еще остались проваленные тесты, вернуться к пункту 3. -Такой подход называется «разработка через тестирование», или TDD. За тем лишь исключением, что тесты уже написаны. +Такой подход называется «разработка через тестирование» или TDD. За тем лишь исключением, что тесты уже написаны. ## Процесс и порядок реализации @@ -239,9 +239,9 @@ DOMDisplay(document.body, level); Инициализирует процесс регулярной отрисовки текущего состояния игрового поля и обработку событий клавиатуры. -Принимает два аргумента: уровень, объект класса `Level` и конструктор объекта, отвечающего за отрисовку. В случае реализации игры в браузере вторым аргументом необходимо использовать класс `DOMDisplay`. +Принимает два аргумента: уровень (объект класса `Level`) и конструктор объекта, отвечающего за отрисовку. В случае реализации игры в браузере вторым аргументом необходимо использовать класс `DOMDisplay`. -Функция возвращает промис, который разрешится статусом завершения игры, _строка_. С учетом реализации класса `Level` он может принимать значения `won` и `lost`. +Функция возвращает промис, который разрешится статусом завершения игры, _строка_. С учетом реализации класса `Level` он может принимать значения `won` или `lost`. Пример использования: ```javascript @@ -320,7 +320,7 @@ runGame(schemas, parser, DOMDisplay) ### Вектор -Необходимо реализовать класс `Vector`, который позволит контролировать расположение объектов в двухмерном пространстве и управлять их размером и перемещением. +Необходимо реализовать класс `Vector`, который позволит контролировать расположение объектов в двумерном пространстве и управлять их размером и перемещением. #### Конструктор @@ -384,7 +384,7 @@ console.log(`Текущее расположение: ${finish.x}:${finish.y}`); #### Метод `isIntersect` -Метод проверяет, пересекается ли текущий объект с переданным объектом, и если да, возвращает `true`, иначе `false`. +Метод проверяет, пересекается ли текущий объект с переданным объектом, и если да, возвращает `true`, иначе – `false`. Принимает один аргумент — движущийся объект типа `Actor`. Если передать аргумент другого типа или вызвать без аргументов, то метод бросает исключение. @@ -445,7 +445,7 @@ items.forEach(status); Сетка уровня представляет собой координатное двумерное поле, представленное двумерным массивом. Первый массив — строки игрового поля; индекс этого массива соответствует координате Y на игровом поле. Элемент с индексом `5` соответствует строке с координатой Y, равной `5`. Вложенные массивы, расположенные в элементах массива строк, представляют ячейки поля. Индекс этих массивов соответствует координате X. Например, элемент с индексом `10`, соответствует ячейке с координатой X, равной `10`. -Так как `grid` — это двумерный массив, представляющий сетку игрового поля, то чтобы узнать, что находится в ячейке с координатами X=10 и Y=5 (10:5), необходимо получить значение `grid[5][10]`. Если значение этого элемента равно `undefined`, то эта ячейка пуста. Иначе там будет строка, описывающая препятствие. Например, `wall` — для стены и `lava` — для лавы. Отсюда вытекает следующий факт: все препятствия имеют целочисленные размеры и координаты. +Так как `grid` — это двумерный массив, представляющий сетку игрового поля, то, чтобы узнать, что находится в ячейке с координатами X=10 и Y=5 (10:5), необходимо получить значение `grid[5][10]`. Если значение этого элемента равно `undefined`, то эта ячейка пуста. Иначе там будет строка, описывающая препятствие. Например, `wall` — для стены и `lava` — для лавы. Отсюда вытекает следующий факт: все препятствия имеют целочисленные размеры и координаты. #### Конструктор @@ -459,13 +459,13 @@ items.forEach(status); Имеет свойство `player` — движущийся объект, тип которого — свойство `type` — равно `player`. -Имеет свойство `height` — высоту игрового поля, равное числу строк в сетке из первого аргмента. +Имеет свойство `height` — высоту игрового поля, равное числу строк в сетке из первого аргумента. Имеет свойство `width` — ширину игрового поля, равное числу ячеек в строке сетки из первого аргумента. При этом, если в разных строках разное число ячеек, то `width` будет равно максимальному количеству ячеек в строке. Имеет свойство `status` — состояние прохождения уровня, равное `null` после создания. -Имеет свойство `finishDelay` — таймаут после окончания игры, равен `1` после создания. Необходим, чтобы после выигрыша или проигрыша игра не завершалась мнгновенно. +Имеет свойство `finishDelay` — таймаут после окончания игры, равен `1` после создания. Необходим, чтобы после выигрыша или проигрыша игра не завершалась мгновенно. #### Метод `isFinished`