User prompt
start particle effect should have the same color as the start that is destroyed
User prompt
random star colors should be very bright
User prompt
stars should be painted with random colors
User prompt
add scale effect to start during the game. it should increase and decreases its size all the time
User prompt
make star scale update on tick
User prompt
star should increase and decresase its size all the time.
User prompt
when dot is destroyed wait for 2 seconds before game over
User prompt
add a new particle effect for when the dot is destroyed
User prompt
add particle effect when star is destroyed.
Code edit (2 edits merged)
Please save this source code
User prompt
only update score based on destroyed stars
Code edit (1 edits merged)
Please save this source code
User prompt
the score text object would need to be added to the `LK.gui` overlay at the appropriate position, such as the top center of the screen, using the appropriate method provided by the LK game engine.
Code edit (1 edits merged)
Please save this source code
User prompt
Make sure score ia displayes on game start
User prompt
Show score in the top center of the screen
User prompt
Starparticles should spawn form star position when star is destroyes
User prompt
Show starparticles when a star is destroyed
User prompt
Create a new class for StartParticles. This new class will be used to show particles explode in a circular way when a star is destpryes
User prompt
Stars should increase and decrease their size constantly
User prompt
Start should increase and decrease their size
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'y')' in or related to this line: 'newStar.y = stars[j].y - 1000;' Line Number: 139
User prompt
When a star is destroyed a new one should appear 1000 pixels higher. Should be in the center of the x axis
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'y')' in or related to this line: 'newStar.y = stars[j].y - 2000;' Line Number: 139
/**** * Classes ****/ var ParticleEffect = Container.expand(function (x, y, color) { var self = Container.call(this); self.x = x; self.y = y; var particles = []; for (var i = 0; i < 20; i++) { var particle = self.attachAsset('star', { anchorX: 0.5, anchorY: 0.5, tint: color }); particle.scaleX = particle.scaleY = Math.random() * 0.5 + 0.5; particle.alpha = 0.7; particle.vx = (Math.random() - 0.5) * 10; particle.vy = (Math.random() - 0.5) * 10; particles.push(particle); } self.update = function () { for (var i = particles.length - 1; i >= 0; i--) { particles[i].x += particles[i].vx; particles[i].y += particles[i].vy; particles[i].alpha -= 0.02; if (particles[i].alpha <= 0) { particles[i].destroy(); particles.splice(i, 1); } } if (particles.length === 0) { self.destroy(); } }; game.addChild(self); }); var Dot = Container.expand(function () { var self = Container.call(this); var dotGraphics = self.attachAsset('dot', { anchorX: 0.5, anchorY: 0.5 }); self.velocityY = 0; self.gravity = 0.5; self.bounce = -15; self.update = function () { var previousY = self.y; self.velocityY += self.gravity; self.y += self.velocityY; if (self.y > 2732 - self.height / 2) { self.velocityY = self.bounce; } self.movedDistance = self.y - previousY; }; self.bounceUp = function () { self.velocityY = self.bounce; }; }); var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.direction = Math.random() < 0.5 ? -1 : 1; self.speed = (Math.random() * 3 + 5) * self.direction; self.rotationSpeed = 0.05; self.rotation = 0; self.move = function () { self.x += self.speed; self.rotation += self.rotationSpeed; obstacleGraphics.rotation = self.rotation; if (self.direction === 1 && self.x > 2048 + self.width / 2 || self.direction === -1 && self.x < -self.width / 2) { self.direction *= -1; self.speed *= -1; self.y = Math.random() * (2732 - self.height) + self.height / 2; } }; self.moveDown = function (distance) { self.y += distance; if (self.y > 2732 - self.height / 2) { self.y = -self.height / 2; } }; }); var Star = Container.expand(function () { var self = Container.call(this); var starGraphics = self.attachAsset('star', { anchorX: 0.5, anchorY: 0.5 }); starGraphics.tint = Math.random() * 0xFFFFFF + 0xAAAAAA; self.scaleDirection = 1; self.scaleSpeed = 0.01; self.moveDown = function (distance) { self.y += distance; if (self.y > 2732 - self.height / 2) { self.y = -self.height / 2; } }; self.update = function () { self.scaleX += self.scaleSpeed * self.scaleDirection; self.scaleY += self.scaleSpeed * self.scaleDirection; if (self.scaleX > 1.5 || self.scaleX < 0.5) { self.scaleDirection *= -1; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ function createParticleEffect(x, y, color) { var effect = new ParticleEffect(x, y, color); LK.on('tick', function () { effect.update(); }); } var dot = game.addChild(new Dot()); dot.x = 2048 / 2; dot.y = 2732 - dot.height / 2; var obstacles = []; for (var i = 0; i < 5; i++) { var obstacle = game.addChild(new Obstacle()); obstacle.x = obstacle.direction === 1 ? -obstacle.width / 2 : 2048 + obstacle.width / 2; obstacle.y = Math.random() * (1366 - obstacle.height) + obstacle.height / 2; obstacles.push(obstacle); } var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); scoreTxt.x = 500; LK.gui.top.addChild(scoreTxt); LK.gui.top.addChild(scoreTxt); game.on('down', function (obj) { dot.bounceUp(); }); LK.on('tick', function () { dot.update(); for (var i = 0; i < obstacles.length; i++) { obstacles[i].move(); if (dot.y < 1200 && dot.movedDistance < 0) { // If the dot moved up and its y position is less than 1400 obstacles[i].moveDown(-dot.movedDistance); } if (dot.intersects(obstacles[i])) { LK.showGameOver(); } } }); var stars = []; var star = game.addChild(new Star()); star.x = 2048 / 2; star.y = 2732 / 2; stars.push(star); LK.on('tick', function () { dot.update(); for (var i = 0; i < obstacles.length; i++) { obstacles[i].move(); if (dot.y < 1800 && dot.movedDistance < 0) { obstacles[i].moveDown(-dot.movedDistance); } if (dot.intersects(obstacles[i])) { LK.showGameOver(); } } for (var j = stars.length - 1; j >= 0; j--) { if (dot.intersects(stars[j])) { LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore().toString()); var oldStarY = stars[j].y; createParticleEffect(stars[j].x, stars[j].y, stars[j].tint); stars[j].destroy(); stars.splice(j, 1); var newStar = game.addChild(new Star()); newStar.x = 2048 / 2; newStar.y = oldStarY - 1500; stars.push(newStar); } else if (dot.y < 1800 && dot.movedDistance < 0) { stars[j].moveDown(-dot.movedDistance); } } });
===================================================================
--- original.js
+++ change.js
@@ -1,16 +1,17 @@
/****
* Classes
****/
-var ParticleEffect = Container.expand(function (x, y) {
+var ParticleEffect = Container.expand(function (x, y, color) {
var self = Container.call(this);
self.x = x;
self.y = y;
var particles = [];
for (var i = 0; i < 20; i++) {
var particle = self.attachAsset('star', {
anchorX: 0.5,
- anchorY: 0.5
+ anchorY: 0.5,
+ tint: color
});
particle.scaleX = particle.scaleY = Math.random() * 0.5 + 0.5;
particle.alpha = 0.7;
particle.vx = (Math.random() - 0.5) * 10;
@@ -115,10 +116,10 @@
/****
* Game Code
****/
-function createParticleEffect(x, y) {
- var effect = new ParticleEffect(x, y);
+function createParticleEffect(x, y, color) {
+ var effect = new ParticleEffect(x, y, color);
LK.on('tick', function () {
effect.update();
});
}
@@ -176,9 +177,9 @@
if (dot.intersects(stars[j])) {
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore().toString());
var oldStarY = stars[j].y;
- createParticleEffect(stars[j].x, stars[j].y);
+ createParticleEffect(stars[j].x, stars[j].y, stars[j].tint);
stars[j].destroy();
stars.splice(j, 1);
var newStar = game.addChild(new Star());
newStar.x = 2048 / 2;