var Spider = Container.expand(function () {
var self = Container.call(this);
var spiderGraphics = self.createAsset('spider', 'Spider Graphics', .5, .5);
spiderGraphics.scale.x = 3;
spiderGraphics.scale.y = 3;
self.x = -spiderGraphics.width;
self.y = 2732 - spiderGraphics.height - 260;
self.xSpeed = 0.5;
self.move = function () {
self.x += self.xSpeed;
if (self.x > 2048) {
self.x = -spiderGraphics.width;
}
};
});
var EmptyHeart = Container.expand(function () {
var self = Container.call(this);
var emptyHeartGraphics = self.createAsset('empty_heart', 'Empty Heart Graphics', .5, .5);
});
var RightBee = Container.expand(function () {
var self = Container.call(this);
var beeGraphics = self.createAsset('bee', 'Bee Graphics', .5, .5);
beeGraphics.scale.x = 1.2;
beeGraphics.scale.y = 1.2;
self.spawnBee = function () {
self.x = 2048 + 100;
self.y = Math.random() * (2732 / 2);
self.xSpeed = -(Math.random() * 7 + 3);
};
self.spawnBee();
self.move = function () {
self.x += self.xSpeed;
if (self.x < -50) {
self.y = Math.random() * (2732 / 2);
self.xSpeed = -(Math.random() * 7 + 3);
self.x = 2048 + 100;
}
};
});
var LeftBee = Container.expand(function () {
var self = Container.call(this);
var beeGraphics = self.createAsset('bee', 'Bee Graphics', .5, .5);
beeGraphics.scale.x = -1.2;
beeGraphics.scale.y = 1.2;
self.spawnBee = function () {
self.x = -100;
self.y = Math.random() * (2732 / 2);
self.xSpeed = Math.random() * 7 + 3;
};
self.spawnBee();
self.move = function () {
self.x += self.xSpeed;
if (self.x > 2048 + 50) {
self.y = Math.random() * (2732 / 2);
self.xSpeed = Math.random() * 7 + 3;
self.x = -100;
}
};
});
var Bee = Container.expand(function () {
var self = Container.call(this);
var beeGraphics = self.createAsset('bee', 'Bee Graphics', .5, .5);
beeGraphics.scale.x = 1.8;
beeGraphics.scale.y = 1.2;
self.spawnBee();
});
var Heart = Container.expand(function () {
var self = Container.call(this);
var heartGraphics = self.createAsset('heart', 'Heart Graphics', .5, .5);
});
var Fly = Container.expand(function () {
var self = Container.call(this);
var flyGraphics = self.createAsset('fly', 'Fly Graphics', .5, .5);
self.spawnFly = function () {
var direction = Math.random() < 0.5 ? -1 : 1;
self.xSpeed = direction * (Math.random() * 10 + 5);
self.x = direction > 0 ? -50 : 2048 + 50;
self.y = Math.random() * (2732 * 3 / 4 - self.height - LK.gui.topRight.height);
var scale = 1 + self.y / (2732 * 3 / 4) * 0.2;
self.scale.x = self.scale.y = scale;
};
self.spawnFly();
self.move = function () {
if (self.xSpeed > 0 && self.x > 2048 / 2 && !self.changedDirection || self.xSpeed < 0 && self.x < 2048 / 2 && !self.changedDirection) {
self.xSpeed *= -1;
self.changedDirection = true;
}
if (self.xSpeed > 0) {
flyGraphics.scale.x = 1;
} else if (self.xSpeed < 0) {
flyGraphics.scale.x = -1;
}
self.x += self.xSpeed;
if (self.x > 2048 + 50 || self.x < -50) {
self.spawnFly();
}
};
});
var Plant = Container.expand(function () {
var self = Container.call(this);
self.isMoving = false;
self.launchAt = function (x, y) {
var startX = self.x;
var startY = self.y;
var endX = x;
var endY = y;
var time = 0;
self.isMoving = true;
self.parent.spiderMoveTimer = 0;
self.parent.spiderIsMoving = false;
LK.clearInterval(self.parent.spiderMoveInterval);
self.fliesCaughtInJump = 0;
if (x > 2048 / 2) {
self.scale.x = -1;
} else {
self.scale.x = 1;
}
self.moveTowards = function () {
if (time <= 30) {
self.x = startX + (endX - startX) * (time / 30);
self.y = startY - (startY - endY) * (time / 30);
time++;
} else if (time <= 90) {
self.x = endX - (endX - startX) * ((time - 30) / 60);
self.y = endY + (startY - endY) * ((time - 30) / 60);
time++;
} else {
self.isMoving = false;
self.moveTowards = null;
self.parent.targetScore += self.fliesCaughtInJump * 100 + self.parent.bonusScore;
self.fliesCaughtInJump = 0;
self.parent.bonusScore = 0;
}
};
};
var plantGraphics = self.createAsset('plant', 'Plant Graphics', .5, .5);
self.catchFly = function (fly) {
if (self.intersects(fly)) {
fly.destroy();
self.fliesCaughtInJump = (self.fliesCaughtInJump || 0) + 1;
if (fly.y < 2732 / 3) {
self.parent.bonusScore += 150;
}
return true;
}
return false;
};
self.hitByBee = function (bee) {
if (self.intersects(bee) && !self.hit) {
self.hit = true;
LK.effects.flashObject(self, 0xff0000, 1000);
self.x = 2048 / 2;
self.y = 2732 - self.height - 100;
self.parent.loseHeart();
if (self.isMoving) {
self.isMoving = false;
self.moveTowards = null;
}
bee.x = -100;
LK.setTimeout(function () {
self.hit = false;
}, 1000);
return true;
}
return false;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var messageIndex = 0;
var messages = ['Catch the flies!', 'Avoid the bees!', 'Keep moving!'];
var showMessage = function () {
var startMessage = new Text2(messages[messageIndex], {
size: 60,
fill: '#FF1493',
align: 'center'
});
startMessage.x -= 330;
startMessage.anchor.set(0.5, 0.5);
startMessage.x = 2048 / 2 - 350;
startMessage.y = LK.gui.topCenter.height / 2 + 50;
LK.gui.addChild(startMessage);
LK.setTimeout(function () {
startMessage.destroy();
messageIndex++;
if (messageIndex < messages.length) {
showMessage();
} else {
self.scoreTxt.visible = true;
LK.gui.topCenter.addChild(self.scoreTxt);
self.scoreTxt.anchor.set(0.5, 0.5);
self.scoreTxt.y = LK.gui.topCenter.height / 2;
}
}, 2500);
};
showMessage();
self.spiderMoveTimer = 0;
self.spiderIsMoving = false;
self.scoreTxt = new Text2('0', {
size: 120,
fill: "#00BFFF",
align: 'center'
});
self.scoreTxt.x -= 30;
self.scoreTxt.visible = false;
self.targetScore = 0;
self.bonusScore = 0;
self.targetScore = 0;
self.currentScore = 0;
self.updateScore = function (fliesCaught) {
if (!plant.isMoving) {
self.targetScore += fliesCaught * (fliesCaught > 1 ? 150 : 100);
}
};
LK.on('tick', function () {
if (!plant.isMoving && self.currentScore < self.targetScore) {
self.currentScore += 5;
if (self.currentScore > self.targetScore) {
self.currentScore = self.targetScore;
}
self.scoreTxt.setText(self.currentScore);
}
});
stage.on('down', function (obj) {
if (!plant.isMoving && !plant.hit) {
var pos = obj.event.getLocalPosition(self);
plant.launchAt(pos.x, pos.y);
}
});
var background = self.createAsset('background', 'Background Graphics', 0, 0);
background.width = 2048;
background.height = 2732;
self.addChildAt(background, 0);
var spider = self.addChild(new Spider());
var flies = [];
var plant = self.addChild(new Plant());
plant.x = 2048 / 2;
plant.y = 2732 - plant.height - 100;
self.incrementScoreAmount = 100;
var hearts = [];
self.loseHeart = function () {
if (hearts.length > 0) {
var lostHeart = hearts.pop();
var emptyHeart = new EmptyHeart();
emptyHeart.x = lostHeart.x;
emptyHeart.y = lostHeart.y;
LK.effects.flashObject(emptyHeart, 0xff0000, 1000);
LK.gui.topLeft.addChild(emptyHeart);
lostHeart.destroy();
}
if (hearts.length === 0) {
isGameOver = true;
}
};
for (var i = 0; i < 3; i++) {
var heart = new Heart();
heart.x = 600 + i * (heart.width + 10);
heart.y = 1840;
LK.gui.topLeft.addChild(heart);
hearts.push(heart);
}
var isGameOver = false;
var flySpawnTimer = 0;
var bees = [];
var leftBee = new LeftBee();
bees.push(leftBee);
self.addChild(leftBee);
var rightBee = new RightBee();
bees.push(rightBee);
self.addChild(rightBee);
LK.on('tick', function () {
for (var a = flies.length - 1; a >= 0; a--) {
if (flies[a]) {
flies[a].move();
if (flies[a].x > 2048 + 50) {
flies[a].destroy();
flies.splice(a, 1);
}
}
}
flySpawnTimer++;
if (flySpawnTimer >= 120 && flies.length < 5) {
var newFly = new Fly();
flies.push(newFly);
self.addChild(newFly);
flySpawnTimer = 0;
}
for (var a = flies.length - 1; a >= 0; a--) {
if (plant.catchFly(flies[a])) {
flies.splice(a, 1);
}
}
if (plant.moveTowards) {
plant.moveTowards();
}
bees.forEach(function (bee) {
bee.move();
if (plant.hitByBee(bee)) {}
});
if (plant.hitByBee(spider)) {}
if (!plant.isMoving) {
spider.move();
}
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.gui.children.forEach(function (child) {
child.destroy();
});
LK.showGameOver();
}
});
});
var Spider = Container.expand(function () {
var self = Container.call(this);
var spiderGraphics = self.createAsset('spider', 'Spider Graphics', .5, .5);
spiderGraphics.scale.x = 3;
spiderGraphics.scale.y = 3;
self.x = -spiderGraphics.width;
self.y = 2732 - spiderGraphics.height - 260;
self.xSpeed = 0.5;
self.move = function () {
self.x += self.xSpeed;
if (self.x > 2048) {
self.x = -spiderGraphics.width;
}
};
});
var EmptyHeart = Container.expand(function () {
var self = Container.call(this);
var emptyHeartGraphics = self.createAsset('empty_heart', 'Empty Heart Graphics', .5, .5);
});
var RightBee = Container.expand(function () {
var self = Container.call(this);
var beeGraphics = self.createAsset('bee', 'Bee Graphics', .5, .5);
beeGraphics.scale.x = 1.2;
beeGraphics.scale.y = 1.2;
self.spawnBee = function () {
self.x = 2048 + 100;
self.y = Math.random() * (2732 / 2);
self.xSpeed = -(Math.random() * 7 + 3);
};
self.spawnBee();
self.move = function () {
self.x += self.xSpeed;
if (self.x < -50) {
self.y = Math.random() * (2732 / 2);
self.xSpeed = -(Math.random() * 7 + 3);
self.x = 2048 + 100;
}
};
});
var LeftBee = Container.expand(function () {
var self = Container.call(this);
var beeGraphics = self.createAsset('bee', 'Bee Graphics', .5, .5);
beeGraphics.scale.x = -1.2;
beeGraphics.scale.y = 1.2;
self.spawnBee = function () {
self.x = -100;
self.y = Math.random() * (2732 / 2);
self.xSpeed = Math.random() * 7 + 3;
};
self.spawnBee();
self.move = function () {
self.x += self.xSpeed;
if (self.x > 2048 + 50) {
self.y = Math.random() * (2732 / 2);
self.xSpeed = Math.random() * 7 + 3;
self.x = -100;
}
};
});
var Bee = Container.expand(function () {
var self = Container.call(this);
var beeGraphics = self.createAsset('bee', 'Bee Graphics', .5, .5);
beeGraphics.scale.x = 1.8;
beeGraphics.scale.y = 1.2;
self.spawnBee();
});
var Heart = Container.expand(function () {
var self = Container.call(this);
var heartGraphics = self.createAsset('heart', 'Heart Graphics', .5, .5);
});
var Fly = Container.expand(function () {
var self = Container.call(this);
var flyGraphics = self.createAsset('fly', 'Fly Graphics', .5, .5);
self.spawnFly = function () {
var direction = Math.random() < 0.5 ? -1 : 1;
self.xSpeed = direction * (Math.random() * 10 + 5);
self.x = direction > 0 ? -50 : 2048 + 50;
self.y = Math.random() * (2732 * 3 / 4 - self.height - LK.gui.topRight.height);
var scale = 1 + self.y / (2732 * 3 / 4) * 0.2;
self.scale.x = self.scale.y = scale;
};
self.spawnFly();
self.move = function () {
if (self.xSpeed > 0 && self.x > 2048 / 2 && !self.changedDirection || self.xSpeed < 0 && self.x < 2048 / 2 && !self.changedDirection) {
self.xSpeed *= -1;
self.changedDirection = true;
}
if (self.xSpeed > 0) {
flyGraphics.scale.x = 1;
} else if (self.xSpeed < 0) {
flyGraphics.scale.x = -1;
}
self.x += self.xSpeed;
if (self.x > 2048 + 50 || self.x < -50) {
self.spawnFly();
}
};
});
var Plant = Container.expand(function () {
var self = Container.call(this);
self.isMoving = false;
self.launchAt = function (x, y) {
var startX = self.x;
var startY = self.y;
var endX = x;
var endY = y;
var time = 0;
self.isMoving = true;
self.parent.spiderMoveTimer = 0;
self.parent.spiderIsMoving = false;
LK.clearInterval(self.parent.spiderMoveInterval);
self.fliesCaughtInJump = 0;
if (x > 2048 / 2) {
self.scale.x = -1;
} else {
self.scale.x = 1;
}
self.moveTowards = function () {
if (time <= 30) {
self.x = startX + (endX - startX) * (time / 30);
self.y = startY - (startY - endY) * (time / 30);
time++;
} else if (time <= 90) {
self.x = endX - (endX - startX) * ((time - 30) / 60);
self.y = endY + (startY - endY) * ((time - 30) / 60);
time++;
} else {
self.isMoving = false;
self.moveTowards = null;
self.parent.targetScore += self.fliesCaughtInJump * 100 + self.parent.bonusScore;
self.fliesCaughtInJump = 0;
self.parent.bonusScore = 0;
}
};
};
var plantGraphics = self.createAsset('plant', 'Plant Graphics', .5, .5);
self.catchFly = function (fly) {
if (self.intersects(fly)) {
fly.destroy();
self.fliesCaughtInJump = (self.fliesCaughtInJump || 0) + 1;
if (fly.y < 2732 / 3) {
self.parent.bonusScore += 150;
}
return true;
}
return false;
};
self.hitByBee = function (bee) {
if (self.intersects(bee) && !self.hit) {
self.hit = true;
LK.effects.flashObject(self, 0xff0000, 1000);
self.x = 2048 / 2;
self.y = 2732 - self.height - 100;
self.parent.loseHeart();
if (self.isMoving) {
self.isMoving = false;
self.moveTowards = null;
}
bee.x = -100;
LK.setTimeout(function () {
self.hit = false;
}, 1000);
return true;
}
return false;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var messageIndex = 0;
var messages = ['Catch the flies!', 'Avoid the bees!', 'Keep moving!'];
var showMessage = function () {
var startMessage = new Text2(messages[messageIndex], {
size: 60,
fill: '#FF1493',
align: 'center'
});
startMessage.x -= 330;
startMessage.anchor.set(0.5, 0.5);
startMessage.x = 2048 / 2 - 350;
startMessage.y = LK.gui.topCenter.height / 2 + 50;
LK.gui.addChild(startMessage);
LK.setTimeout(function () {
startMessage.destroy();
messageIndex++;
if (messageIndex < messages.length) {
showMessage();
} else {
self.scoreTxt.visible = true;
LK.gui.topCenter.addChild(self.scoreTxt);
self.scoreTxt.anchor.set(0.5, 0.5);
self.scoreTxt.y = LK.gui.topCenter.height / 2;
}
}, 2500);
};
showMessage();
self.spiderMoveTimer = 0;
self.spiderIsMoving = false;
self.scoreTxt = new Text2('0', {
size: 120,
fill: "#00BFFF",
align: 'center'
});
self.scoreTxt.x -= 30;
self.scoreTxt.visible = false;
self.targetScore = 0;
self.bonusScore = 0;
self.targetScore = 0;
self.currentScore = 0;
self.updateScore = function (fliesCaught) {
if (!plant.isMoving) {
self.targetScore += fliesCaught * (fliesCaught > 1 ? 150 : 100);
}
};
LK.on('tick', function () {
if (!plant.isMoving && self.currentScore < self.targetScore) {
self.currentScore += 5;
if (self.currentScore > self.targetScore) {
self.currentScore = self.targetScore;
}
self.scoreTxt.setText(self.currentScore);
}
});
stage.on('down', function (obj) {
if (!plant.isMoving && !plant.hit) {
var pos = obj.event.getLocalPosition(self);
plant.launchAt(pos.x, pos.y);
}
});
var background = self.createAsset('background', 'Background Graphics', 0, 0);
background.width = 2048;
background.height = 2732;
self.addChildAt(background, 0);
var spider = self.addChild(new Spider());
var flies = [];
var plant = self.addChild(new Plant());
plant.x = 2048 / 2;
plant.y = 2732 - plant.height - 100;
self.incrementScoreAmount = 100;
var hearts = [];
self.loseHeart = function () {
if (hearts.length > 0) {
var lostHeart = hearts.pop();
var emptyHeart = new EmptyHeart();
emptyHeart.x = lostHeart.x;
emptyHeart.y = lostHeart.y;
LK.effects.flashObject(emptyHeart, 0xff0000, 1000);
LK.gui.topLeft.addChild(emptyHeart);
lostHeart.destroy();
}
if (hearts.length === 0) {
isGameOver = true;
}
};
for (var i = 0; i < 3; i++) {
var heart = new Heart();
heart.x = 600 + i * (heart.width + 10);
heart.y = 1840;
LK.gui.topLeft.addChild(heart);
hearts.push(heart);
}
var isGameOver = false;
var flySpawnTimer = 0;
var bees = [];
var leftBee = new LeftBee();
bees.push(leftBee);
self.addChild(leftBee);
var rightBee = new RightBee();
bees.push(rightBee);
self.addChild(rightBee);
LK.on('tick', function () {
for (var a = flies.length - 1; a >= 0; a--) {
if (flies[a]) {
flies[a].move();
if (flies[a].x > 2048 + 50) {
flies[a].destroy();
flies.splice(a, 1);
}
}
}
flySpawnTimer++;
if (flySpawnTimer >= 120 && flies.length < 5) {
var newFly = new Fly();
flies.push(newFly);
self.addChild(newFly);
flySpawnTimer = 0;
}
for (var a = flies.length - 1; a >= 0; a--) {
if (plant.catchFly(flies[a])) {
flies.splice(a, 1);
}
}
if (plant.moveTowards) {
plant.moveTowards();
}
bees.forEach(function (bee) {
bee.move();
if (plant.hitByBee(bee)) {}
});
if (plant.hitByBee(spider)) {}
if (!plant.isMoving) {
spider.move();
}
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.gui.children.forEach(function (child) {
child.destroy();
});
LK.showGameOver();
}
});
});
Simple side view of a pixel art fly on a sky blue background Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Head of a carnivorous plant, mouth open at top, pixel art Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Pixel art heart green Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a jungle with light streaming in from above, pixel art Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a pixel art bee, cute, side view, flying, no shadow Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a dark green box surrounded by vines, pixel art Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a blackened cracked heart, pixel art, no shadow Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a cute orange-yellow spider, side view, pixel art, fangs, no shadow Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.