119 lines
4.5 KiB
JavaScript
119 lines
4.5 KiB
JavaScript
elements.organism = {
|
|
color: "#b5a85e",
|
|
properties: {
|
|
geneticCode: 00000,
|
|
food: 0
|
|
},
|
|
tick: function(pixel) {
|
|
if ((pixel.geneticCode & 0b101) = 0) {
|
|
if (tryMove(pixel, pixel.x, pixel.y+1)) {
|
|
if ((pixel.geneticCode & 0b10) > 0 && (pixel.geneticCode & 0b10) < 5 && Math.random() < 0.1) {
|
|
if (!isEmpty(pixel.x,pixel.y+1),true && pixelMap[pixel.x][pixel.y+1].isFood) {
|
|
deletePixel(pixel.x, pixel.y+1);
|
|
pixel.food += 1
|
|
}
|
|
}
|
|
else if ((pixel.geneticCode & 0b10) = 0 && Math.random() < 0.1) {
|
|
if (!isEmpty(pixel.x,pixel.y+1),true && pixelMap[pixel.x][pixel.y+1].element === "sugar") {
|
|
deletePixel(pixel.x, pixel.y+1);
|
|
pixel.food += 1
|
|
}
|
|
}
|
|
else if ((pixel.geneticCode & 0b10) > 4 && Math.random() < 0.1) {
|
|
if (!isEmpty(pixel.x,pixel.y+1),true && pixelMap[pixel.x][pixel.y+1].element === "sugar") {
|
|
deletePixel(pixel.x, pixel.y+1);
|
|
pixel.food += 1
|
|
}
|
|
}
|
|
}
|
|
if ((pixel.geneticCode & 0b10) > 0 && (pixel.geneticCode & 0b10) < 5 && Math.random() < 0.1) {
|
|
if (!isEmpty(pixel.x+1,pixel.y),true && pixelMap[pixel.x+1][pixel.y].isFood) {
|
|
deletePixel(pixel.x+1, pixel.y);
|
|
pixel.food += 1
|
|
}
|
|
else if (!isEmpty(pixel.x-1,pixel.y),true && pixelMap[pixel.x-1][pixel.y].isFood) {
|
|
deletePixel(pixel.x-1, pixel.y);
|
|
pixel.food += 1
|
|
}
|
|
}
|
|
else if ((pixel.geneticCode & 0b10) = 0 && Math.random() < 0.1) {
|
|
if (!isEmpty(pixel.x+1,pixel.y),true && pixelMap[pixel.x+1][pixel.y].element === "sugar") {
|
|
deletePixel(pixel.x+1, pixel.y);
|
|
pixel.food += 1
|
|
}
|
|
else if (!isEmpty(pixel.x-1,pixel.y),true && pixelMap[pixel.x-1][pixel.y].element === "sugar") {
|
|
deletePixel(pixel.x-1, pixel.y);
|
|
pixel.food += 1
|
|
}
|
|
}
|
|
else if ((pixel.geneticCode & 0b10) > 4 && Math.random() < 0.1) {
|
|
if (!isEmpty(pixel.x+1,pixel.y),true && pixelMap[pixel.x+1][pixel.y].element === "meat") {
|
|
deletePixel(pixel.x+1, pixel.y);
|
|
pixel.food += 1
|
|
}
|
|
else if (!isEmpty(pixel.x-1,pixel.y),true && pixelMap[pixel.x-1][pixel.y].element === "meat") {
|
|
deletePixel(pixel.x-1, pixel.y);
|
|
pixel.food += 1
|
|
}
|
|
}
|
|
if (pixel.food === 5 && isEmpty(pixel.x,pixel.y-1)) {
|
|
createPixel("organism", pixel.x, pixel.y-1);
|
|
pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode;
|
|
pixel.food -= 5;
|
|
}
|
|
else if (pixel.food === 5 && isEmpty(pixel.x+1,pixel.y)) {
|
|
createPixel("organism", pixel.x, pixel.y-1);
|
|
pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode;
|
|
pixel.food -= 5;
|
|
}
|
|
else if (pixel.food === 5 && isEmpty(pixel.x-1,pixel.y)) {
|
|
createPixel("organism", pixel.x, pixel.y-1);
|
|
pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode;
|
|
pixel.food -= 5;
|
|
}
|
|
}
|
|
else if ((pixel.geneticCode & 0b101) = 1) {
|
|
if (tryMove(pixel, pixel.x, pixel.y+1)) {
|
|
if ((pixel.geneticCode & 0b10) = 1 && Math.random() < 0.1) {
|
|
if (!isEmpty(pixel.x,pixel.y+1),true && pixelMap[pixel.x][pixel.y+1].isFood) {
|
|
deletePixel(pixel.x, pixel.y+1);
|
|
pixel.food += 1
|
|
}
|
|
}
|
|
}
|
|
if ((pixel.geneticCode & 0b10) = 1 && Math.random() < 0.1) {
|
|
if (!isEmpty(pixel.x+1,pixel.y),true && pixelMap[pixel.x+1][pixel.y].isFood) {
|
|
deletePixel(pixel.x+1, pixel.y);
|
|
pixel.food += 1
|
|
}
|
|
else if (!isEmpty(pixel.x-1,pixel.y),true && pixelMap[pixel.x-1][pixel.y].isFood) {
|
|
deletePixel(pixel.x-1, pixel.y);
|
|
pixel.food += 1
|
|
}
|
|
}
|
|
if (pixel.food === 5 && isEmpty(pixel.x,pixel.y-1)) {
|
|
createPixel("organism", pixel.x, pixel.y-1);
|
|
pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode;
|
|
pixel.food -= 5;
|
|
}
|
|
else if (pixel.food === 5 && isEmpty(pixel.x+1,pixel.y)) {
|
|
createPixel("organism", pixel.x, pixel.y-1);
|
|
pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode;
|
|
pixel.food -= 5;
|
|
}
|
|
else if (pixel.food === 5 && isEmpty(pixel.x-1,pixel.y)) {
|
|
createPixel("organism", pixel.x, pixel.y-1);
|
|
pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode;
|
|
pixel.food -= 5;
|
|
}
|
|
}
|
|
},
|
|
tempHigh: 150,
|
|
stateHigh: "meat",
|
|
tempLow: -50,
|
|
stateLow: "frozen_meat",
|
|
category: "life",
|
|
state: "solid",
|
|
density: 1050
|
|
},
|