Выразительный JavaScript (Хавербеке) - страница 80

>   "*": Plant}

>);

Большую часть времени растения размножаются и разрастаются, но затем изобилие еды приводит к взрывному росту популяции травоядных, которые съедают почти всю растительность, что приводит к массовому вымиранию от голода. Иногда экосистема восстанавливается и начинается новый цикл. В других случаях какой-то из видов вымирает. Если травоядные, тогда всё пространство заполняется растениями. Если растения – оставшиеся существа умирают от голода, и долина превращается в необитаемую пустошь. О, жестокость природы…

Упражнения

Искусственный идиот

Грустно, когда жители нашего мира вымирают за несколько минут. Чтобы справиться с этим, мы можем попробовать создать более умного поедателя растений.

У наших травоядных есть несколько очевидных проблем. Во-первых, они жадные – поедают каждое растение, которое находят, пока полностью не уничтожат всю растительность. Во-вторых, их случайное движение (вспомните, что метод >view.find возвращает случайное направление) заставляет их болтаться неэффективно и помирать с голоду, если рядом не окажется растений. И наконец, они слишком быстро размножаются, что делает циклы от изобилия к голоду слишком быстрыми.

Напишите новый тип существа, который старается справится с одним или несколькими проблемами и замените им старый тип >PlantEater в мире долины. Последите за ними. Выполните необходимые подстройки.

>// Ваш код

>function SmartPlantEater() {}


>animateWorld(new LifelikeWorld(

>  ["############################",

>   "#####                 ######",

>   "##   ***                **##",

>   "#   *##**         **  O  *##",

>   "#    ***     O    ##**    *#",

>   "#       O         ##***    #",

>   "#                 ##**     #",

>   "#   O       #*             #",

>   "#*          #**       O    #",

>   "#***        ##**    O    **#",

>   "##****     ###***       *###",

>   "############################"],

>  {"#": Wall,

>   "O": SmartPlantEater,

>   "*": Plant}

>));

Хищники

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

Увеличение мира может помочь в этом. Тогда локальные демографические взрывы или уменьшение численности имеют меньше шансов полностью изничтожить популяцию, и есть место для относительно большой популяции жертв, которая может поддерживать небольшую популяцию хищников.

>// Ваш код тут

>function Tiger() {}