User prompt
Boss shoots two bullets at a time
User prompt
Add health bar to boss
User prompt
Introduce a enemy boss class that spawns every six minutes, and only dies if shot four times
User prompt
Allow hero to move anywhere in screen
User prompt
Enemies can not Shoot all at same time
User prompt
Do not let enemies go out of sight
User prompt
Allow hero to move around the game like enemies
User prompt
Fix Bug: 'TypeError: undefined is not an object (evaluating 'enemies[k].healthBar')' in or related to this line: 'enemies[k].healthBar.width = enemies[k].health / 2 * enemies[k].width;' Line Number: 167
User prompt
Let enemies move around the game
User prompt
Let enemies move
User prompt
Let enemies move and shoot bullets
User prompt
Change the colour of the health bar to green
User prompt
Move health bar closer to enemy
User prompt
Move health bar on top of enemies head
User prompt
Put health bar on top of enemy
User prompt
Make enemies health bar visible
User prompt
Make a health bar for enemies if shot two times enemy will die
User prompt
Show the timer top right corner. Use white numbers
User prompt
Display Timer on the bottom left corner
User prompt
Make a 20 minutes timer. Only show full seconds
User prompt
Make back ground into space
User prompt
Make the enemy’s size biger
User prompt
Bullets will shoot automatically one by one every every second
User prompt
Bullets will shoot one by one every second
User prompt
Bullets will shoot instantly without tap
/****
* Classes
****/
var GoldenBadge = Container.expand(function () {
var self = Container.call(this);
self.on('down', function (obj) {
self.destroy();
LK.resumeGame();
});
self.attachAsset('goldenBadge', {
anchorX: 0.5,
anchorY: 0.5
});
});
// Hero class
var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.shoot = function () {
var bullet = new HeroBullet();
bullet.x = self.x;
bullet.y = self.y - self.height / 2;
game.addChild(bullet);
heroBullets.push(bullet);
};
});
// Enemy class
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.health = 2;
// Create a health bar
self.healthBar = LK.getAsset('healthBar', {
width: self.width,
height: 10,
anchorX: 0.5,
anchorY: 0
});
self.addChild(self.healthBar);
self.healthBar.y = -self.height / 2;
self.move = function () {
self.y += Math.sin(LK.ticks / 60) * 5;
self.x += Math.cos(LK.ticks / 60) * 5;
if (self.y > 2732 - self.height) {
self.y = 2732 - self.height;
}
if (self.y < 0) {
self.y = 0;
}
if (self.x < 0) {
self.x = 0;
}
if (self.x > 2048 - self.width) {
self.x = 2048 - self.width;
}
};
self.shoot = function () {
var bullet = new EnemyBullet();
bullet.x = self.x;
bullet.y = self.y + self.height / 2;
game.addChild(bullet);
enemyBullets.push(bullet);
};
});
// EnemyBoss class
var EnemyBoss = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 4,
scaleY: 4
});
self.health = 4;
// Create a health bar
self.healthBar = LK.getAsset('healthBar', {
width: self.width,
height: 10,
anchorX: 0.5,
anchorY: 0
});
self.addChild(self.healthBar);
self.healthBar.y = -self.height / 2;
// Create a health bar
self.healthBar = LK.getAsset('healthBar', {
width: self.width,
height: 10,
anchorX: 0.5,
anchorY: 0
});
self.addChild(self.healthBar);
self.healthBar.y = -self.height / 2;
self.move = function () {
self.y += Math.sin(LK.ticks / 60) * 5;
self.x += Math.cos(LK.ticks / 60) * 5;
if (self.y > 2732 - self.height) {
self.y = 2732 - self.height;
}
if (self.y < 0) {
self.y = 0;
}
if (self.x < 0) {
self.x = 0;
}
if (self.x > 2048 - self.width) {
self.x = 2048 - self.width;
}
};
self.shoot = function () {
var bullet1 = new EnemyBullet();
bullet1.x = self.x - self.width / 4;
bullet1.y = self.y + self.height / 2;
game.addChild(bullet1);
enemyBullets.push(bullet1);
var bullet2 = new EnemyBullet();
bullet2.x = self.x + self.width / 4;
bullet2.y = self.y + self.height / 2;
game.addChild(bullet2);
enemyBullets.push(bullet2);
};
});
// HeroBullet class
var HeroBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('heroBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.move = function () {
self.y -= 10;
if (self.y < -self.height) {
self.destroy();
heroBullets.splice(heroBullets.indexOf(self), 1);
}
};
});
// EnemyBullet class
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.move = function () {
self.y += 5;
if (self.y > 2732 + self.height) {
self.destroy();
enemyBullets.splice(enemyBullets.indexOf(self), 1);
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundImage: 'space' // Init game with space background
});
/****
* Game Code
****/
// Initialize hero
// Define the assets for the hero, enemy robots, and bullets
var hero = game.addChild(new Hero());
hero.x = 2048 / 2;
hero.y = 2732 - 100;
// Initialize enemy and bullet arrays
var enemies = [];
var heroBullets = [];
var enemyBullets = [];
// Handle shooting and moving the hero
game.on('down', function (obj) {
hero.shoot();
});
// Handle swipe
game.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
hero.x = pos.x;
hero.y = pos.y;
});
// Initialize 20 minutes timer
var timer = 20 * 60;
// Create a timer text object
var timerTxt = new Text2('20:00', {
size: 100,
fill: '#ffffff'
});
// Attach the timer text object to the top right corner of the screen
LK.gui.topRight.addChild(timerTxt);
// Game tick event
LK.on('tick', function () {
// Update timer every second
if (LK.ticks % 60 == 0) {
timer--;
// Update timer text
var minutes = Math.floor(timer / 60);
var seconds = timer % 60;
timerTxt.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds);
}
// Move hero bullets
for (var i = heroBullets.length - 1; i >= 0; i--) {
heroBullets[i].move();
}
// Move enemy bullets
for (var j = enemyBullets.length - 1; j >= 0; j--) {
enemyBullets[j].move();
}
// Move enemies and randomly shoot
for (var k = enemies.length - 1; k >= 0; k--) {
enemies[k].move();
// Update the health bar
if (enemies[k] && enemies[k].healthBar) {
enemies[k].healthBar.width = enemies[k].health / 2 * enemies[k].width;
}
// Enemies shoot based on their unique shootTick value
if (LK.ticks % enemies[k].shootTick == 0) {
enemies[k].shoot();
}
}
// Spawn enemies
if (LK.ticks % 120 == 0) {
var enemy = new Enemy();
enemy.x = Math.random() * (2048 - enemy.width) + enemy.width / 2;
enemy.y = -enemy.height;
// Assign a unique shootTick value to each enemy
enemy.shootTick = 120 + Math.floor(Math.random() * 60);
game.addChild(enemy);
enemies.push(enemy);
}
// Spawn enemy boss every six minutes
if (LK.ticks % (60 * 60 * 6) == 0) {
var enemyBoss = new EnemyBoss();
enemyBoss.x = Math.random() * (2048 - enemyBoss.width) + enemyBoss.width / 2;
enemyBoss.y = -enemyBoss.height;
// Assign a unique shootTick value to each enemy boss
enemyBoss.shootTick = 120 + Math.floor(Math.random() * 60);
game.addChild(enemyBoss);
enemies.push(enemyBoss);
}
if (LK.ticks % 72000 == 0 && enemies.length == 0) {
var goldenBadge = new GoldenBadge();
goldenBadge.x = 2048 / 2;
goldenBadge.y = 2732 / 2;
game.addChild(goldenBadge);
LK.pauseGame();
}
// Check for collisions between hero bullets and enemies
for (var h = heroBullets.length - 1; h >= 0; h--) {
for (var e = enemies.length - 1; e >= 0; e--) {
if (heroBullets[h].intersects(enemies[e])) {
heroBullets[h].destroy();
heroBullets.splice(h, 1);
enemies[e].health--;
if (enemies[e].health <= 0) {
enemies[e].destroy();
enemies.splice(e, 1);
}
break;
}
}
}
// Check for collisions between enemy bullets and hero
for (var eb = enemyBullets.length - 1; eb >= 0; eb--) {
if (enemyBullets[eb].intersects(hero)) {
// Flash screen red for 1 second (1000ms) to show damage taken
LK.effects.flashScreen(0xff0000, 1000);
// Show game over
LK.showGameOver();
break;
}
}
}); ===================================================================
--- original.js
+++ change.js
@@ -114,13 +114,18 @@
self.x = 2048 - self.width;
}
};
self.shoot = function () {
- var bullet = new EnemyBullet();
- bullet.x = self.x;
- bullet.y = self.y + self.height / 2;
- game.addChild(bullet);
- enemyBullets.push(bullet);
+ var bullet1 = new EnemyBullet();
+ bullet1.x = self.x - self.width / 4;
+ bullet1.y = self.y + self.height / 2;
+ game.addChild(bullet1);
+ enemyBullets.push(bullet1);
+ var bullet2 = new EnemyBullet();
+ bullet2.x = self.x + self.width / 4;
+ bullet2.y = self.y + self.height / 2;
+ game.addChild(bullet2);
+ enemyBullets.push(bullet2);
};
});
// HeroBullet class
var HeroBullet = Container.expand(function () {
Blue,laser like. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Golden badge shaped. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Red ufo. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Big version of enemy and only dies after shot four times rest of features are from original enemies. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Red bullet facing towards the bottom of the game. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Like a big animated explosion. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Looks exactly like a realistic rocket. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Imagined cosmic planet. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Star. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A golden glowing ball. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A nuke (no background). Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows