Code edit (19 edits merged)
Please save this source code
User prompt
Where it says //Fire partiles go here spawn fire particles every tick%5
User prompt
Add a fire particle class to the game
Code edit (1 edits merged)
Please save this source code
Code edit (18 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: Can't find variable: multiplier' in or related to this line: 'var scoreIndicator = game.addChild(new ScoreIndicatorLabel(baseValue * multiplier, bubble.type));' Line Number: 684
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 (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'var streakUX = game.addChild(new StreakUX());' Line Number: 718
User prompt
rename StreakUX to BonusUX
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'var streakUX = self.addChild(new StreakUX());' Line Number: 716
Code edit (15 edits merged)
Please save this source code
User prompt
In streak ux insert a streak label at //Insert label here
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 (20 edits merged)
Please save this source code
User prompt
Implement self.calculateWarningScoreList = function () {}; which should return 13 warning values based on how many bubbles are getting close to the bottom of the screen. The goal being to show a warning to the user that some balls are getting close to the bottom.
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
===================================================================
--- original.js
+++ change.js
@@ -202,12 +202,14 @@
//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.detach();
+ if (bubble) {
+ var bubbleIndex = this.findBubbleIndex(bubble);
+ if (bubbleIndex) {
+ rows[bubbleIndex.row][bubbleIndex.col] = null;
+ bubble.detach();
+ }
}
}
};
self.getConnectedBubbles = function (bubble, ignoreType) {
@@ -419,133 +421,140 @@
}
var intersectedBubble = self.bubbleIntersectsGrid(nextX + self.x, nextY + self.y);
if (intersectedBubble) {
gameIsStarted = true;
- var intersectedBubblePos = self.findBubbleIndex(intersectedBubble);
- var colOffset = rows[intersectedBubblePos.row].length == 13 ? 0 : 1;
- var offsetPositions = [{
- x: intersectedBubble.targetX - bubbleSize / 2,
- y: intersectedBubble.targetY - 1.7320508076 * bubbleSize / 2,
- ro: intersectedBubblePos.row + 1,
- co: intersectedBubblePos.col - 1 + colOffset
- }, {
- x: intersectedBubble.targetX + bubbleSize / 2,
- y: intersectedBubble.targetY - 1.7320508076 * bubbleSize / 2,
- ro: intersectedBubblePos.row + 1,
- co: intersectedBubblePos.col + colOffset
- }, {
- x: intersectedBubble.targetX + bubbleSize,
- y: intersectedBubble.targetY,
- ro: intersectedBubblePos.row,
- co: intersectedBubblePos.col + 1
- }, {
- x: intersectedBubble.targetX + bubbleSize / 2,
- y: intersectedBubble.targetY + 1.7320508076 * bubbleSize / 2,
- ro: intersectedBubblePos.row - 1,
- co: intersectedBubblePos.col + colOffset
- }, {
- x: intersectedBubble.targetX - bubbleSize / 2,
- y: intersectedBubble.targetY + 1.7320508076 * bubbleSize / 2,
- ro: intersectedBubblePos.row - 1,
- co: intersectedBubblePos.col - 1 + colOffset
- }, {
- x: intersectedBubble.targetX - bubbleSize,
- y: intersectedBubble.targetY,
- ro: intersectedBubblePos.row,
- co: intersectedBubblePos.col - 1
- }];
- var closestPosition = 0;
- var closestDistance = Math.sqrt(Math.pow(offsetPositions[0].x - bubble.x, 2) + Math.pow(offsetPositions[0].y - bubble.y, 2));
- for (var i = 1; i < offsetPositions.length; i++) {
- var currentPosition = offsetPositions[i];
- var currentDistance = Math.sqrt(Math.pow(currentPosition.x - bubble.x, 2) + Math.pow(currentPosition.y - bubble.y, 2));
- if (currentDistance < closestDistance) {
- var row = rows[currentPosition.ro];
- if (currentPosition.co < 0) {
- continue;
- }
- if (row) {
- if (row[currentPosition.co]) {
+ if (isLaserBall) {
+ var neighbors = [intersectedBubble]; //self.getNeighbors(intersectedBubble);
+ self.removeBubbles(neighbors);
+ var disconnected = self.getDetachedBubbles();
+ self.removeBubbles(disconnected);
+ } else {
+ var intersectedBubblePos = self.findBubbleIndex(intersectedBubble);
+ var colOffset = rows[intersectedBubblePos.row].length == 13 ? 0 : 1;
+ var offsetPositions = [{
+ x: intersectedBubble.targetX - bubbleSize / 2,
+ y: intersectedBubble.targetY - 1.7320508076 * bubbleSize / 2,
+ ro: intersectedBubblePos.row + 1,
+ co: intersectedBubblePos.col - 1 + colOffset
+ }, {
+ x: intersectedBubble.targetX + bubbleSize / 2,
+ y: intersectedBubble.targetY - 1.7320508076 * bubbleSize / 2,
+ ro: intersectedBubblePos.row + 1,
+ co: intersectedBubblePos.col + colOffset
+ }, {
+ x: intersectedBubble.targetX + bubbleSize,
+ y: intersectedBubble.targetY,
+ ro: intersectedBubblePos.row,
+ co: intersectedBubblePos.col + 1
+ }, {
+ x: intersectedBubble.targetX + bubbleSize / 2,
+ y: intersectedBubble.targetY + 1.7320508076 * bubbleSize / 2,
+ ro: intersectedBubblePos.row - 1,
+ co: intersectedBubblePos.col + colOffset
+ }, {
+ x: intersectedBubble.targetX - bubbleSize / 2,
+ y: intersectedBubble.targetY + 1.7320508076 * bubbleSize / 2,
+ ro: intersectedBubblePos.row - 1,
+ co: intersectedBubblePos.col - 1 + colOffset
+ }, {
+ x: intersectedBubble.targetX - bubbleSize,
+ y: intersectedBubble.targetY,
+ ro: intersectedBubblePos.row,
+ co: intersectedBubblePos.col - 1
+ }];
+ var closestPosition = 0;
+ var closestDistance = Math.sqrt(Math.pow(offsetPositions[0].x - bubble.x, 2) + Math.pow(offsetPositions[0].y - bubble.y, 2));
+ for (var i = 1; i < offsetPositions.length; i++) {
+ var currentPosition = offsetPositions[i];
+ var currentDistance = Math.sqrt(Math.pow(currentPosition.x - bubble.x, 2) + Math.pow(currentPosition.y - bubble.y, 2));
+ if (currentDistance < closestDistance) {
+ var row = rows[currentPosition.ro];
+ if (currentPosition.co < 0) {
continue;
}
- if (currentPosition.co >= row.length) {
- continue;
+ if (row) {
+ if (row[currentPosition.co]) {
+ continue;
+ }
+ if (currentPosition.co >= row.length) {
+ continue;
+ }
+ } else {
+ var newRowLength = rows[intersectedBubblePos.row].length == 13 ? 12 : 13;
+ if (currentPosition.co >= newRowLength) {
+ continue;
+ }
}
+ closestDistance = currentDistance;
+ closestPosition = i;
+ }
+ }
+ // Attach bubble to the closest position
+ var currentMatch = offsetPositions[closestPosition];
+ bubble.x = prevX;
+ bubble.y = prevY;
+ bubble.targetX = currentMatch.x;
+ bubble.targetY = currentMatch.y;
+ bubble.isFlying = false;
+ var row = rows[offsetPositions[closestPosition].ro];
+ if (!row) {
+ if (rows[intersectedBubblePos.row].length == 13) {
+ row = [null, null, null, null, null, null, null, null, null, null, null, null];
} else {
- var newRowLength = rows[intersectedBubblePos.row].length == 13 ? 12 : 13;
- if (currentPosition.co >= newRowLength) {
- continue;
- }
+ row = [null, null, null, null, null, null, null, null, null, null, null, null, null];
}
- closestDistance = currentDistance;
- closestPosition = i;
+ rows.unshift(row);
}
- }
- // Attach bubble to the closest position
- var currentMatch = offsetPositions[closestPosition];
- bubble.x = prevX;
- bubble.y = prevY;
- bubble.targetX = currentMatch.x;
- bubble.targetY = currentMatch.y;
- bubble.isFlying = false;
- var row = rows[offsetPositions[closestPosition].ro];
- if (!row) {
- if (rows[intersectedBubblePos.row].length == 13) {
- row = [null, null, null, null, null, null, null, null, null, null, null, null];
+ row[offsetPositions[closestPosition].co] = bubble;
+ bubblesInFlight.splice(a--, 1);
+ refreshHintLine();
+ var bubbles = self.getConnectedBubbles(bubble);
+ if (bubbles.length > 2) {
+ self.removeBubbles(bubbles);
+ var disconnected = self.getDetachedBubbles();
+ self.removeBubbles(disconnected);
+ bonusUX.setStreakCount(bonusUX.streakCount + 1);
} else {
- row = [null, null, null, null, null, null, null, null, null, null, null, null, null];
+ bonusUX.setStreakCount(0);
}
- rows.unshift(row);
- }
- row[offsetPositions[closestPosition].co] = bubble;
- bubblesInFlight.splice(a--, 1);
- refreshHintLine();
- var bubbles = self.getConnectedBubbles(bubble);
- if (bubbles.length > 2) {
- self.removeBubbles(bubbles);
- var disconnected = self.getDetachedBubbles();
- self.removeBubbles(disconnected);
- bonusUX.setStreakCount(bonusUX.streakCount + 1);
- } else {
- bonusUX.setStreakCount(0);
- }
- for (var row = rows.length - 1; row >= 0; row--) {
- if (rows[row].every(function (bubble) {
- return bubble === null;
- })) {
- rows.splice(row, 1);
+ for (var row = rows.length - 1; row >= 0; row--) {
+ if (rows[row].every(function (bubble) {
+ return bubble === null;
+ })) {
+ rows.splice(row, 1);
+ }
}
- }
- //Add a grid movement effect when you don't do a match
- var neighbors = self.getNeighbors(bubble);
- var touched = [];
- var neighbors2 = [];
- for (var i = 0; i < neighbors.length; i++) {
- var neighbor = neighbors[i];
- if (neighbor) {
- touched.push(neighbor);
- neighbors2 = neighbors2.concat(self.getNeighbors(neighbor));
- var ox = neighbor.x - bubble.x;
- var oy = neighbor.y - bubble.y;
- var angle = Math.atan2(oy, ox);
- neighbor.x += Math.cos(angle) * 20;
- neighbor.y += Math.sin(angle) * 20;
+ //Add a grid movement effect when you don't do a match
+ var neighbors = self.getNeighbors(bubble);
+ var touched = [];
+ var neighbors2 = [];
+ for (var i = 0; i < neighbors.length; i++) {
+ var neighbor = neighbors[i];
+ if (neighbor) {
+ touched.push(neighbor);
+ neighbors2 = neighbors2.concat(self.getNeighbors(neighbor));
+ var ox = neighbor.x - bubble.x;
+ var oy = neighbor.y - bubble.y;
+ var angle = Math.atan2(oy, ox);
+ neighbor.x += Math.cos(angle) * 20;
+ neighbor.y += Math.sin(angle) * 20;
+ }
}
- }
- //One more layer
- for (var i = 0; i < neighbors2.length; i++) {
- var neighbor = neighbors2[i];
- if (neighbor && touched.indexOf(neighbor) == -1) {
- touched.push(neighbor);
- var ox = neighbor.x - bubble.x;
- var oy = neighbor.y - bubble.y;
- var angle = Math.atan2(oy, ox);
- neighbor.x += Math.cos(angle) * 10;
- neighbor.y += Math.sin(angle) * 10;
+ //One more layer
+ for (var i = 0; i < neighbors2.length; i++) {
+ var neighbor = neighbors2[i];
+ if (neighbor && touched.indexOf(neighbor) == -1) {
+ touched.push(neighbor);
+ var ox = neighbor.x - bubble.x;
+ var oy = neighbor.y - bubble.y;
+ var angle = Math.atan2(oy, ox);
+ neighbor.x += Math.cos(angle) * 10;
+ neighbor.y += Math.sin(angle) * 10;
+ }
}
+ //self.printRowsToConsole();
+ continue outer;
}
- //self.printRowsToConsole();
- continue outer;
}
}
bubble.x = nextX;
bubble.y = nextY;
@@ -760,8 +769,9 @@
var bubbleColors = [0xff2853, 0x44d31f, 0x5252ff, 0xcb2bff, 0x28f2f0, 0xffc411];
var barriers = [];
var maxSelectableBubble = 3;
var warningLines = [];
+var isLaserBall = true;
for (var a = 0; a < 13; a++) {
var wl = game.addChild(new WarningLine());
wl.x = 2048 / 13 * (a + .5);
wl.y = 2200;
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.