var Enemy4 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemy4', 'Enemy Plane 4', .5, .5); self.speed = 5; self.move = function () { self.y += self.speed; }; }); var Enemy3 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemy3', 'Enemy Plane 3', .5, .5); self.speed = 4; self.move = function () { self.y += self.speed; }; }); var SpecialItem = Container.expand(function () { var self = Container.call(this); var itemGraphics = self.createAsset('specialItem', 'Special Item', .5, .5); self.speed = -2; self.move = function () { self.y += self.speed; }; }); var Enemy2 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemy2', 'Enemy Plane 2', .5, .5); self.speed = 2; self.move = function () { self.y += self.speed; }; }); var HealthDisplay = Container.expand(function () { var self = Container.call(this); self.healthCircles = []; for (var i = 0; i < 3; i++) { var healthCircle = self.createAsset('healthCircle', 'Health Circle', 0, 0); healthCircle.x = i * 100; self.healthCircles.push(healthCircle); self.addChild(healthCircle); } self.updateHealth = function (health) { for (var i = 0; i < self.healthCircles.length; i++) { self.healthCircles[i].alpha = i < health ? 1 : 0.5; } }; }); var Hero = Container.expand(function () { var self = Container.call(this); self.health = 3; var heroGraphics = self.createAsset('hero', 'Hero Plane', .5, .5); self.speed = 5; self.bulletSpeed = 10; self.lastBulletTime = 0; self.move = function () {}; self.fire = function () { var bullet = new HeroBullet(); bullet.x = self.x; bullet.y = self.y; bullet.speed = self.bulletSpeed; heroBullets.push(bullet); self.parent.addChild(bullet); }; }); var Enemy1 = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemy1', 'Enemy Plane 1', .5, .5); self.speed = 3; self.move = function () { self.y += self.speed; }; }); var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('heroBullet', 'Hero Bullet', .5, .5); self.speed = 10; self.move = function () { self.y += self.speed; self.x += self.parent.rotation * 10; }; }); var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('enemyBullet', 'Enemy Bullet', .5, .5); self.speed = 10; self.move = function () { self.y += self.speed; if (self.y > 2732) { self.destroy(); } }; }); var Game = Container.expand(function () { var self = Container.call(this); var bg = self.createAsset('background', 'Background Image', 0, 0); bg.width = 2048; bg.height = 2732; bg.alpha = 0.5; var bg2 = self.createAsset('background', 'Background Image', 0, 0); bg2.width = 2048; bg2.height = 2732; bg2.y = -2732; bg2.alpha = 0.5; var hero = self.addChild(new Hero()); var healthDisplay = new HealthDisplay(); healthDisplay.y += 50; LK.gui.topLeft.addChild(healthDisplay); var enemies = []; var heroBullets = []; var enemyBullets = []; var specialItems = []; hero.x = 2048 / 2; hero.y = 2732 - 200; var spawnEnemy = function () { var enemyType = Math.floor(Math.random() * 3); var enemy; switch (enemyType) { case 0: enemy = new Enemy1(); break; case 1: enemy = new Enemy2(); break; case 2: enemy = new Enemy3(); break; } enemy.x = Math.random() * 2048; enemy.y = 0; enemies.push(enemy); self.addChild(enemy); }; var spawnHeroBullet = function () { var bullet = new HeroBullet(); bullet.x = hero.x; bullet.y = hero.y; bullet.move = function () { bullet.y -= bullet.speed; }; heroBullets.push(bullet); self.addChild(bullet); }; var spawnSpecialItem = function () { var item = new SpecialItem(); item.x = Math.random() * 2048; item.y = 0; specialItems.push(item); self.addChild(item); item.on('down', function () { enemyBullets.forEach(function (bullet, index) { bullet.destroy(); enemyBullets.splice(index, 1); }); }); }; var spawnEnemyBullet = function (enemy) { var bullet = new EnemyBullet(); bullet.x = enemy.x; bullet.y = enemy.y; bullet.move = function () { bullet.y += bullet.speed; }; enemyBullets.push(bullet); self.addChild(bullet); }; var checkCollision = function () { specialItems.forEach(function (item, index) { if (hero.intersects(item)) { item.destroy(); specialItems.splice(index, 1); hero.bulletSpeed = 15; LK.setTimeout(function () { hero.bulletSpeed = 10; }, 4000); } }); }; var gameOver = function () {}; LK.on('tick', function () { bg.y += 2; bg2.y += 2; if (bg.y >= 2732) bg.y = -2732; if (bg2.y >= 2732) bg2.y = -2732; hero.move(); healthDisplay.updateHealth(hero.health); enemies.forEach(function (enemy, index) { enemy.move(); if (LK.ticks % 120 === 0 && enemy.y > 0) { spawnEnemyBullet(enemy); } if (enemy.y > 2732) { enemy.destroy(); enemies.splice(index, 1); } }); heroBullets.forEach(function (bullet, index) { bullet.move(); if (bullet.y < 0) { bullet.destroy(); heroBullets.splice(index, 1); } }); enemyBullets.forEach(function (bullet, index) { bullet.move(); if (bullet.y > 2732) { bullet.destroy(); enemyBullets.splice(index, 1); } }); specialItems.forEach(function (item, index) { item.move(); if (item.y > 2732) { item.destroy(); specialItems.splice(index, 1); } }); checkCollision(); heroBullets.forEach(function (bullet, bIndex) { enemies.forEach(function (enemy, eIndex) { if (bullet.intersects(enemy)) { bullet.destroy(); heroBullets.splice(bIndex, 1); var explosion = self.createAsset('explosion', 'Explosion Graphic', .5, .5); explosion.x = enemy.x; explosion.y = enemy.y; self.addChild(explosion); LK.setTimeout(function () { explosion.destroy(); }, 500); enemy.destroy(); enemies.splice(eIndex, 1); } }); }); enemyBullets.forEach(function (bullet, index) { if (hero.intersects(bullet)) { bullet.destroy(); enemyBullets.splice(index, 1); hero.health--; healthDisplay.updateHealth(hero.health); if (hero.health <= 0) { LK.showGameOver(); } } }); }); LK.on('tick', function () { if (LK.ticks % 600 === 0) { spawnSpecialItem(); } if (LK.ticks % 384 === 0) { spawnEnemy(); } }); var dragHero = null; stage.on('down', function (obj) { dragHero = hero; if (LK.ticks - hero.lastBulletTime >= 60) { hero.lastBulletTime = LK.ticks; spawnHeroBullet(); spawnHeroBullet(); spawnHeroBullet(); } }); stage.on('move', function (obj) { if (dragHero) { var pos = obj.event.getLocalPosition(self); var oldX = dragHero.x; dragHero.x = pos.x; dragHero.y = pos.y; var tilt = (dragHero.x - oldX) * 0.05; tilt = Math.max(-0.5, Math.min(0.5, tilt)); hero.rotation = tilt; if (LK.ticks - hero.lastBulletTime >= 60) { hero.lastBulletTime = LK.ticks; spawnHeroBullet(); spawnHeroBullet(); spawnHeroBullet(); } } }); stage.on('up', function (obj) { dragHero = null; }); });
var Enemy4 = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('enemy4', 'Enemy Plane 4', .5, .5);
self.speed = 5;
self.move = function () {
self.y += self.speed;
};
});
var Enemy3 = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('enemy3', 'Enemy Plane 3', .5, .5);
self.speed = 4;
self.move = function () {
self.y += self.speed;
};
});
var SpecialItem = Container.expand(function () {
var self = Container.call(this);
var itemGraphics = self.createAsset('specialItem', 'Special Item', .5, .5);
self.speed = -2;
self.move = function () {
self.y += self.speed;
};
});
var Enemy2 = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('enemy2', 'Enemy Plane 2', .5, .5);
self.speed = 2;
self.move = function () {
self.y += self.speed;
};
});
var HealthDisplay = Container.expand(function () {
var self = Container.call(this);
self.healthCircles = [];
for (var i = 0; i < 3; i++) {
var healthCircle = self.createAsset('healthCircle', 'Health Circle', 0, 0);
healthCircle.x = i * 100;
self.healthCircles.push(healthCircle);
self.addChild(healthCircle);
}
self.updateHealth = function (health) {
for (var i = 0; i < self.healthCircles.length; i++) {
self.healthCircles[i].alpha = i < health ? 1 : 0.5;
}
};
});
var Hero = Container.expand(function () {
var self = Container.call(this);
self.health = 3;
var heroGraphics = self.createAsset('hero', 'Hero Plane', .5, .5);
self.speed = 5;
self.bulletSpeed = 10;
self.lastBulletTime = 0;
self.move = function () {};
self.fire = function () {
var bullet = new HeroBullet();
bullet.x = self.x;
bullet.y = self.y;
bullet.speed = self.bulletSpeed;
heroBullets.push(bullet);
self.parent.addChild(bullet);
};
});
var Enemy1 = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('enemy1', 'Enemy Plane 1', .5, .5);
self.speed = 3;
self.move = function () {
self.y += self.speed;
};
});
var HeroBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.createAsset('heroBullet', 'Hero Bullet', .5, .5);
self.speed = 10;
self.move = function () {
self.y += self.speed;
self.x += self.parent.rotation * 10;
};
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.createAsset('enemyBullet', 'Enemy Bullet', .5, .5);
self.speed = 10;
self.move = function () {
self.y += self.speed;
if (self.y > 2732) {
self.destroy();
}
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var bg = self.createAsset('background', 'Background Image', 0, 0);
bg.width = 2048;
bg.height = 2732;
bg.alpha = 0.5;
var bg2 = self.createAsset('background', 'Background Image', 0, 0);
bg2.width = 2048;
bg2.height = 2732;
bg2.y = -2732;
bg2.alpha = 0.5;
var hero = self.addChild(new Hero());
var healthDisplay = new HealthDisplay();
healthDisplay.y += 50;
LK.gui.topLeft.addChild(healthDisplay);
var enemies = [];
var heroBullets = [];
var enemyBullets = [];
var specialItems = [];
hero.x = 2048 / 2;
hero.y = 2732 - 200;
var spawnEnemy = function () {
var enemyType = Math.floor(Math.random() * 3);
var enemy;
switch (enemyType) {
case 0:
enemy = new Enemy1();
break;
case 1:
enemy = new Enemy2();
break;
case 2:
enemy = new Enemy3();
break;
}
enemy.x = Math.random() * 2048;
enemy.y = 0;
enemies.push(enemy);
self.addChild(enemy);
};
var spawnHeroBullet = function () {
var bullet = new HeroBullet();
bullet.x = hero.x;
bullet.y = hero.y;
bullet.move = function () {
bullet.y -= bullet.speed;
};
heroBullets.push(bullet);
self.addChild(bullet);
};
var spawnSpecialItem = function () {
var item = new SpecialItem();
item.x = Math.random() * 2048;
item.y = 0;
specialItems.push(item);
self.addChild(item);
item.on('down', function () {
enemyBullets.forEach(function (bullet, index) {
bullet.destroy();
enemyBullets.splice(index, 1);
});
});
};
var spawnEnemyBullet = function (enemy) {
var bullet = new EnemyBullet();
bullet.x = enemy.x;
bullet.y = enemy.y;
bullet.move = function () {
bullet.y += bullet.speed;
};
enemyBullets.push(bullet);
self.addChild(bullet);
};
var checkCollision = function () {
specialItems.forEach(function (item, index) {
if (hero.intersects(item)) {
item.destroy();
specialItems.splice(index, 1);
hero.bulletSpeed = 15;
LK.setTimeout(function () {
hero.bulletSpeed = 10;
}, 4000);
}
});
};
var gameOver = function () {};
LK.on('tick', function () {
bg.y += 2;
bg2.y += 2;
if (bg.y >= 2732) bg.y = -2732;
if (bg2.y >= 2732) bg2.y = -2732;
hero.move();
healthDisplay.updateHealth(hero.health);
enemies.forEach(function (enemy, index) {
enemy.move();
if (LK.ticks % 120 === 0 && enemy.y > 0) {
spawnEnemyBullet(enemy);
}
if (enemy.y > 2732) {
enemy.destroy();
enemies.splice(index, 1);
}
});
heroBullets.forEach(function (bullet, index) {
bullet.move();
if (bullet.y < 0) {
bullet.destroy();
heroBullets.splice(index, 1);
}
});
enemyBullets.forEach(function (bullet, index) {
bullet.move();
if (bullet.y > 2732) {
bullet.destroy();
enemyBullets.splice(index, 1);
}
});
specialItems.forEach(function (item, index) {
item.move();
if (item.y > 2732) {
item.destroy();
specialItems.splice(index, 1);
}
});
checkCollision();
heroBullets.forEach(function (bullet, bIndex) {
enemies.forEach(function (enemy, eIndex) {
if (bullet.intersects(enemy)) {
bullet.destroy();
heroBullets.splice(bIndex, 1);
var explosion = self.createAsset('explosion', 'Explosion Graphic', .5, .5);
explosion.x = enemy.x;
explosion.y = enemy.y;
self.addChild(explosion);
LK.setTimeout(function () {
explosion.destroy();
}, 500);
enemy.destroy();
enemies.splice(eIndex, 1);
}
});
});
enemyBullets.forEach(function (bullet, index) {
if (hero.intersects(bullet)) {
bullet.destroy();
enemyBullets.splice(index, 1);
hero.health--;
healthDisplay.updateHealth(hero.health);
if (hero.health <= 0) {
LK.showGameOver();
}
}
});
});
LK.on('tick', function () {
if (LK.ticks % 600 === 0) {
spawnSpecialItem();
}
if (LK.ticks % 384 === 0) {
spawnEnemy();
}
});
var dragHero = null;
stage.on('down', function (obj) {
dragHero = hero;
if (LK.ticks - hero.lastBulletTime >= 60) {
hero.lastBulletTime = LK.ticks;
spawnHeroBullet();
spawnHeroBullet();
spawnHeroBullet();
}
});
stage.on('move', function (obj) {
if (dragHero) {
var pos = obj.event.getLocalPosition(self);
var oldX = dragHero.x;
dragHero.x = pos.x;
dragHero.y = pos.y;
var tilt = (dragHero.x - oldX) * 0.05;
tilt = Math.max(-0.5, Math.min(0.5, tilt));
hero.rotation = tilt;
if (LK.ticks - hero.lastBulletTime >= 60) {
hero.lastBulletTime = LK.ticks;
spawnHeroBullet();
spawnHeroBullet();
spawnHeroBullet();
}
}
});
stage.on('up', function (obj) {
dragHero = null;
});
});
Futuristic fighter plane, chrono trigger, top down view, behind Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Special item shooting game pixel art, shiny Single Game Texture. In-Game asset. 2d. Blank background.
Top down shooter, alien space enemy craft, retro pixel art Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Bright yellow blast pixel art shooter game Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
65604d9e9017209915d71b35: Top down shooter, alien space enemy craft, retro pixel art, red flying space alien, giant eye ball Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
65604d9e9017209915d71b35: Top down shooter, alien space craft enemy craft, retro pixel art Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Pixel art bullet blue and white shining orb of energy retro Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Pixel art top down aerial view barren desert, sand dunes, retro shooter Single Game Texture. In-Game asset. 2d. Blank background. Low contrast. No shadows.
hit point heart pixel art Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Pixel art explosion, retro Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.