Населяем мир

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

function Plant() {

  this.energy = 3 + Math.random() * 4;

}

Plant.prototype.act = function(context) {

  if (this.energy > 15) {

    var space = context.find(" ");

    if (space)

      return {type: "reproduce", direction: space};

  }

  if (this.energy < 20)

    return {type: "grow"};

};

Растения начинают со случайного уровня энергии от 3 до 7, чтобы они не размножались все в один ход. Когда растение достигает энергии 15, а рядом есть пустая клетка – оно размножается в неё. Если оно не может размножиться, то просто растёт, пока не достигнет энергии 20.

Теперь определим поедателя растений.

function PlantEater() {

  this.energy = 20;

}

PlantEater.prototype.act = function(context) {

  var space = context.find(" ");

  if (this.energy > 60 && space)

    return {type: "reproduce", direction: space};

  var plant = context.find("*");

  if (plant)

    return {type: "eat", direction: plant};

  if (space)

    return {type: "move", direction: space};

};

Для растений будем использовать символ * — то, что будет искать существо в поисках еды.