Tabs to spaces
This commit is contained in:
@@ -4,70 +4,70 @@ const Brain = require("./Perception/Brain")
|
|||||||
|
|
||||||
class RandomOrganismGenerator {
|
class RandomOrganismGenerator {
|
||||||
|
|
||||||
static generate(env) {
|
static generate(env) {
|
||||||
|
|
||||||
var center = env.grid_map.getCenter();
|
var center = env.grid_map.getCenter();
|
||||||
var organism = new Organism(center[0], center[1], env, null);
|
var organism = new Organism(center[0], center[1], env, null);
|
||||||
organism.anatomy.addDefaultCell(CellStates.mouth, 0, 0);
|
organism.anatomy.addDefaultCell(CellStates.mouth, 0, 0);
|
||||||
|
|
||||||
var outermostLayer = RandomOrganismGenerator.organismLayers;
|
var outermostLayer = RandomOrganismGenerator.organismLayers;
|
||||||
var x, y;
|
var x, y;
|
||||||
|
|
||||||
// iterate from center to edge of organism
|
// iterate from center to edge of organism
|
||||||
// layer 0 is the central cell of the organism
|
// layer 0 is the central cell of the organism
|
||||||
for (var layer = 1; layer <= outermostLayer; layer++) {
|
for (var layer = 1; layer <= outermostLayer; layer++) {
|
||||||
|
|
||||||
var someCellSpawned = false;
|
var someCellSpawned = false;
|
||||||
var spawnChance = RandomOrganismGenerator.cellSpawnChance * 1 - ((layer - 1) / outermostLayer);
|
var spawnChance = RandomOrganismGenerator.cellSpawnChance * 1 - ((layer - 1) / outermostLayer);
|
||||||
|
|
||||||
// top
|
// top
|
||||||
y = -layer;
|
y = -layer;
|
||||||
for (x = -layer; x <= layer; x++)
|
for (x = -layer; x <= layer; x++)
|
||||||
someCellSpawned = RandomOrganismGenerator.trySpawnCell(organism, x, y, spawnChance);
|
someCellSpawned = RandomOrganismGenerator.trySpawnCell(organism, x, y, spawnChance);
|
||||||
|
|
||||||
// bottom
|
// bottom
|
||||||
y = layer;
|
y = layer;
|
||||||
for (x = -layer; x <= layer; x++)
|
for (x = -layer; x <= layer; x++)
|
||||||
someCellSpawned = RandomOrganismGenerator.trySpawnCell(organism, x, y, spawnChance);
|
someCellSpawned = RandomOrganismGenerator.trySpawnCell(organism, x, y, spawnChance);
|
||||||
|
|
||||||
// left
|
// left
|
||||||
x = -layer;
|
x = -layer;
|
||||||
for (y = -layer + 1; y <= layer - 1; y++)
|
for (y = -layer + 1; y <= layer - 1; y++)
|
||||||
someCellSpawned = RandomOrganismGenerator.trySpawnCell(organism, x, y, spawnChance);
|
someCellSpawned = RandomOrganismGenerator.trySpawnCell(organism, x, y, spawnChance);
|
||||||
|
|
||||||
// right
|
// right
|
||||||
x = layer;
|
x = layer;
|
||||||
for (y = -layer + 1; y < layer - 1; y++)
|
for (y = -layer + 1; y < layer - 1; y++)
|
||||||
someCellSpawned = RandomOrganismGenerator.trySpawnCell(organism, x, y, spawnChance);
|
someCellSpawned = RandomOrganismGenerator.trySpawnCell(organism, x, y, spawnChance);
|
||||||
|
|
||||||
if (!someCellSpawned)
|
if (!someCellSpawned)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// randomize the organism's brain
|
// randomize the organism's brain
|
||||||
var decisions = organism.brain.decisions;
|
var decisions = organism.brain.decisions;
|
||||||
decisions[CellStates.empty.name] = Brain.Decision.getRandom();
|
decisions[CellStates.empty.name] = Brain.Decision.getRandom();
|
||||||
decisions[CellStates.food.name] = Brain.Decision.getRandom();
|
decisions[CellStates.food.name] = Brain.Decision.getRandom();
|
||||||
decisions[CellStates.wall.name] = Brain.Decision.getRandom();
|
decisions[CellStates.wall.name] = Brain.Decision.getRandom();
|
||||||
decisions[CellStates.mouth.name] = Brain.Decision.getRandom();
|
decisions[CellStates.mouth.name] = Brain.Decision.getRandom();
|
||||||
decisions[CellStates.producer.name] = Brain.Decision.getRandom();
|
decisions[CellStates.producer.name] = Brain.Decision.getRandom();
|
||||||
decisions[CellStates.mover.name] = Brain.Decision.getRandom();
|
decisions[CellStates.mover.name] = Brain.Decision.getRandom();
|
||||||
decisions[CellStates.killer.name] = Brain.Decision.getRandom();
|
decisions[CellStates.killer.name] = Brain.Decision.getRandom();
|
||||||
decisions[CellStates.armor.name] = Brain.Decision.getRandom();
|
decisions[CellStates.armor.name] = Brain.Decision.getRandom();
|
||||||
decisions[CellStates.eye.name] = Brain.Decision.getRandom();
|
decisions[CellStates.eye.name] = Brain.Decision.getRandom();
|
||||||
|
|
||||||
return organism;
|
return organism;
|
||||||
}
|
}
|
||||||
|
|
||||||
static trySpawnCell(organism, x, y, spawnChance) {
|
static trySpawnCell(organism, x, y, spawnChance) {
|
||||||
|
|
||||||
var neighbors = organism.anatomy.getNeighborsOfCell(x, y);
|
var neighbors = organism.anatomy.getNeighborsOfCell(x, y);
|
||||||
if (neighbors.length && Math.random() < spawnChance) {
|
if (neighbors.length && Math.random() < spawnChance) {
|
||||||
organism.anatomy.addRandomizedCell(CellStates.getRandomLivingType(), x, y);
|
organism.anatomy.addRandomizedCell(CellStates.getRandomLivingType(), x, y);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user