From 101c2d29396887a5b58c96ef9c8d63f5ff7cff16 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 3 Oct 2024 09:24:41 -0700 Subject: [PATCH 1/7] genetics mod template --- mods/genetics.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 mods/genetics.js diff --git a/mods/genetics.js b/mods/genetics.js new file mode 100644 index 00000000..04920fb2 --- /dev/null +++ b/mods/genetics.js @@ -0,0 +1,21 @@ +elements.organism = {} + color: ["#a19348","#b5a85e"], + properties: { + "geneticCode": "00000" + }, + tick: function(pixel) { + if ((pixel.geneticCode & 0b101) = 0) { + + } + else if ((pixel.geneticCode & 0b101) = 1) { + + } + }, + tempHigh: 150, + stateHigh: "meat", + tempLow: -50, + stateLow: "frozen_meat", + category: "life", + state: "solid", + density: 1050 +}, From 7a4b21ac09190180622ea9e7b518b3deb10af787 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 3 Oct 2024 10:30:21 -0700 Subject: [PATCH 2/7] Update genetics.js --- mods/genetics.js | 71 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/mods/genetics.js b/mods/genetics.js index 04920fb2..4cc9534b 100644 --- a/mods/genetics.js +++ b/mods/genetics.js @@ -1,14 +1,79 @@ elements.organism = {} color: ["#a19348","#b5a85e"], properties: { - "geneticCode": "00000" + geneticCode: "00000", + food: 0 }, tick: function(pixel) { if ((pixel.geneticCode & 0b101) = 0) { - + 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; + } } 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, From cac0e974d1a93bc873f2444369b6c47513eb7222 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 3 Oct 2024 11:53:01 -0700 Subject: [PATCH 3/7] eating --- mods/genetics.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/mods/genetics.js b/mods/genetics.js index 4cc9534b..aaf17c02 100644 --- a/mods/genetics.js +++ b/mods/genetics.js @@ -1,20 +1,26 @@ -elements.organism = {} +elements.organism = { color: ["#a19348","#b5a85e"], properties: { - geneticCode: "00000", + geneticCode: 00000, food: 0 }, tick: function(pixel) { if ((pixel.geneticCode & 0b101) = 0) { if (tryMove(pixel, pixel.x, pixel.y+1)) { - if ((pixel.geneticCode & 0b10) = 1 && Math.random() < 0.1) { + if ((pixel.geneticCode & 0b10) > 0 && 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 + } + } } - if ((pixel.geneticCode & 0b10) = 1 && Math.random() < 0.1) { + if ((pixel.geneticCode & 0b10) > 0 && 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 @@ -24,6 +30,16 @@ elements.organism = {} 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 + } + } 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; From 26b3e2f03a1ed4f9a87c82c4ac24c681a2bf5e4e Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 3 Oct 2024 15:13:39 -0700 Subject: [PATCH 4/7] Update genetics.js --- mods/genetics.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/mods/genetics.js b/mods/genetics.js index aaf17c02..5bde449f 100644 --- a/mods/genetics.js +++ b/mods/genetics.js @@ -1,5 +1,5 @@ elements.organism = { - color: ["#a19348","#b5a85e"], + color: "#b5a85e", properties: { geneticCode: 00000, food: 0 @@ -7,7 +7,7 @@ elements.organism = { tick: function(pixel) { if ((pixel.geneticCode & 0b101) = 0) { if (tryMove(pixel, pixel.x, pixel.y+1)) { - if ((pixel.geneticCode & 0b10) > 0 && Math.random() < 0.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 @@ -19,8 +19,14 @@ elements.organism = { pixel.food += 1 } } - } - if ((pixel.geneticCode & 0b10) > 0 && Math.random() < 0.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 @@ -40,6 +46,16 @@ elements.organism = { 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; From 165a23915b086f1784a534133efaa19f840e5de4 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 3 Oct 2024 19:35:28 -0700 Subject: [PATCH 5/7] ACTUALLY MADE GENETICS MOD GOOD --- mods/genetics.js | 1119 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 1018 insertions(+), 101 deletions(-) diff --git a/mods/genetics.js b/mods/genetics.js index 5bde449f..7341a581 100644 --- a/mods/genetics.js +++ b/mods/genetics.js @@ -1,118 +1,1035 @@ 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) { + color: ["#997457","#c4b270","#9c916a","#9e8955","#a89a76"], + properties: { + geneticCode: 0, + vore: 0, + food: 0, + age: 0 + }, + tick: function(pixel) { + if (pixel.geneticCode < 11) { + if (isEmpty(pixel.x, pixel.y+1)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); + } + else if (Math.random() > 0.9 && isEmpty(pixel.x-1, pixel.y+1)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y+1); + } + else if (Math.random() > 0.9 && isEmpty(pixel.x+1, pixel.y+1)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y+1); + } + if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sugar") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + } + if (pixel.age > 2000) { + if (Math.random() > 0.3) { + changePixel(pixel,"sugar"); + } + else if (Math.random() > 0.5) { + changePixel(pixel,"dna"); + } + } + pixel.age += 1 + } + else if (pixel.geneticCode > 10 && pixel.geneticCode < 21) { + if (isEmpty(pixel.x, pixel.y+1)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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) = 0 && Math.random() < 0.1) { - if (!isEmpty(pixel.x,pixel.y+1),true && pixelMap[pixel.x][pixel.y+1].element === "sugar") { + else if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sugar") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + } + if (pixel.age > 2000) { + if (Math.random() > 0.3) { + changePixel(pixel,"meat"); + } + else if (Math.random() > 0.5) { + changePixel(pixel,"sugar"); + } + } + pixel.age += 1 + } + else if (pixel.geneticCode > 20 && pixel.geneticCode < 31) { + if (isEmpty(pixel.x, pixel.y+1)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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); + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "sugar") { + deletePixel(pixel.x+1, pixel.y); 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); + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "sugar") { + deletePixel(pixel.x-1, pixel.y); 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 + if (pixel.vore === 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + 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.vore > 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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 (pixel.vore < 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2 ) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; + } + } + if (pixel.age > 2000) { + if (Math.random() > 0.3) { + changePixel(pixel,"meat"); + } + else if (Math.random() > 0.5) { + changePixel(pixel,"sugar"); + } + } + pixel.age += 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.geneticCode > 30 && pixel.geneticCode < 41) { + if (isEmpty(pixel.x, pixel.y+1)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (pixel.vore === 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore > 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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 (pixel.vore < 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; + } + } + if (pixel.age > 2000) { + if (Math.random() > 0.3) { + changePixel(pixel,"rotten_meat"); + } + else if (Math.random() > 0.5) { + changePixel(pixel,"meat"); + } + } + pixel.age += 1 } - 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 > 40 && pixel.geneticCode < 51) { + if (isEmpty(pixel.x, pixel.y+1)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (pixel.vore === 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore > 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore < 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; + } + } + if (pixel.age > 2000) { + if (Math.random() > 0.3) { + changePixel(pixel,"rotten_meat"); + } + else if (Math.random() > 0.5) { + changePixel(pixel,"meat"); + } + } + pixel.age += 1 } - 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 > 50) { + if (isEmpty(pixel.x, pixel.y+1)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); + } + else if (Math.random() > 0.99 && isEmpty(pixel.x+1, pixel.y)) { + movePixel(pixelMap[pixel.x][pixel.y], pixel.x+1, pixel.y); + } + if (pixel.vore === 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore > 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !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 (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "rotten_meat") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "rotten_meat") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "fly") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "fly") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "fly") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "fly") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "ant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "ant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "ant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "ant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + else if (pixel.vore < 0) { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "grass") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "grass") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "grass") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "grass") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "plant") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "plant") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "plant") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "plant") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "vine") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "vine") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "vine") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "vine") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "vine") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "vine") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "vine") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "vine") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "algae") { + deletePixel(pixel.x, pixel.y-1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "algae") { + deletePixel(pixel.x, pixel.y+1); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "algae") { + deletePixel(pixel.x+1, pixel.y); + pixel.food += 1 + } + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "algae") { + deletePixel(pixel.x-1, pixel.y); + pixel.food += 1 + } + } + if (isEmpty(pixel.x, pixel.y-1) && pixel.food > 10) { + createPixel("organism", pixel.x, pixel.y-1); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x][pixel.y-1].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x+1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x+1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x+1][pixel.y].vore = pixel.vore; + } + } + else if (isEmpty(pixel.x-1, pixel.y) && pixel.food > 10) { + createPixel("organism", pixel.x-1, pixel.y); + pixel.food -= 5; + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; + } + if (Math.random() > 0.8) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore += 1; + } + if (Math.random() < 0.2) { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore -= 1; + } + else { + pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; + } + } + if (pixel.age > 2000) { + if (Math.random() > 0.3) { + changePixel(pixel,"rotten_meat"); + } + else if (Math.random() > 0.5) { + changePixel(pixel,"meat"); + } + } + pixel.age += 1 } - } - }, - tempHigh: 150, - stateHigh: "meat", - tempLow: -50, - stateLow: "frozen_meat", - category: "life", - state: "solid", - density: 1050 -}, + }, + tempHigh: 150, + stateHigh: "meat", + tempLow: -50, + stateLow: "frozen_meat", + category: "life", + state: "solid", + density: 1050 + } From 916892248a519146ffba869bd533a0fe0e038611 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 3 Oct 2024 19:38:25 -0700 Subject: [PATCH 6/7] final bugfix before final release --- mods/genetics.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mods/genetics.js b/mods/genetics.js index 7341a581..a6d633cd 100644 --- a/mods/genetics.js +++ b/mods/genetics.js @@ -1,3 +1,5 @@ +/* by nekonico, do not steal!!!!!! >:3*/ + elements.organism = { color: ["#997457","#c4b270","#9c916a","#9e8955","#a89a76"], properties: { @@ -361,7 +363,7 @@ elements.organism = { } } else if (pixel.vore > 0) { - if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { + /* by nekonico, do not steal!!!!!! >:3*/ if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "meat") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 } @@ -429,7 +431,7 @@ elements.organism = { } else { pixelMap[pixel.x+1][pixel.y].geneticCode = pixel.geneticCode; - } + } if (Math.random() > 0.8) { pixelMap[pixel.x+1][pixel.y].vore = pixel.vore += 1; } @@ -710,7 +712,7 @@ elements.organism = { } else if (pixel.geneticCode > 50) { if (isEmpty(pixel.x, pixel.y+1)) { - movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); + /* by nekonico, do not steal!!!!!! >:3*/ movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); } else if (Math.random() > 0.99 && isEmpty(pixel.x-1, pixel.y)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x-1, pixel.y); @@ -1026,10 +1028,12 @@ elements.organism = { } }, tempHigh: 150, - stateHigh: "meat", + stateHigh: "cooked_meat", tempLow: -50, stateLow: "frozen_meat", - category: "life", + category: "organism", state: "solid", density: 1050 } + +/* by nekonico, do not steal!!!!!! >:3*/ From 8b713ed7d38fce0a37424cf872d7e2b335bceae8 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 3 Oct 2024 19:41:16 -0700 Subject: [PATCH 7/7] added my worked on mod to modlist --- mod-list.html | 1 + 1 file changed, 1 insertion(+) diff --git a/mod-list.html b/mod-list.html index 34ffb190..94d9da34 100644 --- a/mod-list.html +++ b/mod-list.html @@ -284,6 +284,7 @@