var PowerUp = Container.expand(function () { var self = Container.call(this); var powerUpGraphics = self.createAsset('powerUp', 'PowerUp Graphics', .5, .5); }); var Grinch = Container.expand(function () { var self = Container.call(this); var grinchGraphics = self.createAsset('grinch', 'Grinch Graphics', .5, .5); self.speed = 12; self.direction = 1; self.lifespan = 600; self.move = function () { if (self.x + self.width / 2 >= 2048 || self.x - self.width / 2 <= 0) { self.direction *= -1; } self.x += self.speed * self.direction; if (--self.lifespan <= 0) { if (self.x < 2048 / 2) { self.x -= self.speed; } else { self.x += self.speed; } if (self.x + self.width / 2 < 0 || self.x - self.width / 2 > 2048) { self.destroy(); } } }; }); var SantaSleigh = Container.expand(function () { var self = Container.call(this); self.updatePosition = function (mouseX) { self.targetX = mouseX; }; self.move = function () { var delayFactor = 0.1; var maxSpeed = 10; var moveAmount = (self.targetX - self.x) * delayFactor; moveAmount = Math.max(Math.min(moveAmount, maxSpeed), -maxSpeed); self.x += moveAmount; }; var santaSleighGraphics = self.createAsset('santaSleigh', 'Santa in sleigh', .5, .5); self.targetX = self.x; }); var Cloud = Container.expand(function () { var self = Container.call(this); var cloudGraphics = self.createAsset('cloud', 'Cloud Graphics', .5, .5); self.speed = 2; self.move = function () {}; }); var Gift = Container.expand(function () { var self = Container.call(this); var giftGraphics = self.createAsset('gift', 'Gift Graphics', .5, .5); self.speed = 0; self.gravity = 0.2; self.move = function () { self.speed += self.gravity; self.y += self.speed; if (!self.initialFlingDone) { self.x += 150 / 60; self.rotation += 0.1; self.flingTicks = (self.flingTicks || 0) + 1; if (self.flingTicks >= 400) { self.initialFlingDone = true; } } }; }); var Chimney = Container.expand(function () { var self = Container.call(this); var chimneyGraphics = self.createAsset('chimney', 'Chimney Graphics', .5, .5); self.touchedByGift = false; }); var Game = Container.expand(function () { var self = Container.call(this); function spawnChimney() { var newChimney = new Chimney(); newChimney.x = 2048; newChimney.y = 2500; chimneys.push(newChimney); self.addChild(newChimney); } stage.on('move', function (obj) { var event = obj.event; var pos = event.getLocalPosition(self); santaSleigh.updatePosition(pos.x); }); stage.on('down', function (obj) { if (throwPowerUpActive && LK.ticks - lastThrowTick >= 30 || !throwPowerUpActive && LK.ticks - lastThrowTick >= 120) { if (throwPowerUpActive && LK.ticks - powerUpTimer >= 300) { throwPowerUpActive = false; lastThrowTick = LK.ticks; } var event = obj.event; var pos = event.getLocalPosition(self); var newGift = self.addChild(new Gift()); newGift.x = santaSleigh.x; newGift.y = santaSleigh.y; gifts.push(newGift); lastThrowTick = LK.ticks; } }); LK.stageContainer.setBackgroundColor(0x000000); var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); var santaSleigh = self.addChild(new SantaSleigh()); santaSleigh.x = 2048 / 2; santaSleigh.y = 2732 / 4; var cloud = self.addChild(new Cloud()); cloud.x = 2048 / 2; cloud.y = 2732 / 2; self.setChildIndex(cloud, 0); self.setChildIndex(santaSleigh, 1); scoreTxt.anchor.set(.5, 0); LK.gui.topCenter.addChild(scoreTxt); var gifts = []; var chimneys = []; var score = 0; var isGameOver = false; var tickOffset = 0; var giftThrowSpeed = -5; var chimneySpeed = 2; spawnChimney(); LK.on('tick', function () { santaSleigh.move(); cloud.move(); for (var i = chimneys.length - 1; i >= 0; i--) { var chimney = chimneys[i]; if (chimney.x < 0) { chimney.destroy(); chimneys.splice(i, 1); } } if (isGameOver) { LK.clearInterval(chimneySpawnInterval); } if (LK.ticks - lastGrinchSpawnTick >= 1800) { var newGrinch = self.addChild(new Grinch()); newGrinch.x = 2048 / 2; newGrinch.y = 2732 / 2; grinches.push(newGrinch); lastGrinchSpawnTick = LK.ticks; } if (LK.ticks - lastPowerUpSpawnTick >= 2400) { var newPowerUp = self.addChild(new PowerUp()); newPowerUp.x = Math.random() * 2048; newPowerUp.y = 1800; powerUps.push(newPowerUp); lastPowerUpSpawnTick = LK.ticks; self.setChildIndex(newPowerUp, self.children.length - 1); } for (var i = 0; i < grinches.length; i++) { var grinch = grinches[i]; grinch.move(); for (var j = gifts.length - 1; j >= 0; j--) { var gift = gifts[j]; if (gift.intersects(grinch)) { gift.destroy(); gifts.splice(j, 1); } } } }); var lastThrowTick = -120; var lastGrinchSpawnTick = 0; var lastPowerUpSpawnTick = 0; var grinches = []; var powerUps = []; var throwPowerUpActive = false; var powerUpTimer = 0; LK.on('tick', function () { for (var i = gifts.length - 1; i >= 0; i--) { var gift = gifts[i]; gift.move(); if (gift.y < 0) { gift.destroy(); gifts.splice(i, 1); } } for (var i = chimneys.length - 1; i >= 0; i--) { var chimney = chimneys[i]; chimney.x -= chimneySpeed; if (chimney.x < 0) { if (!chimney.touchedByGift) { score -= 2; scoreTxt.setText(score); if (score < 0) { isGameOver = true; if (score < 0) { scoreTxt.setText('You disappointed too many kids'); scoreTxt.scale.set(0.6); } } LK.effects.flashScreen(0xff0000, 1000); spawnChimney(); } chimneys.splice(i, 1); chimney.destroy(); } } for (var i = gifts.length - 1; i >= 0; i--) { var gift = gifts[i]; for (var j = chimneys.length - 1; j >= 0; j--) { var chimney = chimneys[j]; if (gift.intersects(chimney) && !chimney.touchedByGift) { score++; scoreTxt.setText(score); chimney.touchedByGift = true; LK.effects.flashScreen(0x00ff00, 500); gift.destroy(); gifts.splice(i, 1); chimneySpeed += 0.2; spawnChimney(); break; } } for (var k = powerUps.length - 1; k >= 0; k--) { var powerUp = powerUps[k]; if (gift.intersects(powerUp)) { LK.effects.flashScreen(0x0000ff, 500); powerUp.destroy(); powerUps.splice(k, 1); lastThrowTick = LK.ticks - 60; throwPowerUpActive = true; powerUpTimer = LK.ticks; break; } } } if (isGameOver) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } }); });
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.createAsset('powerUp', 'PowerUp Graphics', .5, .5);
});
var Grinch = Container.expand(function () {
var self = Container.call(this);
var grinchGraphics = self.createAsset('grinch', 'Grinch Graphics', .5, .5);
self.speed = 12;
self.direction = 1;
self.lifespan = 600;
self.move = function () {
if (self.x + self.width / 2 >= 2048 || self.x - self.width / 2 <= 0) {
self.direction *= -1;
}
self.x += self.speed * self.direction;
if (--self.lifespan <= 0) {
if (self.x < 2048 / 2) {
self.x -= self.speed;
} else {
self.x += self.speed;
}
if (self.x + self.width / 2 < 0 || self.x - self.width / 2 > 2048) {
self.destroy();
}
}
};
});
var SantaSleigh = Container.expand(function () {
var self = Container.call(this);
self.updatePosition = function (mouseX) {
self.targetX = mouseX;
};
self.move = function () {
var delayFactor = 0.1;
var maxSpeed = 10;
var moveAmount = (self.targetX - self.x) * delayFactor;
moveAmount = Math.max(Math.min(moveAmount, maxSpeed), -maxSpeed);
self.x += moveAmount;
};
var santaSleighGraphics = self.createAsset('santaSleigh', 'Santa in sleigh', .5, .5);
self.targetX = self.x;
});
var Cloud = Container.expand(function () {
var self = Container.call(this);
var cloudGraphics = self.createAsset('cloud', 'Cloud Graphics', .5, .5);
self.speed = 2;
self.move = function () {};
});
var Gift = Container.expand(function () {
var self = Container.call(this);
var giftGraphics = self.createAsset('gift', 'Gift Graphics', .5, .5);
self.speed = 0;
self.gravity = 0.2;
self.move = function () {
self.speed += self.gravity;
self.y += self.speed;
if (!self.initialFlingDone) {
self.x += 150 / 60;
self.rotation += 0.1;
self.flingTicks = (self.flingTicks || 0) + 1;
if (self.flingTicks >= 400) {
self.initialFlingDone = true;
}
}
};
});
var Chimney = Container.expand(function () {
var self = Container.call(this);
var chimneyGraphics = self.createAsset('chimney', 'Chimney Graphics', .5, .5);
self.touchedByGift = false;
});
var Game = Container.expand(function () {
var self = Container.call(this);
function spawnChimney() {
var newChimney = new Chimney();
newChimney.x = 2048;
newChimney.y = 2500;
chimneys.push(newChimney);
self.addChild(newChimney);
}
stage.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(self);
santaSleigh.updatePosition(pos.x);
});
stage.on('down', function (obj) {
if (throwPowerUpActive && LK.ticks - lastThrowTick >= 30 || !throwPowerUpActive && LK.ticks - lastThrowTick >= 120) {
if (throwPowerUpActive && LK.ticks - powerUpTimer >= 300) {
throwPowerUpActive = false;
lastThrowTick = LK.ticks;
}
var event = obj.event;
var pos = event.getLocalPosition(self);
var newGift = self.addChild(new Gift());
newGift.x = santaSleigh.x;
newGift.y = santaSleigh.y;
gifts.push(newGift);
lastThrowTick = LK.ticks;
}
});
LK.stageContainer.setBackgroundColor(0x000000);
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
var santaSleigh = self.addChild(new SantaSleigh());
santaSleigh.x = 2048 / 2;
santaSleigh.y = 2732 / 4;
var cloud = self.addChild(new Cloud());
cloud.x = 2048 / 2;
cloud.y = 2732 / 2;
self.setChildIndex(cloud, 0);
self.setChildIndex(santaSleigh, 1);
scoreTxt.anchor.set(.5, 0);
LK.gui.topCenter.addChild(scoreTxt);
var gifts = [];
var chimneys = [];
var score = 0;
var isGameOver = false;
var tickOffset = 0;
var giftThrowSpeed = -5;
var chimneySpeed = 2;
spawnChimney();
LK.on('tick', function () {
santaSleigh.move();
cloud.move();
for (var i = chimneys.length - 1; i >= 0; i--) {
var chimney = chimneys[i];
if (chimney.x < 0) {
chimney.destroy();
chimneys.splice(i, 1);
}
}
if (isGameOver) {
LK.clearInterval(chimneySpawnInterval);
}
if (LK.ticks - lastGrinchSpawnTick >= 1800) {
var newGrinch = self.addChild(new Grinch());
newGrinch.x = 2048 / 2;
newGrinch.y = 2732 / 2;
grinches.push(newGrinch);
lastGrinchSpawnTick = LK.ticks;
}
if (LK.ticks - lastPowerUpSpawnTick >= 2400) {
var newPowerUp = self.addChild(new PowerUp());
newPowerUp.x = Math.random() * 2048;
newPowerUp.y = 1800;
powerUps.push(newPowerUp);
lastPowerUpSpawnTick = LK.ticks;
self.setChildIndex(newPowerUp, self.children.length - 1);
}
for (var i = 0; i < grinches.length; i++) {
var grinch = grinches[i];
grinch.move();
for (var j = gifts.length - 1; j >= 0; j--) {
var gift = gifts[j];
if (gift.intersects(grinch)) {
gift.destroy();
gifts.splice(j, 1);
}
}
}
});
var lastThrowTick = -120;
var lastGrinchSpawnTick = 0;
var lastPowerUpSpawnTick = 0;
var grinches = [];
var powerUps = [];
var throwPowerUpActive = false;
var powerUpTimer = 0;
LK.on('tick', function () {
for (var i = gifts.length - 1; i >= 0; i--) {
var gift = gifts[i];
gift.move();
if (gift.y < 0) {
gift.destroy();
gifts.splice(i, 1);
}
}
for (var i = chimneys.length - 1; i >= 0; i--) {
var chimney = chimneys[i];
chimney.x -= chimneySpeed;
if (chimney.x < 0) {
if (!chimney.touchedByGift) {
score -= 2;
scoreTxt.setText(score);
if (score < 0) {
isGameOver = true;
if (score < 0) {
scoreTxt.setText('You disappointed too many kids');
scoreTxt.scale.set(0.6);
}
}
LK.effects.flashScreen(0xff0000, 1000);
spawnChimney();
}
chimneys.splice(i, 1);
chimney.destroy();
}
}
for (var i = gifts.length - 1; i >= 0; i--) {
var gift = gifts[i];
for (var j = chimneys.length - 1; j >= 0; j--) {
var chimney = chimneys[j];
if (gift.intersects(chimney) && !chimney.touchedByGift) {
score++;
scoreTxt.setText(score);
chimney.touchedByGift = true;
LK.effects.flashScreen(0x00ff00, 500);
gift.destroy();
gifts.splice(i, 1);
chimneySpeed += 0.2;
spawnChimney();
break;
}
}
for (var k = powerUps.length - 1; k >= 0; k--) {
var powerUp = powerUps[k];
if (gift.intersects(powerUp)) {
LK.effects.flashScreen(0x0000ff, 500);
powerUp.destroy();
powerUps.splice(k, 1);
lastThrowTick = LK.ticks - 60;
throwPowerUpActive = true;
powerUpTimer = LK.ticks;
break;
}
}
}
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
});
});
chimney. pixelart. residential chimney. only chimney. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
gift. pixelart. christmas. green and red. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
night sky. pixelart. seamless. clouds. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixelart. christmas. santa in sleigh. from the side. flying. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
grinch. green monster. pixelart. only face. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixelart. chistmas present. powerup. game art Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.