diff --git a/mods/genetics.js b/mods/genetics.js index ae95fc73..55e46e69 100644 --- a/mods/genetics.js +++ b/mods/genetics.js @@ -1,88 +1,176 @@ /* by nekonico, do not steal!!!!!! >:3*/ elements.organism = { - color: ["#997457","#c4b270","#9c916a","#9e8955","#a89a76"], + color: ["#997457","#a89a76"], properties: { geneticCode: 0, oldvore: 0, vore: 0, food: 0, - age: 0 + age: 0, + dead: false }, tick: function(pixel) { if (pixel.vore != pixel.oldvore) { if (pixel.vore === 0) { if (Math.random() > 0.5) { - pixel.color = "#997457" - } - else if (Math.random() > 0.5) { - pixel.color = "#c4b270" - } - else if (Math.random() > 0.5) { - pixel.color = "#9c916a" - } - else if (Math.random() > 0.5) { - pixel.color = "#9e8955" + pixel.color = "#997457" } else { - pixel.color = "#a89a76" + pixel.color = "#a89a76" } } else if (pixel.vore === 1) { - pixel.color = "#9E6954" + if (Math.random() > 0.5) { + pixel.color = "#9E6954" + } + else { + pixel.color = "#AB8C6B" + } } else if (pixel.vore === 2) { - pixel.color = "#A25F50" + if (Math.random() > 0.5) { + pixel.color = "#A25F50" + } + else { + pixel.color = "#AF7E61" + } } else if (pixel.vore === 3) { - pixel.color = "#A7544D" + if (Math.random() > 0.5) { + pixel.color = "#A7544D" + } + else { + pixel.color = "#B27056" + } } else if (pixel.vore === 4) { - pixel.color = "#A7544D" + if (Math.random() > 0.5) { + pixel.color = "#A7544D" + } + else { + pixel.color = "#B5624B" + } } else if (pixel.vore === 5) { - pixel.color = "#AC4A4A" + if (Math.random() > 0.5) { + pixel.color = "#AC4A4A" + } + else { + pixel.color = "#B85440" + } } else if (pixel.vore === 6) { - pixel.color = "#B03F47" + if (Math.random() > 0.5) { + pixel.color = "#B03F47" + } + else { + pixel.color = "#BC4636" + } } else if (pixel.vore === 7) { - pixel.color = "#B53543" + if (Math.random() > 0.5) { + pixel.color = "#B53543" + } + else { + pixel.color = "#BF382B" + } } else if (pixel.vore === 8) { - pixel.color = "#B92A40" + if (Math.random() > 0.5) { + pixel.color = "#B92A40" + } + else { + pixel.color = "#C22A20" + } } else if (pixel.vore > 8) { - pixel.color = "#BE203D" + if (Math.random() > 0.5) { + pixel.color = "#BE203D" + } + else { + pixel.color = "#C51C15" + } } else if (pixel.vore === -1) { - pixel.color = "#8B7C4F" + if (Math.random() > 0.5) { + pixel.color = "#8B7C4F" + } + else { + pixel.color = "#9D9A6B" + } } else if (pixel.vore === -2) { - pixel.color = "#7D8447" + if (Math.random() > 0.5) { + pixel.color = "#7D8447" + } + else { + pixel.color = "#939A61" + } } else if (pixel.vore === -3) { - pixel.color = "#6F8C3F" + if (Math.random() > 0.5) { + pixel.color = "#6F8C3F" + } + else { + pixel.color = "#889A56" + } } else if (pixel.vore === -4) { - pixel.color = "#619437" + if (Math.random() > 0.5) { + pixel.color = "#619437" + } + else { + pixel.color = "#7D9A4B" + } } else if (pixel.vore === -5) { - pixel.color = "#539C2F" + if (Math.random() > 0.5) { + pixel.color = "#539C2F" + } + else { + pixel.color = "#739A40" + } } else if (pixel.vore === -6) { - pixel.color = "#46A428" + if (Math.random() > 0.5) { + pixel.color = "#46A428" + } + else { + pixel.color = "#689936" + } } else if (pixel.vore === -7) { - pixel.color = "#38AC20" + if (Math.random() > 0.5) { + pixel.color = "#38AC20" + } + else { + pixel.color = "#5E992B" + } } else if (pixel.vore === -8) { - pixel.color = "#2AB418" + if (Math.random() > 0.5) { + pixel.color = "#2AB418" + } + else { + pixel.color = "#539920" + } } else if (pixel.vore < -8) { - pixel.color = "#1CBC10" + if (Math.random() > 0.5) { + pixel.color = "#1CBC10" + } + else { + pixel.color = "#489915" + } } } + if (pixel.food > 0 && Math.random() > 0.99) { + pixel.food -= 1; + } + else if (pixel.food < 1 && pixel.age > 1000 && Math.random() > 0.99) { + pixel.dead = true; + } if (pixel.geneticCode < 11) { if (isEmpty(pixel.x, pixel.y+1)) { movePixel(pixelMap[pixel.x][pixel.y], pixel.x, pixel.y+1); @@ -135,7 +223,7 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { changePixel(pixel,"sugar"); } @@ -210,9 +298,17 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].geneticCode = pixel.geneticCode; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { changePixel(pixel,"sugar"); @@ -230,23 +326,23 @@ elements.organism = { 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 (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 (pixel.vore === 0) { + 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, 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 (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 @@ -382,9 +478,17 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { changePixel(pixel,"sugar"); @@ -403,6 +507,22 @@ elements.organism = { 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 == "sugar") { + 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 == "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 (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 @@ -538,12 +658,28 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"rotten_meat"); + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } } pixel.age += 1 @@ -559,6 +695,22 @@ elements.organism = { 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 == "sugar") { + 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 == "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 (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 @@ -607,19 +759,19 @@ elements.organism = { 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") { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } @@ -675,35 +827,19 @@ elements.organism = { 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") { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_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 == "grass") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_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 == "grass") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_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 == "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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } @@ -774,19 +910,35 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"rotten_meat"); + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } } pixel.age += 1 } - else if (pixel.geneticCode > 50) { + else if (pixel.geneticCode > 50 && pixel.geneticCode < 61) { if (isEmpty(pixel.x, pixel.y+1)) { - /* by nekonico, do not steal!!!!!! >:3*/ movePixel(pixelMap[pixel.x][pixel.y], 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); @@ -795,6 +947,22 @@ elements.organism = { 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 == "sugar") { + 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 == "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 (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 @@ -843,19 +1011,19 @@ elements.organism = { 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") { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "dead_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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "dead_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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "dead_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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "dead_plant") { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } @@ -959,6 +1127,22 @@ elements.organism = { 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 == "dead_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 == "dead_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 == "dead_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 == "dead_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 == "plant") { deletePixel(pixel.x, pixel.y-1); pixel.food += 1 @@ -975,51 +1159,35 @@ elements.organism = { 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") { + 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 == "vine") { + 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 == "vine") { + 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 == "vine") { + 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") { + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "tree_branch") { 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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "tree_branch") { 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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x+1, pixel.y, true) && pixelMap[pixel.x+1][pixel.y].element == "tree_branch") { 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") { + else if (Math.random() < 0.1 && !isEmpty(pixel.x-1, pixel.y, true) && pixelMap[pixel.x-1][pixel.y].element == "tree_branch") { deletePixel(pixel.x-1, pixel.y); pixel.food += 1 } @@ -1090,22 +1258,1474 @@ elements.organism = { pixelMap[pixel.x-1][pixel.y].vore = pixel.vore; } } - if (pixel.age > 2000) { + if (pixel.age > 10000 || pixel.dead === true) { if (Math.random() > 0.3) { - changePixel(pixel,"rotten_meat"); + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } else if (Math.random() > 0.5) { - changePixel(pixel,"meat"); + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + } + pixel.age += 1 + } + else if (pixel.geneticCode > 60 && pixel.geneticCode < 71) { + if (isEmpty(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); + } + 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 == "sugar") { + 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 == "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 (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 == "dead_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 == "dead_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 == "dead_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 == "dead_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 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "egg") { + 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 == "egg") { + 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 == "egg") { + 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 == "egg") { + 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 == "rat") { + 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 == "rat") { + 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 == "rat") { + 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 == "rat") { + 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 == "dead_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 == "dead_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 == "dead_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 == "dead_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 == "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 == "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 == "tree_branch") { + 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 == "tree_branch") { + 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 == "tree_branch") { + 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 == "tree_branch") { + 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 == "wood") { + 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 == "wood") { + 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 == "wood") { + 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 == "wood") { + 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 == "bamboo") { + 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 == "bamboo") { + 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 == "bamboo") { + 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 == "bamboo") { + 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 > 10000 || pixel.dead === true) { + if (Math.random() > 0.3) { + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + else if (Math.random() > 0.5) { + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + } + pixel.age += 1 + } + else if (pixel.geneticCode > 70 && pixel.geneticCode < 81) { + 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 == "sugar") { + 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 == "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 (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 == "dead_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 == "dead_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 == "dead_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 == "dead_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 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "egg") { + 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 == "egg") { + 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 == "egg") { + 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 == "egg") { + 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 == "rat") { + 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 == "rat") { + 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 == "rat") { + 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 == "rat") { + 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 == "bird") { + 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 == "bird") { + 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 == "bird") { + 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 == "bird") { + 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 == "fish") { + 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 == "fish") { + 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 == "fish") { + 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 == "fish") { + 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 == "dead_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 == "dead_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 == "dead_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 == "dead_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 == "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 == "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 == "tree_branch") { + 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 == "tree_branch") { + 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 == "tree_branch") { + 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 == "tree_branch") { + 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 == "wood") { + 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 == "wood") { + 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 == "wood") { + 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 == "wood") { + 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 == "bamboo") { + 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 == "bamboo") { + 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 == "bamboo") { + 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 == "bamboo") { + 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 == "cactus") { + 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 == "cactus") { + 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 == "cactus") { + 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 == "cactus") { + 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 > 10000 || pixel.dead === true) { + if (Math.random() > 0.3) { + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + else if (Math.random() > 0.5) { + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + } + pixel.age += 1 + } + else if (pixel.geneticCode > 80) { + 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 == "sugar") { + 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 == "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 (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 == "dead_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 == "dead_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 == "dead_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 == "dead_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 + } + if (Math.random() < 0.1 && !isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "egg") { + 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 == "egg") { + 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 == "egg") { + 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 == "egg") { + 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 == "rat") { + 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 == "rat") { + 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 == "rat") { + 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 == "rat") { + 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 == "bird") { + 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 == "bird") { + 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 == "bird") { + 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 == "bird") { + 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 == "fish") { + 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 == "fish") { + 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 == "fish") { + 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 == "fish") { + 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 == "head") { + 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 == "head") { + 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 == "head") { + 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 == "head") { + 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 == "body") { + 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 == "body") { + 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 == "body") { + 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 == "body") { + 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 == "dead_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 == "dead_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 == "dead_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 == "dead_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 == "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 == "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 == "tree_branch") { + 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 == "tree_branch") { + 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 == "tree_branch") { + 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 == "tree_branch") { + 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 == "wood") { + 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 == "wood") { + 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 == "wood") { + 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 == "wood") { + 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 == "bamboo") { + 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 == "bamboo") { + 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 == "bamboo") { + 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 == "bamboo") { + 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 == "cactus") { + 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 == "cactus") { + 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 == "cactus") { + 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 == "cactus") { + 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 == "petal") { + 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 == "petal") { + 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 == "petal") { + 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 == "petal") { + 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 == "pistil") { + 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 == "pistil") { + 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 == "pistil") { + 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 == "pistil") { + 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 > 10000 || pixel.dead === true) { + if (Math.random() > 0.3) { + if (pixel.vore > 0) { + changePixel(pixel,"rotten_meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"dead_plant"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } + } + else if (Math.random() > 0.5) { + if (pixel.vore > 0) { + changePixel(pixel,"meat"); + } + else if (pixel.vore < 0) { + changePixel(pixel,"grass"); + } + else if (pixel.vore === 0) { + changePixel(pixel,"sugar"); + } } } pixel.age += 1 } pixel.oldvore = pixel.vore }, + reactions: { + "cancer": { "elem1":"cancer", "chance":0.005 }, + "radiation": { "elem1":["ash","grass","meat","cooked_meat","dead_plant","dna","sugar"], "chance":0.4 }, + }, + burn: 10, + burnTime: 250, + burnInto: ["cooked_meat","dead_plant","dna","sugar"], tempHigh: 150, - stateHigh: "cooked_meat", + stateHigh: ["cooked_meat","dead_plant","dna","sugar"], tempLow: -50, - stateLow: "frozen_meat", + stateLow: ["frozen_meat","frozen_plant","dna","sugar"], + breakInto: ["rotten_meat","dead_plant","dna","sugar"], category: "organism", state: "solid", density: 1050