Code edit (1 edits merged)
Please save this source code
User prompt
Migrate to the latest version of LK
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading '0')' in this line: 'levelText.setText('Level ' + (currentLevel + 1) + ' - Get ' + levels[currentLevel][0] + ' out of ' + levels[currentLevel][1] + ' shapes');' Line Number: 232
Code edit (19 edits merged)
Please save this source code
User prompt
in on tick if (currentLevel == levels.length) call game over
Code edit (1 edits merged)
Please save this source code
===================================================================
--- original.js
+++ change.js
@@ -1,102 +1,15 @@
-var hsvToRgb = function (h, s, v) {
- var r, g, b;
- var i = Math.floor(h * 6);
- var f = h * 6 - i;
- var p = v * (1 - s);
- var q = v * (1 - f * s);
- var t = v * (1 - (1 - f) * s);
- switch (i % 6) {
- case 0:
- (r = v, g = t, b = p);
- break;
- case 1:
- (r = q, g = v, b = p);
- break;
- case 2:
- (r = p, g = v, b = t);
- break;
- case 3:
- (r = p, g = q, b = v);
- break;
- case 4:
- (r = t, g = p, b = v);
- break;
- case 5:
- (r = v, g = p, b = q);
- break;
- }
- return (r * 255 << 16) + (g * 255 << 8) + b * 255;
-};
-var circlesCollide = function (o1, o2) {
- var dx = (o1.x - o2.x) * (o1.x - o2.x);
- var dy = (o1.y - o2.y) * (o1.y - o2.y);
- var radii = (o1.width + o2.width) / 2;
- radii *= radii;
- if (dx + dy < radii) {
- return true;
- } else {
- return false;
- }
-};
-var StaticShape = Container.expand(function () {
- var self = Container.call(this);
- self.update = function () {
- if (self.scalingUp) {
- if (self.scale.x < 4) {
- self.scale.x += 0.08;
- self.scale.y += 0.08;
- } else {
- self.scalingUp = false;
- LK.setTimeout(scaleDown2, 5000);
- }
- } else if (self.scalingDown) {
- if (self.scale.x > 0.4) {
- self.scale.x -= 0.4;
- self.scale.y -= 0.4;
- } else {
- if (self.parent) self.parent.expandedCount--;
- self.destroy();
- }
- }
- };
- var shapeGraphics;
- shapeGraphics = LK.getAsset('circle', 'Circle Shape', 0.5, 0.5);
- shapeGraphics.alpha = 0.5;
- self.addChild(shapeGraphics);
- self.isCollided = true;
- self.scalingUp = true;
- self.scalingDown = false;
- self.scale.set(1, 1);
- var scaleDown2 = function () {
- console.log('StaticShape.scaleDown2 called');
- self.scalingDown = true;
- };
- var update = function () {
- if (self.scalingUp) {
- if (self.scale.x < 4) {
- self.scale.x += 0.08;
- self.scale.y += 0.08;
- } else {
- self.scalingUp = false;
- LK.setTimeout(scaleDown2, 4000);
- }
- } else if (self.scalingDown) {
- if (self.scale.x > 0.4) {
- self.scale.x -= 0.4;
- self.scale.y -= 0.4;
- } else {
- if (self.parent) self.parent.expandedCount--;
- self.destroy();
- }
- }
- };
-});
+/****
+* Classes
+****/
var Shape = Container.expand(function () {
- console.log('Shape created');
var self = Container.call(this);
+ console.log('Shape created');
var shapeGraphics;
- shapeGraphics = LK.getAsset('circle', 'Circle Shape', 0.5, 0.5);
+ shapeGraphics = LK.getAsset('circle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
self.updateColor = function () {
var h = self.colorIndex / 32;
var s = 0.8;
var v = 0.8;
@@ -110,9 +23,9 @@
var angle = Math.random() * Math.PI * 2;
var speed = 7;
self.vx = Math.cos(angle) * speed;
self.vy = Math.sin(angle) * speed;
- self.move = function () {
+ self._move_migrated = function () {
if (!self.isCollided) {
self.x += self.vx;
self.y += self.vy;
if (self.x - self.width / 2 < 0 || self.x > 2048 - self.width / 2) {
@@ -129,19 +42,19 @@
}
};
self.scalingUp = false;
self.scalingDown = false;
- var scaleUp2 = function () {
+ var scaleUp2 = function scaleUp2() {
self.scalingUp = true;
};
self.explode = function () {
self.isCollided = true;
LK.setTimeout(scaleUp2, 1);
};
- var scaleDown2 = function () {
+ var scaleDown2 = function scaleDown2() {
self.scalingDown = true;
};
- self.update = function () {
+ self._update_migrated = function () {
if (self.scalingUp) {
if (self.scale.x < 4) {
self.scale.x += 0.2;
self.scale.y += 0.2;
@@ -153,102 +66,216 @@
if (self.scale.x > 0.2) {
self.scale.x -= 0.2;
self.scale.y -= 0.2;
} else {
- if (self.parent) self.parent.expandedCount--;
+ if (self.parent) {
+ self.parent.expandedCount--;
+ }
self.destroy();
}
}
};
});
-var Game = Container.expand(function () {
+var StaticShape = Container.expand(function () {
var self = Container.call(this);
- self.expandedCount = 1;
- LK.stageContainer.setBackgroundColor('0xCCCCFF');
- var currentLevel = 0;
- var levels = [[1, 5], [3, 7], [6, 9], [8, 12], [10, 15], [15, 20], [18, 25], [25, 32], [30, 40], [35, 50], [50, 65], [75, 75]];
- var shapes = [];
- var levelText = new Text2('Level 1 - Get 1 out of 5 shapes', {
- size: 80,
- fill: "#ffffff",
- align: 'center'
- });
- levelText.anchor.set(0.5, 0);
- levelText.x = 0;
- levelText.y = 50;
- LK.gui.topCenter.addChild(levelText);
- var collisionsCount = 0;
- var collisionText = new Text2('Shapes: ' + collisionsCount, {
- size: 80,
- fill: "#777777",
- align: 'center'
- });
- collisionText.anchor.set(0.5, 0);
- collisionText.x = 0;
- collisionText.y = 150;
- LK.gui.topCenter.addChild(collisionText);
- for (var i = 0; i < 5; i++) {
- var shape = self.addChild(new Shape());
- shape.x = shape.width + Math.random() * (2048 - 2 * shape.width);
- shape.y = shape.height + Math.random() * (2732 - 2 * shape.height);
- shapes.push(shape);
- }
- var isClicked = false;
- self.staticShape = null;
- stage.on('down', function (obj) {
- if (!isClicked) {
- isClicked = true;
- var event = obj.event;
- var pos = event.getLocalPosition(self);
- self.staticShape = self.addChild(new StaticShape());
- self.staticShape.x = pos.x - self.staticShape.width / 2;
- self.staticShape.y = pos.y - self.staticShape.height / 2;
+ self._update_migrated = function () {
+ if (self.scalingUp) {
+ if (self.scale.x < 4) {
+ self.scale.x += 0.08;
+ self.scale.y += 0.08;
+ } else {
+ self.scalingUp = false;
+ LK.setTimeout(scaleDown2, 5000);
+ }
+ } else if (self.scalingDown) {
+ if (self.scale.x > 0.4) {
+ self.scale.x -= 0.4;
+ self.scale.y -= 0.4;
+ } else {
+ if (self.parent) {
+ self.parent.expandedCount--;
+ }
+ self.destroy();
+ }
}
+ };
+ var shapeGraphics;
+ shapeGraphics = LK.getAsset('circle', {
+ anchorX: 0.5,
+ anchorY: 0.5
});
- LK.on('tick', function () {
- if (self.expandedCount == 0) {
- if (collisionsCount >= levels[currentLevel][0]) {
- collisionText.setText('Level Completed - now try this');
- currentLevel++;
+ shapeGraphics.alpha = 0.5;
+ self.addChild(shapeGraphics);
+ self.isCollided = true;
+ self.scalingUp = true;
+ self.scalingDown = false;
+ self.scale.set(1, 1);
+ var scaleDown2 = function scaleDown2() {
+ console.log('StaticShape.scaleDown2 called');
+ self.scalingDown = true;
+ };
+ var update = function update() {
+ if (self.scalingUp) {
+ if (self.scale.x < 4) {
+ self.scale.x += 0.08;
+ self.scale.y += 0.08;
} else {
- collisionText.setText('Try again');
+ self.scalingUp = false;
+ LK.setTimeout(scaleDown2, 4000);
}
- shapes.forEach(function (child) {
- child.destroy();
- });
- shapes = [];
- if (currentLevel == levels.length) {
- collisionText.setText('Good Job!\nAll levels completed!\nYou win :)');
- LK.showGameOver();
- return;
- }
- for (var i = 0; i < (levels[currentLevel] ? levels[currentLevel][1] : 0); i++) {
- var shape = self.addChild(new Shape());
- shape.x = shape.width + Math.random() * (2048 - 2 * shape.width);
- shape.y = shape.height + Math.random() * (2732 - 2 * shape.height);
- shapes.push(shape);
- }
- isClicked = false;
- collisionsCount = 0;
- self.expandedCount = 1;
- if (currentLevel < levels.length) {
- levelText.setText('Level ' + (currentLevel + 1) + ' - Get ' + levels[currentLevel][0] + ' out of ' + levels[currentLevel][1] + ' shapes');
+ } else if (self.scalingDown) {
+ if (self.scale.x > 0.4) {
+ self.scale.x -= 0.4;
+ self.scale.y -= 0.4;
} else {
- levelText.setText('All levels completed!');
+ if (self.parent) {
+ self.parent.expandedCount--;
+ }
+ self.destroy();
}
+ }
+ };
+});
+
+/****
+* Initialize Game
+****/
+var game = new LK.Game({
+ backgroundColor: 0x000000
+});
+
+/****
+* Game Code
+****/
+var hsvToRgb = function hsvToRgb(h, s, v) {
+ var r, g, b;
+ var i = Math.floor(h * 6);
+ var f = h * 6 - i;
+ var p = v * (1 - s);
+ var q = v * (1 - f * s);
+ var t = v * (1 - (1 - f) * s);
+ switch (i % 6) {
+ case 0:
+ r = v, g = t, b = p;
+ break;
+ case 1:
+ r = q, g = v, b = p;
+ break;
+ case 2:
+ r = p, g = v, b = t;
+ break;
+ case 3:
+ r = p, g = q, b = v;
+ break;
+ case 4:
+ r = t, g = p, b = v;
+ break;
+ case 5:
+ r = v, g = p, b = q;
+ break;
+ }
+ return (r * 255 << 16) + (g * 255 << 8) + b * 255;
+};
+var circlesCollide = function circlesCollide(o1, o2) {
+ var dx = (o1.x - o2.x) * (o1.x - o2.x);
+ var dy = (o1.y - o2.y) * (o1.y - o2.y);
+ var radii = (o1.width + o2.width) / 2;
+ radii *= radii;
+ if (dx + dy < radii) {
+ return true;
+ } else {
+ return false;
+ }
+};
+game.expandedCount = 1;
+game.setBackgroundColor('0xCCCCFF');
+var currentLevel = 0;
+var levels = [[1, 5], [3, 7], [6, 9], [8, 12], [10, 15], [15, 20], [18, 25], [25, 32], [30, 40], [35, 50], [50, 65], [75, 75]];
+var shapes = [];
+var levelText = new Text2('Level 1 - Get 1 out of 5 shapes', {
+ size: 80,
+ fill: "#ffffff",
+ align: 'center'
+});
+levelText.anchor.set(0.5, 0);
+levelText.x = 0;
+levelText.y = 50;
+LK.gui.top.addChild(levelText);
+var collisionsCount = 0;
+var collisionText = new Text2('Shapes: ' + collisionsCount, {
+ size: 80,
+ fill: "#777777",
+ align: 'center'
+});
+collisionText.anchor.set(0.5, 0);
+collisionText.x = 0;
+collisionText.y = 150;
+LK.gui.top.addChild(collisionText);
+for (var i = 0; i < 5; i++) {
+ var shape = game.addChild(new Shape());
+ shape.x = shape.width + Math.random() * (2048 - 2 * shape.width);
+ shape.y = shape.height + Math.random() * (2732 - 2 * shape.height);
+ shapes.push(shape);
+}
+var isClicked = false;
+game.staticShape = null;
+game.on('down', function (x, y, obj) {
+ if (!isClicked) {
+ isClicked = true;
+ var event = obj;
+ var pos = game.toLocal(event.global);
+ game.staticShape = game.addChild(new StaticShape());
+ game.staticShape.x = pos.x - game.staticShape.width / 2;
+ game.staticShape.y = pos.y - game.staticShape.height / 2;
+ }
+});
+LK.on('tick', function () {
+ if (game.expandedCount == 0) {
+ if (collisionsCount >= levels[currentLevel][0]) {
+ collisionText.setText('Level Completed - now try this');
+ currentLevel++;
+ } else {
+ collisionText.setText('Try again');
+ }
+ shapes.forEach(function (child) {
+ child.destroy();
+ });
+ shapes = [];
+ if (currentLevel == levels.length) {
+ collisionText.setText('Good Job!\nAll levels completed!\nYou win :)');
+ LK.showGameOver();
return;
}
- if (self.staticShape && self.staticShape.update) self.staticShape.update();
- shapes.forEach(function (shape) {
- shape.move();
- if (shape.update) shape.update();
- self.children.forEach(function (child) {
- if (shape !== child && !shape.isCollided && child.isCollided && circlesCollide(shape, child)) {
- shape.explode();
- collisionsCount++;
- self.expandedCount++;
- collisionText.setText('Shapes: ' + collisionsCount);
- }
- });
+ for (var i = 0; i < (levels[currentLevel] ? levels[currentLevel][1] : 0); i++) {
+ var shape = game.addChild(new Shape());
+ shape.x = shape.width + Math.random() * (2048 - 2 * shape.width);
+ shape.y = shape.height + Math.random() * (2732 - 2 * shape.height);
+ shapes.push(shape);
+ }
+ isClicked = false;
+ collisionsCount = 0;
+ game.expandedCount = 1;
+ if (currentLevel < levels.length) {
+ levelText.setText('Level ' + (currentLevel + 1) + ' - Get ' + levels[currentLevel][0] + ' out of ' + levels[currentLevel][1] + ' shapes');
+ } else {
+ levelText.setText('All levels completed!');
+ }
+ return;
+ }
+ if (game.staticShape && game.staticShape._update_migrated) {
+ game.staticShape._update_migrated();
+ }
+ shapes.forEach(function (shape) {
+ shape._move_migrated();
+ if (shape._update_migrated) {
+ shape._update_migrated();
+ }
+ game.children.forEach(function (child) {
+ if (shape !== child && !shape.isCollided && child.isCollided && circlesCollide(shape, child)) {
+ shape.explode();
+ collisionsCount++;
+ game.expandedCount++;
+ collisionText.setText('Shapes: ' + collisionsCount);
+ }
});
});
-});
+});
\ No newline at end of file
a white geometric square shape Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a white dot Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
flat white round disk Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
gif circle spinning animation Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.