var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('heroBullet', 'Hero Bullet Graphics', .5, .5); self.speed = -5; self.move = function () { self.y += self.speed; }; }); var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('enemyBullet', 'Enemy Bullet Graphics', .5, .5); self.speed = 5; self.move = function () { self.y += self.speed; }; }); var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.createAsset('hero', 'Hero character', .5, .5); }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemy', 'Enemy character', .5, .5); self.height = enemyGraphics.height; self.direction = Math.random() < 0.5 ? -1 : 1; self.speed = 2; self.zigzagFrequency = Math.random() * 60 + 30; self.move = function () { self.y += self.speed; if (LK.ticks % self.zigzagFrequency === 0) { self.direction *= -1; } self.x += self.speed * self.direction; }; }); var Game = Container.expand(function () { var self = Container.call(this); var heroBullets = []; var enemyBullets = []; var enemies = []; var initialEnemyCount = 5; function respawnEnemy() { if (enemies.length < initialEnemyCount) { var enemy = new Enemy(); enemy.x = Math.random() * (2048 - enemy.width) + enemy.width / 2; enemy.y = -enemy.height; enemies.push(enemy); self.addChild(enemy); } } for (var i = 0; i < initialEnemyCount; i++) { respawnEnemy(); } var hero = self.addChild(new Hero()); hero.x = 2048 / 2; hero.y = 2732 - 100; var spawnEnemy = function () { var enemy = new Enemy(); enemy.x = Math.random() * (2048 - enemy.width) + enemy.width; enemy.y = 0; enemies.push(enemy); self.addChild(enemy); }; var fireHeroBullet = function () { var bullet = new HeroBullet(); bullet.x = hero.x; bullet.y = hero.y; heroBullets.push(bullet); self.addChild(bullet); }; var fireEnemyBullet = function (enemy) { var bullet = new EnemyBullet(); bullet.x = enemy.x; bullet.y = enemy.y; enemyBullets.push(bullet); self.addChild(bullet); }; var handleMove = function (obj) { var event = obj.event; var pos = event.getLocalPosition(self); hero.x = pos.x; hero.y = pos.y; }; stage.on('move', handleMove); LK.on('tick', function () { for (var i = heroBullets.length - 1; i >= 0; i--) { heroBullets[i].move(); if (heroBullets[i].y < -50) { heroBullets[i].destroy(); heroBullets.splice(i, 1); } else { for (var j = enemyBullets.length - 1; j >= 0; j--) { if (heroBullets[i].intersects(enemyBullets[j])) { heroBullets[i].destroy(); heroBullets.splice(i, 1); enemyBullets[j].destroy(); enemyBullets.splice(j, 1); break; } } } } for (var i = enemyBullets.length - 1; i >= 0; i--) { enemyBullets[i].move(); if (enemyBullets[i].y > 2732) { enemyBullets[i].destroy(); enemyBullets.splice(i, 1); respawnEnemy(); } } for (var i = 0; i < enemies.length; i++) { if (Math.random() < 0.001) { fireEnemyBullet(enemies[i]); } } if (LK.ticks % 60 == 0) { fireHeroBullet(); } }); });
var HeroBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.createAsset('heroBullet', 'Hero Bullet Graphics', .5, .5);
self.speed = -5;
self.move = function () {
self.y += self.speed;
};
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.createAsset('enemyBullet', 'Enemy Bullet Graphics', .5, .5);
self.speed = 5;
self.move = function () {
self.y += self.speed;
};
});
var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.createAsset('hero', 'Hero character', .5, .5);
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.createAsset('enemy', 'Enemy character', .5, .5);
self.height = enemyGraphics.height;
self.direction = Math.random() < 0.5 ? -1 : 1;
self.speed = 2;
self.zigzagFrequency = Math.random() * 60 + 30;
self.move = function () {
self.y += self.speed;
if (LK.ticks % self.zigzagFrequency === 0) {
self.direction *= -1;
}
self.x += self.speed * self.direction;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var heroBullets = [];
var enemyBullets = [];
var enemies = [];
var initialEnemyCount = 5;
function respawnEnemy() {
if (enemies.length < initialEnemyCount) {
var enemy = new Enemy();
enemy.x = Math.random() * (2048 - enemy.width) + enemy.width / 2;
enemy.y = -enemy.height;
enemies.push(enemy);
self.addChild(enemy);
}
}
for (var i = 0; i < initialEnemyCount; i++) {
respawnEnemy();
}
var hero = self.addChild(new Hero());
hero.x = 2048 / 2;
hero.y = 2732 - 100;
var spawnEnemy = function () {
var enemy = new Enemy();
enemy.x = Math.random() * (2048 - enemy.width) + enemy.width;
enemy.y = 0;
enemies.push(enemy);
self.addChild(enemy);
};
var fireHeroBullet = function () {
var bullet = new HeroBullet();
bullet.x = hero.x;
bullet.y = hero.y;
heroBullets.push(bullet);
self.addChild(bullet);
};
var fireEnemyBullet = function (enemy) {
var bullet = new EnemyBullet();
bullet.x = enemy.x;
bullet.y = enemy.y;
enemyBullets.push(bullet);
self.addChild(bullet);
};
var handleMove = function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(self);
hero.x = pos.x;
hero.y = pos.y;
};
stage.on('move', handleMove);
LK.on('tick', function () {
for (var i = heroBullets.length - 1; i >= 0; i--) {
heroBullets[i].move();
if (heroBullets[i].y < -50) {
heroBullets[i].destroy();
heroBullets.splice(i, 1);
} else {
for (var j = enemyBullets.length - 1; j >= 0; j--) {
if (heroBullets[i].intersects(enemyBullets[j])) {
heroBullets[i].destroy();
heroBullets.splice(i, 1);
enemyBullets[j].destroy();
enemyBullets.splice(j, 1);
break;
}
}
}
}
for (var i = enemyBullets.length - 1; i >= 0; i--) {
enemyBullets[i].move();
if (enemyBullets[i].y > 2732) {
enemyBullets[i].destroy();
enemyBullets.splice(i, 1);
respawnEnemy();
}
}
for (var i = 0; i < enemies.length; i++) {
if (Math.random() < 0.001) {
fireEnemyBullet(enemies[i]);
}
}
if (LK.ticks % 60 == 0) {
fireHeroBullet();
}
});
});
A bullet, pixelated Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A spaceship, pixelated Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A spaceship Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.