User prompt
yan yana yada alt alta en az 2 balon oyunun verdiği renle aynı ise tıklayınca patlayacak
User prompt
balonlar tıklanınca patlayıp kaybolmuyor
User prompt
hata var
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'fill')' in or related to this line: 'colorTxt.style.fill = '#' + color.toString(16).padStart(6, '0');' Line Number: 151
Code edit (1 edits merged)
Please save this source code
User prompt
Renkli Balon Patlatmaca
Initial prompt
ekranda random balonlar olsun boşluksuz yanyana ve farklı renklerde olsun 2 renkli balon alt alta yada yanyana isepatlayabilir 2. şart balonların patlaması için oyun 3saniyede bir renk verecek oyunun verdiği renklerdeki balonlar tıklatılarak patlatılabilir
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Balloon class var Balloon = Container.expand(function () { var self = Container.call(this); // Attach balloon asset (ellipse shape) var balloonGraphics = self.attachAsset('balloon_' + self.color, { anchorX: 0.5, anchorY: 0.5 }); // Store color for logic self.color = self.color || 0xff0000; // Default red, will be overwritten on creation // Store grid position self.gridX = 0; self.gridY = 0; // Is this balloon popped? self.popped = false; // Pop animation and logic self.pop = function () { if (self.popped) return; self.popped = true; // Animate scale down and fade out tween(self, { scaleX: 0, scaleY: 0, alpha: 0 }, { duration: 250, easing: tween.easeIn, onFinish: function onFinish() { self.destroy(); } }); }; // Down event (touch/click) self.down = function (x, y, obj) { if (self.popped) return; // Only allow popping if this is the current color if (self.color !== currentColor) return; // Find all connected balloons of the same color var group = findConnectedBalloons(self.gridX, self.gridY, self.color); if (group.length < 2) return; // Only pop if at least 2 connected for (var i = 0; i < group.length; i++) { group[i].pop(); } // Update score LK.setScore(LK.getScore() + group.length); scoreTxt.setText(LK.getScore()); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xffffff }); /**** * Game Code ****/ // Balloon grid settings var GRID_COLS = 10; var GRID_ROWS = 12; var BALLOON_COLORS = [0xff4d4d, // red 0x4db8ff, // blue 0x4dff4d, // green 0xffe14d, // yellow 0xff4df7 // pink ]; var BALLOON_COLOR_NAMES = ['red', 'blue', 'green', 'yellow', 'pink']; // Balloon size and spacing var balloonSize = Math.floor(2048 / GRID_COLS); var balloonSpacing = 0; // No gap // Store balloons in a 2D array var balloons = []; // Store all balloon objects for easy iteration var allBalloons = []; // Current color to pop var currentColor = null; var currentColorIdx = 0; // Score text var scoreTxt = new Text2('0', { size: 120, fill: 0x222222 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Color indicator text var colorTxt = new Text2('', { size: 90, fill: 0x222222 }); colorTxt.anchor.set(0.5, 0); LK.gui.top.addChild(colorTxt); colorTxt.y = 140; // Helper: create balloon asset for each color for (var i = 0; i < BALLOON_COLORS.length; i++) {} // Helper: get color name from color value function getColorName(color) { for (var i = 0; i < BALLOON_COLORS.length; i++) { if (BALLOON_COLORS[i] === color) return BALLOON_COLOR_NAMES[i]; } return 'unknown'; } // Helper: get color display text function getColorDisplayText(color) { var idx = BALLOON_COLORS.indexOf(color); if (idx === -1) return ''; var name = BALLOON_COLOR_NAMES[idx]; var display = ''; if (name === 'red') display = 'KIRMIZI';else if (name === 'blue') display = 'MAVİ';else if (name === 'green') display = 'YEŞİL';else if (name === 'yellow') display = 'SARI';else if (name === 'pink') display = 'PEMBE'; return display; } // Helper: set color indicator function setColorIndicator(color) { colorTxt.setText('Patlat: ' + getColorDisplayText(color)); colorTxt.style.fill = '#' + color.toString(16).padStart(6, '0'); } // Helper: find all connected balloons of the same color (DFS) function findConnectedBalloons(x, y, color) { var visited = {}; var group = []; function dfs(cx, cy) { var key = cx + ',' + cy; if (visited[key]) return; if (cx < 0 || cy < 0 || cx >= GRID_COLS || cy >= GRID_ROWS) return; var b = balloons[cx][cy]; if (!b || b.popped || b.color !== color) return; visited[key] = true; group.push(b); // Check neighbors (up, down, left, right) dfs(cx - 1, cy); dfs(cx + 1, cy); dfs(cx, cy - 1); dfs(cx, cy + 1); } dfs(x, y); return group; } // Helper: pick a new color (random, but must exist on board) function pickNewColor() { // Find all colors still present var present = {}; for (var i = 0; i < allBalloons.length; i++) { var b = allBalloons[i]; if (!b.popped) present[b.color] = true; } var presentColors = []; for (var i = 0; i < BALLOON_COLORS.length; i++) { if (present[BALLOON_COLORS[i]]) presentColors.push(BALLOON_COLORS[i]); } if (presentColors.length === 0) { // Win condition: all balloons popped LK.showYouWin(); return; } // Pick random color var idx = Math.floor(Math.random() * presentColors.length); currentColor = presentColors[idx]; setColorIndicator(currentColor); } // Build the balloon grid function buildGrid() { // Center grid var offsetX = Math.floor((2048 - GRID_COLS * balloonSize) / 2) + balloonSize / 2; var offsetY = Math.floor((2732 - GRID_ROWS * balloonSize) / 2) + balloonSize / 2; balloons = []; allBalloons = []; for (var x = 0; x < GRID_COLS; x++) { balloons[x] = []; for (var y = 0; y < GRID_ROWS; y++) { // Pick random color var colorIdx = Math.floor(Math.random() * BALLOON_COLORS.length); var color = BALLOON_COLORS[colorIdx]; var name = BALLOON_COLOR_NAMES[colorIdx]; var balloon = new Balloon(); balloon.color = color; balloon.gridX = x; balloon.gridY = y; // Set asset to correct color balloon.removeChildren(); balloon.attachAsset('balloon_' + name, { anchorX: 0.5, anchorY: 0.5 }); balloon.x = offsetX + x * (balloonSize + balloonSpacing); balloon.y = offsetY + y * (balloonSize + balloonSpacing); balloons[x][y] = balloon; allBalloons.push(balloon); game.addChild(balloon); } } } // Reset game state function resetGame() { LK.setScore(0); scoreTxt.setText('0'); // Remove all balloons for (var i = 0; i < allBalloons.length; i++) { allBalloons[i].destroy(); } buildGrid(); pickNewColor(); } // Timer for color change var colorTimer = null; function startColorTimer() { if (colorTimer) LK.clearInterval(colorTimer); colorTimer = LK.setInterval(function () { pickNewColor(); }, 3000); } // Start game resetGame(); startColorTimer(); // Game update (not much needed) game.update = function () { // Check win condition var remaining = 0; for (var i = 0; i < allBalloons.length; i++) { if (!allBalloons[i].popped) remaining++; } if (remaining === 0) { LK.showYouWin(); } }; // On game over or win, reset game game.onGameOver = function () { resetGame(); startColorTimer(); }; game.onYouWin = function () { resetGame(); startColorTimer(); };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,247 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Balloon class
+var Balloon = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach balloon asset (ellipse shape)
+ var balloonGraphics = self.attachAsset('balloon_' + self.color, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Store color for logic
+ self.color = self.color || 0xff0000; // Default red, will be overwritten on creation
+ // Store grid position
+ self.gridX = 0;
+ self.gridY = 0;
+ // Is this balloon popped?
+ self.popped = false;
+ // Pop animation and logic
+ self.pop = function () {
+ if (self.popped) return;
+ self.popped = true;
+ // Animate scale down and fade out
+ tween(self, {
+ scaleX: 0,
+ scaleY: 0,
+ alpha: 0
+ }, {
+ duration: 250,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ self.destroy();
+ }
+ });
+ };
+ // Down event (touch/click)
+ self.down = function (x, y, obj) {
+ if (self.popped) return;
+ // Only allow popping if this is the current color
+ if (self.color !== currentColor) return;
+ // Find all connected balloons of the same color
+ var group = findConnectedBalloons(self.gridX, self.gridY, self.color);
+ if (group.length < 2) return; // Only pop if at least 2 connected
+ for (var i = 0; i < group.length; i++) {
+ group[i].pop();
+ }
+ // Update score
+ LK.setScore(LK.getScore() + group.length);
+ scoreTxt.setText(LK.getScore());
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xffffff
+});
+
+/****
+* Game Code
+****/
+// Balloon grid settings
+var GRID_COLS = 10;
+var GRID_ROWS = 12;
+var BALLOON_COLORS = [0xff4d4d,
+// red
+0x4db8ff,
+// blue
+0x4dff4d,
+// green
+0xffe14d,
+// yellow
+0xff4df7 // pink
+];
+var BALLOON_COLOR_NAMES = ['red', 'blue', 'green', 'yellow', 'pink'];
+// Balloon size and spacing
+var balloonSize = Math.floor(2048 / GRID_COLS);
+var balloonSpacing = 0; // No gap
+// Store balloons in a 2D array
+var balloons = [];
+// Store all balloon objects for easy iteration
+var allBalloons = [];
+// Current color to pop
+var currentColor = null;
+var currentColorIdx = 0;
+// Score text
+var scoreTxt = new Text2('0', {
+ size: 120,
+ fill: 0x222222
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Color indicator text
+var colorTxt = new Text2('', {
+ size: 90,
+ fill: 0x222222
+});
+colorTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(colorTxt);
+colorTxt.y = 140;
+// Helper: create balloon asset for each color
+for (var i = 0; i < BALLOON_COLORS.length; i++) {}
+// Helper: get color name from color value
+function getColorName(color) {
+ for (var i = 0; i < BALLOON_COLORS.length; i++) {
+ if (BALLOON_COLORS[i] === color) return BALLOON_COLOR_NAMES[i];
+ }
+ return 'unknown';
+}
+// Helper: get color display text
+function getColorDisplayText(color) {
+ var idx = BALLOON_COLORS.indexOf(color);
+ if (idx === -1) return '';
+ var name = BALLOON_COLOR_NAMES[idx];
+ var display = '';
+ if (name === 'red') display = 'KIRMIZI';else if (name === 'blue') display = 'MAVİ';else if (name === 'green') display = 'YEŞİL';else if (name === 'yellow') display = 'SARI';else if (name === 'pink') display = 'PEMBE';
+ return display;
+}
+// Helper: set color indicator
+function setColorIndicator(color) {
+ colorTxt.setText('Patlat: ' + getColorDisplayText(color));
+ colorTxt.style.fill = '#' + color.toString(16).padStart(6, '0');
+}
+// Helper: find all connected balloons of the same color (DFS)
+function findConnectedBalloons(x, y, color) {
+ var visited = {};
+ var group = [];
+ function dfs(cx, cy) {
+ var key = cx + ',' + cy;
+ if (visited[key]) return;
+ if (cx < 0 || cy < 0 || cx >= GRID_COLS || cy >= GRID_ROWS) return;
+ var b = balloons[cx][cy];
+ if (!b || b.popped || b.color !== color) return;
+ visited[key] = true;
+ group.push(b);
+ // Check neighbors (up, down, left, right)
+ dfs(cx - 1, cy);
+ dfs(cx + 1, cy);
+ dfs(cx, cy - 1);
+ dfs(cx, cy + 1);
+ }
+ dfs(x, y);
+ return group;
+}
+// Helper: pick a new color (random, but must exist on board)
+function pickNewColor() {
+ // Find all colors still present
+ var present = {};
+ for (var i = 0; i < allBalloons.length; i++) {
+ var b = allBalloons[i];
+ if (!b.popped) present[b.color] = true;
+ }
+ var presentColors = [];
+ for (var i = 0; i < BALLOON_COLORS.length; i++) {
+ if (present[BALLOON_COLORS[i]]) presentColors.push(BALLOON_COLORS[i]);
+ }
+ if (presentColors.length === 0) {
+ // Win condition: all balloons popped
+ LK.showYouWin();
+ return;
+ }
+ // Pick random color
+ var idx = Math.floor(Math.random() * presentColors.length);
+ currentColor = presentColors[idx];
+ setColorIndicator(currentColor);
+}
+// Build the balloon grid
+function buildGrid() {
+ // Center grid
+ var offsetX = Math.floor((2048 - GRID_COLS * balloonSize) / 2) + balloonSize / 2;
+ var offsetY = Math.floor((2732 - GRID_ROWS * balloonSize) / 2) + balloonSize / 2;
+ balloons = [];
+ allBalloons = [];
+ for (var x = 0; x < GRID_COLS; x++) {
+ balloons[x] = [];
+ for (var y = 0; y < GRID_ROWS; y++) {
+ // Pick random color
+ var colorIdx = Math.floor(Math.random() * BALLOON_COLORS.length);
+ var color = BALLOON_COLORS[colorIdx];
+ var name = BALLOON_COLOR_NAMES[colorIdx];
+ var balloon = new Balloon();
+ balloon.color = color;
+ balloon.gridX = x;
+ balloon.gridY = y;
+ // Set asset to correct color
+ balloon.removeChildren();
+ balloon.attachAsset('balloon_' + name, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ balloon.x = offsetX + x * (balloonSize + balloonSpacing);
+ balloon.y = offsetY + y * (balloonSize + balloonSpacing);
+ balloons[x][y] = balloon;
+ allBalloons.push(balloon);
+ game.addChild(balloon);
+ }
+ }
+}
+// Reset game state
+function resetGame() {
+ LK.setScore(0);
+ scoreTxt.setText('0');
+ // Remove all balloons
+ for (var i = 0; i < allBalloons.length; i++) {
+ allBalloons[i].destroy();
+ }
+ buildGrid();
+ pickNewColor();
+}
+// Timer for color change
+var colorTimer = null;
+function startColorTimer() {
+ if (colorTimer) LK.clearInterval(colorTimer);
+ colorTimer = LK.setInterval(function () {
+ pickNewColor();
+ }, 3000);
+}
+// Start game
+resetGame();
+startColorTimer();
+// Game update (not much needed)
+game.update = function () {
+ // Check win condition
+ var remaining = 0;
+ for (var i = 0; i < allBalloons.length; i++) {
+ if (!allBalloons[i].popped) remaining++;
+ }
+ if (remaining === 0) {
+ LK.showYouWin();
+ }
+};
+// On game over or win, reset game
+game.onGameOver = function () {
+ resetGame();
+ startColorTimer();
+};
+game.onYouWin = function () {
+ resetGame();
+ startColorTimer();
+};
\ No newline at end of file