Code edit (2 edits merged)
Please save this source code
User prompt
Fix Bug: 'ReferenceError: sself is not defined' in or related to this line: 'sself.y += self.speed * multiplier;' Line Number: 106
Code edit (2 edits merged)
Please save this source code
User prompt
When enemies spawn, their speed is not always the same.
User prompt
Every time an enemy changes direction, its speed can change. It speeds up or slows down
Code edit (1 edits merged)
Please save this source code
User prompt
Stars must also die when they leave the game zone.
User prompt
When projectiles and enemies leave the game zone, they die.
Code edit (2 edits merged)
Please save this source code
User prompt
Enemies can only change direction every 60 ticks
User prompt
Enemies must also move from left to right as they descend.
Code edit (4 edits merged)
Please save this source code
User prompt
The hero must follow the movement of the player's mouse cursor while moving at maximum speed.
User prompt
Integrate a scrollable star fiel, behind everything, providing an illusion of ongoing forward movement. Faster moving stars should beb more visible
Code edit (1 edits merged)
Please save this source code
User prompt
Enemy projectiles must move downwards
User prompt
The hero must die if he touches an enemy
User prompt
The hero must die if he hits a projectile
User prompt
The speed of enemy projectiles must be faster than the speed of enemy movement.
User prompt
Enemies must fire projectiles
User prompt
Enemies no longer fire projectiles
Initial prompt
Demo_SpaceInvaderTribute
/**** * Classes ****/ var Star = Container.expand(function () { var self = Container.call(this); var starGraphics = self.attachAsset('star', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 1; self.alpha = self.speed / 3; self.move = function () { self.y += self.speed; if (self.y > 2732 + self.height / 2) { self.y = -self.height / 2; } }; }); var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.move = function (x, y) { var dx = x - self.x; var dy = y - self.y; var angle = Math.atan2(dy, dx); self.x += Math.cos(angle) * self.speed; self.y += Math.sin(angle) * self.speed; }; self.shoot = function () { var bullet = new HeroBullet(); bullet.x = self.x; bullet.y = self.y - self.height / 2; game.addChild(bullet); return bullet; }; }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 2; self.direction = Math.random() > 0.5 ? 1 : -1; self.move = function () { self.y += self.speed; if (LK.ticks % 60 == 0) { self.direction = Math.random() > 0.5 ? 1 : -1; self.speed = Math.random() * 3 + 2; } self.x += self.speed * self.direction; if (self.x < 0) { self.x = 0; } if (self.x > 2048) { self.x = 2048; } if (self.y > 2732 + self.height / 2) { self.destroy(); } }; self.shoot = function () { var bullet = new EnemyBullet(); bullet.x = self.x; bullet.y = self.y + self.height / 2; game.addChild(bullet); return bullet; }; }); var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('heroBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -10; self.move = function () { self.y += self.speed; if (self.y < -self.height / 2) { self.destroy(); } }; }); var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('enemyBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.move = function () { self.y += self.speed; if (self.y > 2732 + self.height / 2) { self.destroy(); } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Init game with black background }); /**** * Game Code ****/ var stars = []; for (var i = 0; i < 40; i++) { var star = new Star(); star.x = Math.random() * 2048; star.y = Math.random() * 2732; stars.push(star); game.addChild(star); } var hero = game.addChild(new Hero()); hero.x = 2048 / 2; hero.y = 2732 - 100; var enemies = []; var heroBullets = []; var enemyBullets = []; var score = 0; var scoreTxt = new Text2(score.toString(), { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var targetPos = { x: hero.x, y: hero.y }; game.on('down', function (obj) { targetPos = obj.event.getLocalPosition(game); }); game.on('move', function (obj) { targetPos = obj.event.getLocalPosition(game); }); LK.on('tick', function () { for (var i = 0; i < stars.length; i++) { stars[i].move(); } hero.move(targetPos.x, targetPos.y); // Move hero bullets for (var i = heroBullets.length - 1; i >= 0; i--) { heroBullets[i].move(); if (heroBullets[i].y < 0) { heroBullets[i].destroy(); heroBullets.splice(i, 1); } } // Move enemies bullets for (var i = enemyBullets.length - 1; i >= 0; i--) { enemyBullets[i].move(); if (enemyBullets[i].y < 0) { enemyBullets[i].destroy(); enemyBullets.splice(i, 1); } } // Move enemies and make them shoot for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].move(); if (LK.ticks % 60 == 0) { enemyBullets.push(enemies[j].shoot()); } if (enemies[j].y > 2732) { enemies[j].destroy(); enemies.splice(j, 1); } } // Check for collisions for (var k = heroBullets.length - 1; k >= 0; k--) { for (var l = enemies.length - 1; l >= 0; l--) { if (heroBullets[k].intersects(enemies[l])) { heroBullets[k].destroy(); heroBullets.splice(k, 1); enemies[l].destroy(); enemies.splice(l, 1); score += 10; scoreTxt.setText(score.toString()); break; } } } // Check if hero is hit by enemy bullet or enemy for (var m = enemyBullets.length - 1; m >= 0; m--) { if (hero.intersects(enemyBullets[m])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } for (var n = enemies.length - 1; n >= 0; n--) { if (hero.intersects(enemies[n])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } // 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 / 2; enemies.push(enemy); game.addChild(enemy); } // Hero shoot if (LK.ticks % 80 == 0) { heroBullets.push(hero.shoot()); } });
===================================================================
--- original.js
+++ change.js
@@ -49,8 +49,9 @@
self.move = function () {
self.y += self.speed;
if (LK.ticks % 60 == 0) {
self.direction = Math.random() > 0.5 ? 1 : -1;
+ self.speed = Math.random() * 3 + 2;
}
self.x += self.speed * self.direction;
if (self.x < 0) {
self.x = 0;
@@ -109,9 +110,9 @@
/****
* Game Code
****/
var stars = [];
-for (var i = 0; i < 50; i++) {
+for (var i = 0; i < 40; i++) {
var star = new Star();
star.x = Math.random() * 2048;
star.y = Math.random() * 2732;
stars.push(star);