Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: startFX is not defined' in or related to this line: 'startFX.direction = i;' Line Number: 276
Code edit (1 edits merged)
Please save this source code
User prompt
the starFX should have a direction and move to that direction.
Code edit (3 edits merged)
Please save this source code
User prompt
when a path step disapear, 5 stars should goes from it in every directions.
Code edit (13 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: iffX is not defined' in or related to this line: 'return iffX * diffX + diffY * diffY <= 100;' Line Number: 298
Code edit (1 edits merged)
Please save this source code
User prompt
the startfx playfx function should start a timer which increase each 10 milliseconds the scale and decrease the alpha of the startfx.
User prompt
each time the player successfully goes to the next path step, a star FX should be displayed around the path step.
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading '0')' in or related to this line: 'if (self.pathPositions[0]) {' Line Number: 191
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'length')' in or related to this line: 'if (self.curStep < self.pathPositions.length) {' Line Number: 181
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'length')' in or related to this line: 'if (self.curStep < self.pathPositions.length) {' Line Number: 178
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'player.init(self.pathPositions[0].x, self.pathPositions[0].y);' Line Number: 176
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: popup is not defined' in or related to this line: 'popup.close();' Line Number: 251
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: LK.Popup is not a constructor' in or related to this line: 'var popup = new LK.Popup();' Line Number: 247
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: LK.createPopup is not a function' in or related to this line: 'var popup = LK.createPopup();' Line Number: 247
User prompt
Please fix the bug: 'TypeError: LK.Popup is not a function' in or related to this line: 'var popup = LK.Popup();' Line Number: 247
/**** 
* Classes
****/
var Ball = Container.expand(function (assetName) {
	var self = Container.call(this);
	self.rotating = false;
	self.angle = 0;
	self.attachAsset(assetName, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.rotateAround = function (otherBall) {
		self.angle += 0.025 * (path.level + 1);
		self.rotation = self.angle + 1.57;
		otherBall.rotation = self.rotation + 3.14;
		self.x = otherBall.x + otherBall.width * 2 * Math.cos(self.angle);
		self.y = otherBall.y + otherBall.width * 2 * Math.sin(self.angle);
	};
});
var FirstPathStep = Container.expand(function () {
	var self = Container.call(this);
	self.attachAsset('firstStep', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.disapear = function () {
		self.alpha = 1;
		self.timer = LK.setInterval(function () {
			self.alpha -= 0.01;
			if (self.alpha <= 0) {
				LK.clearInterval(self.timer);
				self.destroy();
			}
		}, 10);
	};
});
var LastPathStep = Container.expand(function () {
	var self = Container.call(this);
	self.attachAsset('lastStep', {
		anchorX: 0.5,
		anchorY: 0.5
	});
});
var Path = Container.expand(function (level) {
	var self = Container.call(this);
	LK.setScore(level);
	self.level = level;
	self.levels = [
	// level 0
	[{
		x: 1024,
		y: 2400
	}, {
		x: 1024,
		y: 2200
	}, {
		x: 1024,
		y: 2000
	}, {
		x: 1024,
		y: 1800
	}],
	// level 1
	[{
		x: 1024,
		y: 2400
	}, {
		x: 1024,
		y: 2200
	}, {
		x: 824,
		y: 2200
	}, {
		x: 824,
		y: 2000
	}, {
		x: 824,
		y: 1800
	}, {
		x: 1024,
		y: 1800
	}, {
		x: 1224,
		y: 1800
	}, {
		x: 1424,
		y: 1800
	}, {
		x: 1424,
		y: 2000
	}, {
		x: 1424,
		y: 2200
	}, {
		x: 1624,
		y: 2200
	}, {
		x: 1824,
		y: 2200
	}, {
		x: 1824,
		y: 2000
	}, {
		x: 1824,
		y: 1800
	}, {
		x: 1824,
		y: 1600
	}, {
		x: 1824,
		y: 1400
	}, {
		x: 1824,
		y: 1200
	}, {
		x: 1624,
		y: 1200
	}, {
		x: 1424,
		y: 1200
	}, {
		x: 1224,
		y: 1200
	}, {
		x: 1024,
		y: 1200
	}, {
		x: 824,
		y: 1200
	}, {
		x: 624,
		y: 1200
	}, {
		x: 624,
		y: 1000
	}, {
		x: 624,
		y: 800
	}, {
		x: 624,
		y: 600
	}, {
		x: 624,
		y: 400
	}, {
		x: 624,
		y: 200
	}, {
		x: 824,
		y: 200
	}, {
		x: 1024,
		y: 200
	}, {
		x: 1224,
		y: 200
	}, {
		x: 1424,
		y: 200
	}]];
	if (self.level >= self.levels.length) {
		LK.showGameOver();
	}
	self.pathSteps = [];
	self.pathPositions = self.levels[self.level];
	self.addPathStep = function (position) {
		var step;
		if (self.curStep == 0) {
			step = self.addChild(new FirstPathStep());
		} else if (self.curStep == self.pathPositions.length - 1) {
			step = self.addChild(new LastPathStep());
		} else {
			step = self.addChild(new PathStep());
		}
		step.x = position.x;
		step.y = position.y;
		self.pathSteps.push(step);
	};
	self.curStep = 0;
	self.nextStep = function () {
		if (self.pathPositions && self.curStep < self.pathPositions.length) {
			self.addPathStep(self.pathPositions[self.curStep]);
			self.curStep++;
		}
	};
	self.setupPlayer = function (player) {
		self.curStep = 0;
		for (var i = 0; i < 10; i++) {
			self.nextStep();
		}
		if (self.pathPositions && self.pathPositions[0]) {
			player.init(self.pathPositions[0].x, self.pathPositions[0].y);
		} else {
			console.error('Path positions not defined');
		}
	};
});
var PathStep = Container.expand(function () {
	var self = Container.call(this);
	self.attachAsset('step', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.disapear = function () {
		self.alpha = 1;
		self.timer = LK.setInterval(function () {
			self.alpha -= 0.01;
			if (self.alpha <= 0) {
				LK.clearInterval(self.timer);
				self.destroy();
			}
		}, 10);
	};
});
var Player = Container.expand(function () {
	var self = Container.call(this);
	var ball1 = self.addChild(new Ball('playerBall1'));
	var ball2 = self.addChild(new Ball('playerBall2'));
	ball2.rotating = true;
	self.init = function (x, y) {
		ball1.x = x;
		ball1.y = y;
		ball1.rotating = false;
		ball2.rotating = true;
	};
	self.click = function () {
		var tempRotating = ball1.rotating;
		ball1.rotating = ball2.rotating;
		ball2.rotating = tempRotating;
		if (ball1.rotating) {
			ball1.rotation = ball1.angle = Math.atan2(ball1.y - ball2.y, ball1.x - ball2.x);
		} else if (ball2.rotating) {
			ball2.rotation = ball2.angle = Math.atan2(ball2.y - ball1.y, ball2.x - ball1.x);
		}
		var onStep1 = false;
		var onStep2 = false;
		var smallPathStep = 9999;
		for (var i = 0; i < path.pathSteps.length; i++) {
			if (path.pathSteps[i]) {
				if (IsMatching(path.pathSteps[i], ball1)) {
					onStep1 = true;
					smallPathStep = Math.min(smallPathStep, i);
				}
				if (IsMatching(path.pathSteps[i], ball2)) {
					onStep2 = true;
					smallPathStep = Math.min(smallPathStep, i);
				}
			}
		}
		if (!(onStep1 && onStep2)) {
			LK.showGameOver();
		} else {
			var starFX = new StarFX();
			starFX.x = path.pathSteps[smallPathStep].x;
			starFX.y = path.pathSteps[smallPathStep].y;
			game.addChild(starFX);
			starFX.playFX();
			path.pathSteps[smallPathStep].disapear();
			path.pathSteps.splice(smallPathStep, 1);
			path.nextStep();
			if (path.pathSteps.length == 1) {
				showCongratsPopup();
			}
		}
	};
	self.rotate = function () {
		if (ball1.rotating) {
			ball1.rotateAround(ball2);
		} else if (ball2.rotating) {
			ball2.rotateAround(ball1);
		}
	};
});
var StarFX = Container.expand(function () {
	var self = Container.call(this);
	self.attachAsset('starFX', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.playFX = function () {
		self.scaleX = 1;
		self.scaleY = 1;
		self.alpha = 1;
		self.timer = LK.setInterval(function () {
			self.scaleX += 0.01;
			self.scaleY += 0.01;
			self.alpha -= 0.01;
			if (self.alpha <= 0) {
				LK.clearInterval(self.timer);
				self.destroy();
			}
		}, 10);
	};
});
/**** 
* Initialize Game
****/
var game = new LK.Game({
	backgroundColor: 0x000000 // Init game with black background
});
/**** 
* Game Code
****/
// Initialize player ship asset
// Initialize obstacle asset
// Initialize background stars
var IsMatching = function IsMatching(obj1, obj2) {
	var diffX = obj1.x - obj2.x;
	var diffY = obj1.y - obj2.y;
	return diffX * diffX + diffY * diffY <= 1000;
};
function showCongratsPopup() {
	game.removeChild(path);
	game.removeChild(player);
	path = new Path(path.level + 1);
	path.setupPlayer(player);
	game.addChild(path);
	game.addChild(player);
}
var background = game.addChild(LK.getAsset('background', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 1024,
	y: 1366
}));
var player = new Player();
var path = new Path(0);
game.addChild(path);
game.addChild(player);
path.setupPlayer(player);
game.on('down', function (obj) {
	player.click();
});
LK.on('tick', function () {
	// Move obstacles
	player.rotate();
}); ===================================================================
--- original.js
+++ change.js
@@ -249,8 +249,13 @@
 		}
 		if (!(onStep1 && onStep2)) {
 			LK.showGameOver();
 		} else {
+			var starFX = new StarFX();
+			starFX.x = path.pathSteps[smallPathStep].x;
+			starFX.y = path.pathSteps[smallPathStep].y;
+			game.addChild(starFX);
+			starFX.playFX();
 			path.pathSteps[smallPathStep].disapear();
 			path.pathSteps.splice(smallPathStep, 1);
 			path.nextStep();
 			if (path.pathSteps.length == 1) {
@@ -265,8 +270,29 @@
 			ball2.rotateAround(ball1);
 		}
 	};
 });
+var StarFX = Container.expand(function () {
+	var self = Container.call(this);
+	self.attachAsset('starFX', {
+		anchorX: 0.5,
+		anchorY: 0.5
+	});
+	self.playFX = function () {
+		self.scaleX = 1;
+		self.scaleY = 1;
+		self.alpha = 1;
+		self.timer = LK.setInterval(function () {
+			self.scaleX += 0.01;
+			self.scaleY += 0.01;
+			self.alpha -= 0.01;
+			if (self.alpha <= 0) {
+				LK.clearInterval(self.timer);
+				self.destroy();
+			}
+		}, 10);
+	};
+});
 
 /**** 
 * Initialize Game
 ****/
@@ -282,9 +308,9 @@
 // Initialize background stars
 var IsMatching = function IsMatching(obj1, obj2) {
 	var diffX = obj1.x - obj2.x;
 	var diffY = obj1.y - obj2.y;
-	return diffX * diffX + diffY * diffY <= 200;
+	return diffX * diffX + diffY * diffY <= 1000;
 };
 function showCongratsPopup() {
 	game.removeChild(path);
 	game.removeChild(player);
 tête de mort rouge. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 
 tête de mort coter droit en bleu coter gauche en rouge. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 tourbillon bleu et rouge. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 bone. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 tourbillon rouge et bleu. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.