User prompt
in bubble update, if not attached, if a bubble intersects with a barrier and the bubble is moving towards the barrier. Bounce the bubble off the barrier
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (5 edits merged)
Please save this source code
User prompt
rewrite getDetachedBubbles such that it counts from the last element in rows not the first
Code edit (5 edits merged)
Please save this source code
User prompt
in getDetachedBubbles you are using getConnectedBubbles however that is type dependent, for this case any type should count as connected.
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'if (bubble !== null && !visited.has(bubble)) {' Line Number: 105
User prompt
In var visited = new Set(connectedToTop.filter(function (bubble) { return bubble != null; })); LK does not support Set, please fix this
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'return bubble !== null;' Line Number: 99
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'return bubble !== undefined;' Line Number: 99
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'var visited = new Set(connectedToTop);' Line Number: 98
Code edit (1 edits merged)
Please save this source code
User prompt
Implement this //Get a list of bubbles that are not connected to the top row, or to a chain of bubbles connected to the top row. self.getDetachedBubbles = function () {}; Note that all unconnected bubbles must be detected
User prompt
getDetachedBubbles does not seem to detect all unconnected bubbles, please fix this
Code edit (5 edits merged)
Please save this source code
User prompt
Implement this //Get a list of bubbles that are not connected to the top row, or to a chain of bubbles connected to the top row. self.getDetachedBubbles = function () {}; Note that all unconnected bubbles must be detected
Code edit (4 edits merged)
Please save this source code
User prompt
Write this method //Method that gets all bubbles which are not, or do not have a recursive neighbour that is connected to the top row of bubblels self.getDetachedBubbles = function () {};
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'if (neighbor.type === bubble.type) {' Line Number: 74
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'self.removeBubbles(bubbels);' Line Number: 45
Code edit (1 edits merged)
Please save this source code
/**** * Classes ****/ var Barrier = Container.expand(function () { var self = Container.call(this); var barrierGraphics = self.attachAsset('barrier', { anchorX: .5, anchorY: 0 }); }); var Bubble = Container.expand(function (max_types) { var self = Container.call(this); var colors = [0xff0000, 0x00ff00, 0x0000ff, 0xff00ff, 0xffff00, 0x00ffff, 0xffffff]; var bubbleGraphics = self.attachAsset('bubble', { anchorX: 0.5, anchorY: 0.5 }); var state = 0; var targetX = 0; var targetY = 0; var isAttached = true; var speedX = 0; var speedY = 0; self.setPos = function (x, y) { self.x = targetX = x; self.y = targetY = y; }; max_types = max_types || 3; self.type = Math.floor(Math.random() * max_types); bubbleGraphics.tint = colors[self.type]; self.detatch = function () { game.addChild(self); self.y += grid.y; isAttached = false; speedX = Math.random() * 40 - 20; speedY = -Math.random() * 30; self.down = undefined; }; self.update = function () { if (!isAttached) { self.x += speedX; self.y += speedY; speedY += 1.5; if (self.x < self.width / 2 && speedX < 0 || self.x > game.width - self.width / 2 && speedX > 0) { speedX = -speedX; } // Check if the bubble intersects with a barrier and is moving towards the barrier for (var i = 0; i < barriers.length; i++) { var barrier = barriers[i]; if (self.intersects(barrier)) { if (self.x < barrier.x && speedX > 0 || self.x > barrier.x && speedX < 0) { speedX = -speedX; } if (self.y < barrier.y && speedY > 0 || self.y > barrier.y && speedY < 0) { speedY = -speedY; } } } } }; }); var Grid = Container.expand(function () { var self = Container.call(this); var rows = []; self.container = self.addChild(new Container()); var rowCount = 0; function insertRow() { var row = []; var rowWidth = rowCount % 2 == 0 ? 13 : 12; for (var a = 0; a < rowWidth; a++) { var bubble = new Bubble(); bubble.setPos((2048 - bubble.width * rowWidth) / 2 + bubble.width * a + bubble.width / 2, -rowCount * (1.7320508076 * bubble.height) / 2); self.container.addChild(bubble); row.push(bubble); bubble.down = function () { var bubbles = self.getConnectedBubbles(this); self.removeBubbles(bubbles); var disconnected = self.getDetachedBubbles(); self.removeBubbles(disconnected); }; } rows.push(row); rowCount++; } //Method that removes an array of bubbles from the rows array. self.removeBubbles = function (bubbles) { for (var i = 0; i < bubbles.length; i++) { var bubble = bubbles[i]; var bubbleIndex = this.findBubbleIndex(bubble); if (bubbleIndex) { rows[bubbleIndex.row][bubbleIndex.col] = null; bubble.detatch(); } } }; self.getConnectedBubbles = function (bubble, ignoreType) { var connectedBubbles = []; var queue = [bubble]; var visited = []; while (queue.length > 0) { var currentBubble = queue.shift(); if (visited.indexOf(currentBubble) === -1) { visited.push(currentBubble); connectedBubbles.push(currentBubble); var neighbors = self.getNeighbors(currentBubble); for (var i = 0; i < neighbors.length; i++) { var neighbor = neighbors[i]; if (neighbor && (neighbor.type === bubble.type || ignoreType)) { queue.push(neighbor); } } } } return connectedBubbles; }; //Get a list of bubbles that are not connected to the top row, or to a chain of bubbles connected to the top row. self.getDetachedBubbles = function () { var detachedBubbles = []; var connectedToTop = []; // Mark all bubbles connected to the bottom row var lastRowIndex = rows.length - 1; for (var i = 0; i < rows[lastRowIndex].length; i++) { if (rows[lastRowIndex][i] !== null) { var bottomConnected = self.getConnectedBubbles(rows[lastRowIndex][i], true); connectedToTop = connectedToTop.concat(bottomConnected); } } // Mark all bubbles as visited or not var visited = connectedToTop.filter(function (bubble) { return bubble != null; }); // Find all bubbles that are not visited and not connected to the top for (var row = 0; row < rows.length - 1; row++) { for (var col = 0; col < rows[row].length; col++) { var bubble = rows[row][col]; if (bubble !== null && visited.indexOf(bubble) == -1) { detachedBubbles.push(bubble); } } } return detachedBubbles; }; self.getNeighbors = function (bubble) { var neighbors = []; var bubbleIndex = this.findBubbleIndex(bubble); var directions = [[-1, 0], [1, 0], // left and right [0, -1], [0, 1], // above and below [-1, -1], [1, -1] // diagonals for even rows ]; if (bubbleIndex.row % 2 === 1) { // Adjust diagonals for odd rows directions[4] = [-1, 1]; directions[5] = [1, 1]; } for (var i = 0; i < directions.length; i++) { var dir = directions[i]; var newRow = bubbleIndex.row + dir[0]; var newCol = bubbleIndex.col + dir[1]; if (newRow >= 0 && newRow < rows.length && newCol >= 0 && newCol < rows[newRow].length) { neighbors.push(rows[newRow][newCol]); } } return neighbors; }; self.findBubbleIndex = function (bubble) { for (var row = 0; row < rows.length; row++) { var col = rows[row].indexOf(bubble); if (col !== -1) { return { row: row, col: col }; } } return null; }; insertRow(); insertRow(); insertRow(); insertRow(); insertRow(); insertRow(); insertRow(); insertRow(); insertRow(); }); var HintBubble = Container.expand(function () { var self = Container.call(this); }); var Launcher = Container.expand(function () { var self = Container.call(this); }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x010c42 }); /**** * Game Code ****/ //Game size 2048x2732 var grid = game.addChild(new Grid()); grid.y = 1300; var barriers = []; for (var a = 0; a < 4; a++) { var barrier = game.addChild(new Barrier()); barrier.y = 2732 - 500; barrier.x = 2048 / 5 * a + 2048 / 5; }
===================================================================
--- original.js
+++ change.js
@@ -1,7 +1,14 @@
/****
* Classes
****/
+var Barrier = Container.expand(function () {
+ var self = Container.call(this);
+ var barrierGraphics = self.attachAsset('barrier', {
+ anchorX: .5,
+ anchorY: 0
+ });
+});
var Bubble = Container.expand(function (max_types) {
var self = Container.call(this);
var colors = [0xff0000, 0x00ff00, 0x0000ff, 0xff00ff, 0xffff00, 0x00ffff, 0xffffff];
var bubbleGraphics = self.attachAsset('bubble', {
@@ -25,23 +32,30 @@
game.addChild(self);
self.y += grid.y;
isAttached = false;
speedX = Math.random() * 40 - 20;
- speedY = -Math.random() * 25;
+ speedY = -Math.random() * 30;
self.down = undefined;
- self.alpha = .5;
- self.interactiable = false;
};
self.update = function () {
if (!isAttached) {
self.x += speedX;
self.y += speedY;
- speedY += 1;
+ speedY += 1.5;
if (self.x < self.width / 2 && speedX < 0 || self.x > game.width - self.width / 2 && speedX > 0) {
speedX = -speedX;
}
- if (Math.random() > .8) {
- isAttached = true;
+ // Check if the bubble intersects with a barrier and is moving towards the barrier
+ for (var i = 0; i < barriers.length; i++) {
+ var barrier = barriers[i];
+ if (self.intersects(barrier)) {
+ if (self.x < barrier.x && speedX > 0 || self.x > barrier.x && speedX < 0) {
+ speedX = -speedX;
+ }
+ if (self.y < barrier.y && speedY > 0 || self.y > barrier.y && speedY < 0) {
+ speedY = -speedY;
+ }
+ }
}
}
};
});
@@ -190,5 +204,11 @@
* Game Code
****/
//Game size 2048x2732
var grid = game.addChild(new Grid());
-grid.y = 1300;
\ No newline at end of file
+grid.y = 1300;
+var barriers = [];
+for (var a = 0; a < 4; a++) {
+ var barrier = game.addChild(new Barrier());
+ barrier.y = 2732 - 500;
+ barrier.x = 2048 / 5 * a + 2048 / 5;
+}
\ No newline at end of file
Circular white gradient circle on black background. Gradient from white on the center to black on the outer edge all around.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Soft straight Long red paint on black background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Fire ball. Bubble shooter game. Thin black outline.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
green notification bubble. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.