Code edit (1 edits merged)
Please save this source code
User prompt
Nature World Builder
Initial prompt
Toca nature (2014-2019). Tap on the mountain button πΊ, the water button π¦¦, the tree button π¦, or the axe button πͺ, or the magnifying glass button π, use your finger to swipe on the grass, use the magnifying glass π to see the animals, tap on the camera to take a picture
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Animal = Container.expand(function () {
var self = Container.call(this);
var animalGraphics = self.attachAsset('animal', {
anchorX: 0.5,
anchorY: 0.5
});
self.moveSpeed = 1;
self.targetX = self.x;
self.targetY = self.y;
self.moveTimer = 0;
self.discovered = false;
self.update = function () {
self.moveTimer++;
if (self.moveTimer > 180) {
self.targetX = Math.random() * 1800 + 124;
self.targetY = Math.random() * 1800 + 600;
self.moveTimer = 0;
}
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
if (Math.abs(dx) > 5 || Math.abs(dy) > 5) {
self.x += dx * 0.01;
self.y += dy * 0.01;
}
if (!self.discovered) {
animalGraphics.alpha = 0.3;
} else {
animalGraphics.alpha = 1.0;
}
};
return self;
});
var MagnifyingGlass = Container.expand(function () {
var self = Container.call(this);
var glassGraphics = self.attachAsset('magnifyingGlass', {
anchorX: 0.5,
anchorY: 0.5
});
self.active = false;
self.update = function () {
if (self.active) {
glassGraphics.alpha = 0.8;
} else {
glassGraphics.alpha = 0.3;
}
};
return self;
});
var Mountain = Container.expand(function () {
var self = Container.call(this);
var mountainGraphics = self.attachAsset('mountain', {
anchorX: 0.5,
anchorY: 1.0
});
self.placed = false;
return self;
});
var ToolButton = Container.expand(function (toolType) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('toolButton', {
anchorX: 0.5,
anchorY: 0.5
});
var toolText = new Text2(toolType, {
size: 24,
fill: 0xFFFFFF
});
toolText.anchor.set(0.5, 0.5);
self.addChild(toolText);
self.toolType = toolType;
self.selected = false;
self.setSelected = function (selected) {
self.selected = selected;
if (selected) {
buttonGraphics.tint = 0x2E7D32;
} else {
buttonGraphics.tint = 0x4CAF50;
}
};
self.down = function (x, y, obj) {
selectTool(self.toolType);
};
return self;
});
var Tree = Container.expand(function () {
var self = Container.call(this);
var treeGraphics = self.attachAsset('tree', {
anchorX: 0.5,
anchorY: 1.0
});
self.placed = false;
return self;
});
var Water = Container.expand(function () {
var self = Container.call(this);
var waterGraphics = self.attachAsset('water', {
anchorX: 0.5,
anchorY: 0.5
});
self.placed = false;
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
var gameBackground = game.attachAsset('background', {
x: 0,
y: 0
});
var selectedTool = 'mountain';
var toolButtons = [];
var mountains = [];
var waterSources = [];
var trees = [];
var animals = [];
var magnifyingGlass = null;
var ecosystemTimer = 0;
var tools = ['mountain', 'water', 'tree', 'axe', 'magnify', 'camera'];
function selectTool(toolType) {
selectedTool = toolType;
for (var i = 0; i < toolButtons.length; i++) {
toolButtons[i].setSelected(toolButtons[i].toolType === toolType);
}
if (magnifyingGlass) {
magnifyingGlass.active = toolType === 'magnify';
}
}
function createToolbar() {
var startX = 200;
var startY = 100;
var spacing = 160;
for (var i = 0; i < tools.length; i++) {
var toolButton = new ToolButton(tools[i]);
toolButton.x = startX + i * spacing;
toolButton.y = startY;
toolButtons.push(toolButton);
LK.gui.addChild(toolButton);
}
selectTool('mountain');
}
function placeMountain(x, y) {
var mountain = new Mountain();
mountain.x = x;
mountain.y = y;
mountain.placed = true;
mountains.push(mountain);
game.addChild(mountain);
LK.getSound('place').play();
}
function placeWater(x, y) {
var water = new Water();
water.x = x;
water.y = y;
water.placed = true;
waterSources.push(water);
game.addChild(water);
LK.getSound('place').play();
}
function placeTree(x, y) {
var tree = new Tree();
tree.x = x;
tree.y = y;
tree.placed = true;
trees.push(tree);
game.addChild(tree);
LK.getSound('place').play();
}
function spawnAnimal() {
if (animals.length < 8) {
var animal = new Animal();
animal.x = Math.random() * 1800 + 124;
animal.y = Math.random() * 1800 + 600;
animals.push(animal);
game.addChild(animal);
}
}
function removeElementAt(x, y) {
var removed = false;
for (var i = mountains.length - 1; i >= 0; i--) {
var mountain = mountains[i];
var dx = Math.abs(mountain.x - x);
var dy = Math.abs(mountain.y - y);
if (dx < 100 && dy < 80) {
mountain.destroy();
mountains.splice(i, 1);
removed = true;
break;
}
}
if (!removed) {
for (var i = waterSources.length - 1; i >= 0; i--) {
var water = waterSources[i];
var dx = Math.abs(water.x - x);
var dy = Math.abs(water.y - y);
if (dx < 50 && dy < 50) {
water.destroy();
waterSources.splice(i, 1);
removed = true;
break;
}
}
}
if (!removed) {
for (var i = trees.length - 1; i >= 0; i--) {
var tree = trees[i];
var dx = Math.abs(tree.x - x);
var dy = Math.abs(tree.y - y);
if (dx < 40 && dy < 60) {
tree.destroy();
trees.splice(i, 1);
removed = true;
break;
}
}
}
if (removed) {
LK.getSound('remove').play();
}
}
function discoverAnimals(x, y) {
for (var i = 0; i < animals.length; i++) {
var animal = animals[i];
var dx = Math.abs(animal.x - x);
var dy = Math.abs(animal.y - y);
if (dx < 150 && dy < 150) {
animal.discovered = true;
}
}
}
function takeScreenshot() {
LK.getSound('camera').play();
LK.effects.flashScreen(0xFFFFFF, 200);
}
createToolbar();
magnifyingGlass = new MagnifyingGlass();
magnifyingGlass.x = 1024;
magnifyingGlass.y = 1366;
game.addChild(magnifyingGlass);
game.down = function (x, y, obj) {
if (y < 200) return;
if (selectedTool === 'mountain') {
placeMountain(x, y);
} else if (selectedTool === 'water') {
placeWater(x, y);
} else if (selectedTool === 'tree') {
placeTree(x, y);
} else if (selectedTool === 'axe') {
removeElementAt(x, y);
} else if (selectedTool === 'magnify') {
discoverAnimals(x, y);
magnifyingGlass.x = x;
magnifyingGlass.y = y;
} else if (selectedTool === 'camera') {
takeScreenshot();
}
};
game.update = function () {
ecosystemTimer++;
if (ecosystemTimer % 600 === 0) {
var habitatScore = mountains.length + waterSources.length + trees.length;
if (habitatScore > 2) {
spawnAnimal();
}
}
for (var i = animals.length - 1; i >= 0; i--) {
var animal = animals[i];
if (animal.x < 0 || animal.x > 2048 || animal.y < 500 || animal.y > 2732) {
animal.x = Math.random() * 1800 + 124;
animal.y = Math.random() * 1800 + 600;
}
}
}; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Animal = Container.expand(function () {
var self = Container.call(this);
var animalGraphics = self.attachAsset('animal', {
anchorX: 0.5,
anchorY: 0.5
});
self.moveSpeed = 1;
self.targetX = self.x;
self.targetY = self.y;
self.moveTimer = 0;
self.discovered = false;
self.update = function () {
self.moveTimer++;
if (self.moveTimer > 180) {
self.targetX = Math.random() * 1800 + 124;
self.targetY = Math.random() * 1800 + 600;
self.moveTimer = 0;
}
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
if (Math.abs(dx) > 5 || Math.abs(dy) > 5) {
self.x += dx * 0.01;
self.y += dy * 0.01;
}
if (!self.discovered) {
animalGraphics.alpha = 0.3;
} else {
animalGraphics.alpha = 1.0;
}
};
return self;
});
var MagnifyingGlass = Container.expand(function () {
var self = Container.call(this);
var glassGraphics = self.attachAsset('magnifyingGlass', {
anchorX: 0.5,
anchorY: 0.5
});
self.active = false;
self.update = function () {
if (self.active) {
glassGraphics.alpha = 0.8;
} else {
glassGraphics.alpha = 0.3;
}
};
return self;
});
var Mountain = Container.expand(function () {
var self = Container.call(this);
var mountainGraphics = self.attachAsset('mountain', {
anchorX: 0.5,
anchorY: 1.0
});
self.placed = false;
return self;
});
var ToolButton = Container.expand(function (toolType) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('toolButton', {
anchorX: 0.5,
anchorY: 0.5
});
var toolText = new Text2(toolType, {
size: 24,
fill: 0xFFFFFF
});
toolText.anchor.set(0.5, 0.5);
self.addChild(toolText);
self.toolType = toolType;
self.selected = false;
self.setSelected = function (selected) {
self.selected = selected;
if (selected) {
buttonGraphics.tint = 0x2E7D32;
} else {
buttonGraphics.tint = 0x4CAF50;
}
};
self.down = function (x, y, obj) {
selectTool(self.toolType);
};
return self;
});
var Tree = Container.expand(function () {
var self = Container.call(this);
var treeGraphics = self.attachAsset('tree', {
anchorX: 0.5,
anchorY: 1.0
});
self.placed = false;
return self;
});
var Water = Container.expand(function () {
var self = Container.call(this);
var waterGraphics = self.attachAsset('water', {
anchorX: 0.5,
anchorY: 0.5
});
self.placed = false;
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
var gameBackground = game.attachAsset('background', {
x: 0,
y: 0
});
var selectedTool = 'mountain';
var toolButtons = [];
var mountains = [];
var waterSources = [];
var trees = [];
var animals = [];
var magnifyingGlass = null;
var ecosystemTimer = 0;
var tools = ['mountain', 'water', 'tree', 'axe', 'magnify', 'camera'];
function selectTool(toolType) {
selectedTool = toolType;
for (var i = 0; i < toolButtons.length; i++) {
toolButtons[i].setSelected(toolButtons[i].toolType === toolType);
}
if (magnifyingGlass) {
magnifyingGlass.active = toolType === 'magnify';
}
}
function createToolbar() {
var startX = 200;
var startY = 100;
var spacing = 160;
for (var i = 0; i < tools.length; i++) {
var toolButton = new ToolButton(tools[i]);
toolButton.x = startX + i * spacing;
toolButton.y = startY;
toolButtons.push(toolButton);
LK.gui.addChild(toolButton);
}
selectTool('mountain');
}
function placeMountain(x, y) {
var mountain = new Mountain();
mountain.x = x;
mountain.y = y;
mountain.placed = true;
mountains.push(mountain);
game.addChild(mountain);
LK.getSound('place').play();
}
function placeWater(x, y) {
var water = new Water();
water.x = x;
water.y = y;
water.placed = true;
waterSources.push(water);
game.addChild(water);
LK.getSound('place').play();
}
function placeTree(x, y) {
var tree = new Tree();
tree.x = x;
tree.y = y;
tree.placed = true;
trees.push(tree);
game.addChild(tree);
LK.getSound('place').play();
}
function spawnAnimal() {
if (animals.length < 8) {
var animal = new Animal();
animal.x = Math.random() * 1800 + 124;
animal.y = Math.random() * 1800 + 600;
animals.push(animal);
game.addChild(animal);
}
}
function removeElementAt(x, y) {
var removed = false;
for (var i = mountains.length - 1; i >= 0; i--) {
var mountain = mountains[i];
var dx = Math.abs(mountain.x - x);
var dy = Math.abs(mountain.y - y);
if (dx < 100 && dy < 80) {
mountain.destroy();
mountains.splice(i, 1);
removed = true;
break;
}
}
if (!removed) {
for (var i = waterSources.length - 1; i >= 0; i--) {
var water = waterSources[i];
var dx = Math.abs(water.x - x);
var dy = Math.abs(water.y - y);
if (dx < 50 && dy < 50) {
water.destroy();
waterSources.splice(i, 1);
removed = true;
break;
}
}
}
if (!removed) {
for (var i = trees.length - 1; i >= 0; i--) {
var tree = trees[i];
var dx = Math.abs(tree.x - x);
var dy = Math.abs(tree.y - y);
if (dx < 40 && dy < 60) {
tree.destroy();
trees.splice(i, 1);
removed = true;
break;
}
}
}
if (removed) {
LK.getSound('remove').play();
}
}
function discoverAnimals(x, y) {
for (var i = 0; i < animals.length; i++) {
var animal = animals[i];
var dx = Math.abs(animal.x - x);
var dy = Math.abs(animal.y - y);
if (dx < 150 && dy < 150) {
animal.discovered = true;
}
}
}
function takeScreenshot() {
LK.getSound('camera').play();
LK.effects.flashScreen(0xFFFFFF, 200);
}
createToolbar();
magnifyingGlass = new MagnifyingGlass();
magnifyingGlass.x = 1024;
magnifyingGlass.y = 1366;
game.addChild(magnifyingGlass);
game.down = function (x, y, obj) {
if (y < 200) return;
if (selectedTool === 'mountain') {
placeMountain(x, y);
} else if (selectedTool === 'water') {
placeWater(x, y);
} else if (selectedTool === 'tree') {
placeTree(x, y);
} else if (selectedTool === 'axe') {
removeElementAt(x, y);
} else if (selectedTool === 'magnify') {
discoverAnimals(x, y);
magnifyingGlass.x = x;
magnifyingGlass.y = y;
} else if (selectedTool === 'camera') {
takeScreenshot();
}
};
game.update = function () {
ecosystemTimer++;
if (ecosystemTimer % 600 === 0) {
var habitatScore = mountains.length + waterSources.length + trees.length;
if (habitatScore > 2) {
spawnAnimal();
}
}
for (var i = animals.length - 1; i >= 0; i--) {
var animal = animals[i];
if (animal.x < 0 || animal.x > 2048 || animal.y < 500 || animal.y > 2732) {
animal.x = Math.random() * 1800 + 124;
animal.y = Math.random() * 1800 + 600;
}
}
};