Книга: Выразительный JavaScript
Определение
Определение
Чтобы задача стала выполнимой, мы кардинально упростим концепцию мира. А именно – мир будет двумерной сеткой, где каждая сущность занимает одну клетку. На каждом ходу существа получат возможность выполнить какое-либо действие.
Таким образом, мы порубим время и пространство на единицы фиксированного размера: клетки для пространства и ходы для времени. Конечно, это грубое и неаккуратное приближение. Но наша симуляция должна быть развлекательной, а не аккуратной, поэтому мы свободно «срезаем углы».
Определить мир мы можем при помощи плана – массива строк, который раскладывает мировую сетку, используя один символ на клетку.
var plan = ["############################",
"# # # o ##",
"# #",
"# ##### #",
"## # # ## #",
"### ## # #",
"# ### # #",
"# #### #",
"# ## o #",
"# o # o ### #",
"# # #",
"############################"];
Символ “#
” обозначает стены и камни, “o
” – существо. Пробелы – пустое пространство.
План можно использовать для создания объекта мира. Он следит за размером и содержимым мира. У него есть метод toString
, который преобразовывает мир в выводимую строчку (такую, как план, на котором он основан), чтобы мы могли наблюдать за происходящим внутри него. У объекта мир есть метод turn
(ход), позволяющий всем существам сделать один ход и обновляющий состояние мира в соответствии с их действиями.
- Определение версии клиента
- Определение целей. Построение цепочек
- 1.2. Определение количества информации. Единицы измерения количества информации
- Определение пользовательского формата числовых данных
- Определение необходимого системного вызова
- Раздел 1 Лояльность: определение и ключевые факторы
- Определение позиционного уровня
- 3.3. Определение объектов защиты
- Определение собственной миссии
- Определение факторов риска
- Определение контекстно-связанных объектов
- Определение ОС