User prompt
ballMove sesini topu koyduktan sonra çal
User prompt
Arka plan rengi açık gri olsun
User prompt
Arka plan rengi açık renk olsun
User prompt
Bir tüp tamamen ayni renk top ile doluysa yanında konfeti patlasın ve sonra gitsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Tüp tamamen ayni renk ile dolduktan sonra confeti patlasın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Alttaki tüpler üstteki tüplerden biraz daha aşağıda bulunsun
User prompt
Üstteki tüpler alttaki tuplerden biraz daha aşağıda bulunsun
User prompt
Her bir dolan tüpten sonra o tübun yanında confeti patlasın ve sonra konfeti gitsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Tüpler biraz aşağıda olsun
User prompt
Ekrana tüm tüpler sığsın
User prompt
Ekranın ortasında olsun
User prompt
Ekrana sığacak kadar yakın olsun
User prompt
Tübler ćok daha büyük olsun
User prompt
Ekranın sağından solundan biraz boşluk olcak kadar ekrana yakın olsun tüpler
User prompt
Ekrana daha yakın olsun
User prompt
Aynı rengi toplar üst üste gelebilecek farklı renk topların üst üste gelemeyecek
User prompt
Topların rengi mavi sarı yeşil beyaz pembe mor turuncu kırmızı olacak
Code edit (1 edits merged)
Please save this source code
User prompt
Color Sort Tubes
Initial prompt
10 tane tüp olacak 5 7stte 5 altta her birinde karışık renklerde mavi sarı kırmızı turuncu yeşil mor pembe beyaz toplar olacak ve bu topları rengine göre ayırıcaz ayrıca aynı renk olmayan toplar üst üste gelemeyecek
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Ball = Container.expand(function (color) { var self = Container.call(this); self.ballColor = color; var ballGraphics = self.attachAsset('ball', { anchorX: 0.5, anchorY: 0.5, tint: color }); return self; }); var Tube = Container.expand(function (tubeIndex) { var self = Container.call(this); self.tubeIndex = tubeIndex; self.balls = []; self.maxBalls = 5; self.isSelected = false; // Tube outline (darker background) var outline = self.attachAsset('tubeOutline', { anchorX: 0.5, anchorY: 1.0 }); // Tube body var tubeBody = self.attachAsset('tube', { anchorX: 0.5, anchorY: 1.0 }); self.tubeBody = tubeBody; self.addBall = function (ball) { if (self.balls.length < self.maxBalls) { self.balls.push(ball); self.addChild(ball); self.updateBallPositions(); return true; } return false; }; self.removeBall = function () { if (self.balls.length > 0) { var ball = self.balls.pop(); self.removeChild(ball); return ball; } return null; }; self.getTopBall = function () { if (self.balls.length > 0) { return self.balls[self.balls.length - 1]; } return null; }; self.canAcceptBall = function (ballColor) { if (self.balls.length === 0) return true; if (self.balls.length >= self.maxBalls) return false; var topBall = self.getTopBall(); return topBall && topBall.ballColor === ballColor; }; self.updateBallPositions = function () { for (var i = 0; i < self.balls.length; i++) { var ball = self.balls[i]; ball.x = 0; ball.y = -70 - i * 65; } }; self.setSelected = function (selected) { self.isSelected = selected; if (selected) { self.tubeBody.tint = 0xffff00; } else { self.tubeBody.tint = 0xffffff; } }; self.isSorted = function () { if (self.balls.length === 0) return true; var firstColor = self.balls[0].ballColor; for (var i = 1; i < self.balls.length; i++) { if (self.balls[i].ballColor !== firstColor) { return false; } } return true; }; self.down = function (x, y, obj) { handleTubeClick(self); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2c3e50 }); /**** * Game Code ****/ var tubes = []; var selectedTube = null; var gameWon = false; // Ball colors var ballColors = [0x0066ff, // blue (mavi) 0xffff00, // yellow (sarı) 0x00ff00, // green (yeşil) 0xffffff, // white (beyaz) 0xff69b4, // pink (pembe) 0x800080, // purple (mor) 0xff8c00, // orange (turuncu) 0xff0000 // red (kırmızı) ]; // Create tubes function createTubes() { var tubeSpacing = 180; var startX = 200; // Top row - 5 tubes for (var i = 0; i < 5; i++) { var tube = new Tube(i); tube.x = startX + i * tubeSpacing; tube.y = 700; tubes.push(tube); game.addChild(tube); } // Bottom row - 5 tubes for (var i = 0; i < 5; i++) { var tube = new Tube(i + 5); tube.x = startX + i * tubeSpacing; tube.y = 1200; tubes.push(tube); game.addChild(tube); } } // Initialize balls in tubes function initializeBalls() { // Create a mix of colored balls for each tube var ballsPerTube = 4; var totalBalls = ballColors.length * ballsPerTube; var allBalls = []; // Create balls for each color for (var c = 0; c < ballColors.length; c++) { for (var b = 0; b < ballsPerTube; b++) { allBalls.push(ballColors[c]); } } // Shuffle the balls for (var i = allBalls.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = allBalls[i]; allBalls[i] = allBalls[j]; allBalls[j] = temp; } // Distribute balls to tubes (8 tubes get balls, 2 remain empty) var ballIndex = 0; for (var t = 0; t < 8; t++) { for (var b = 0; b < ballsPerTube; b++) { var ball = new Ball(allBalls[ballIndex]); tubes[t].addBall(ball); ballIndex++; } } } function handleTubeClick(clickedTube) { if (gameWon) return; if (selectedTube === null) { // Select tube if it has balls if (clickedTube.balls.length > 0) { selectedTube = clickedTube; clickedTube.setSelected(true); LK.getSound('ballMove').play(); } } else { if (selectedTube === clickedTube) { // Deselect current tube selectedTube.setSelected(false); selectedTube = null; } else { // Try to move ball from selected tube to clicked tube var topBall = selectedTube.getTopBall(); if (topBall && clickedTube.canAcceptBall(topBall.ballColor)) { var ball = selectedTube.removeBall(); clickedTube.addBall(ball); LK.getSound('ballPlace').play(); // Check for win condition checkWinCondition(); } // Deselect tube selectedTube.setSelected(false); selectedTube = null; } } } function checkWinCondition() { var sortedTubes = 0; var emptyTubes = 0; for (var i = 0; i < tubes.length; i++) { var tube = tubes[i]; if (tube.balls.length === 0) { emptyTubes++; } else if (tube.isSorted()) { sortedTubes++; } } // Win if we have exactly 8 sorted tubes (one for each color) and 2 empty tubes if (sortedTubes === 8 && emptyTubes === 2) { gameWon = true; LK.getSound('winSound').play(); // Flash screen green LK.effects.flashScreen(0x2ecc71, 2000); // Show win after a delay LK.setTimeout(function () { LK.showYouWin(); }, 1000); } } // Create UI var titleText = new Text2('Color Sort Tubes', { size: 120, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0); LK.gui.top.addChild(titleText); var instructionText = new Text2('Tap a tube to select, then tap another to move the top ball', { size: 60, fill: 0xBDC3C7 }); instructionText.anchor.set(0.5, 1); instructionText.y = -50; LK.gui.bottom.addChild(instructionText); // Initialize game createTubes(); initializeBalls(); game.update = function () { // Game logic is handled by events };
===================================================================
--- original.js
+++ change.js
@@ -124,23 +124,23 @@
0xff0000 // red (kırmızı)
];
// Create tubes
function createTubes() {
- var tubeSpacing = 200;
- var startX = 400;
+ var tubeSpacing = 180;
+ var startX = 200;
// Top row - 5 tubes
for (var i = 0; i < 5; i++) {
var tube = new Tube(i);
tube.x = startX + i * tubeSpacing;
- tube.y = 800;
+ tube.y = 700;
tubes.push(tube);
game.addChild(tube);
}
// Bottom row - 5 tubes
for (var i = 0; i < 5; i++) {
var tube = new Tube(i + 5);
tube.x = startX + i * tubeSpacing;
- tube.y = 1400;
+ tube.y = 1200;
tubes.push(tube);
game.addChild(tube);
}
}