User prompt
Please fix the bug: 'Uncaught ReferenceError: checkAllPlaced is not defined' in or related to this line: 'checkAllPlaced();' Line Number: 56
User prompt
şimdi kutular hareket edilebilir olsun
User prompt
ortala
User prompt
yeşil ve kırmızı arasında hala var
User prompt
aralarındaki margini kaldır
User prompt
sarı turuncu yeşil ve kırmızı kutular olduğu yerde kalsın geri kalan herşeyi sil
User prompt
yok oluyolar sonra yıklayınca ben
User prompt
ekranın ortasında olmalı başta 4 kare
Code edit (1 edits merged)
Please save this source code
User prompt
Kareyi Böl: Böl ve Yönet
User prompt
sanki kareyi 2 ye bölmüşüm sonrada 4 e bölmüşüm gibi
User prompt
4 adet kare olucak 2 tane yan yana 2 tane onun altında ve ben tıkladığımda 2 tanesi biraz aşağıya gidicek bir taha tıkladığımda dikey olanlar sağa ve sola ayırılıcak
Initial prompt
bir tane kutu yap ekranın ortasına
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Kareyi sürükleyip bırakmak için kullanılacak temel sınıf var DraggableSquare = Container.expand(function () { var self = Container.call(this); self.isDragging = false; self.offsetX = 0; self.offsetY = 0; self.targetX = 0; self.targetY = 0; self.locked = false; // Doğru yere yerleştiyse true // Kareyi sürüklemeye başla self.down = function (x, y, obj) { if (self.locked) return; self.isDragging = true; self.offsetX = x - self.x; self.offsetY = y - self.y; dragNode = self; }; // Kareyi bırak self.up = function (x, y, obj) { if (self.locked) return; self.isDragging = false; dragNode = null; // Doğru yere yakınsa oraya oturt if (Math.abs(self.x - self.targetX) < 60 && Math.abs(self.y - self.targetY) < 60) { tween(self, { x: self.targetX, y: self.targetY }, { duration: 200, easing: tween.easeOut }); self.locked = true; LK.getSound('snap').play(); checkAllPlaced(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xfafafa }); /**** * Game Code ****/ // Bölünmüş kareler (küçük kareler) // Kare (büyük kare) // Oyun alanı merkezini hesapla var centerX = 2048 / 2; var centerY = 2732 / 2; // Skor ve hamle sayısı var score = 0; var moves = 0; var maxMoves = 12; // MVP için sabit // GUI: Skor ve hamle göstergesi var scoreTxt = new Text2('Bölme: 1/2', { size: 90, fill: "#222" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var movesTxt = new Text2('Hamle: 0/12', { size: 60, fill: "#555" }); movesTxt.anchor.set(0.5, 0); LK.gui.top.addChild(movesTxt); movesTxt.y = 110; // Oyun aşaması: 0 = başla, 1 = ikiye böl, 2 = dörde böl var stageStep = 0; // Sürükleme için global değişken var dragNode = null; // Ana kareyi oluştur var mainSquare = new Container(); var mainSquareAsset = mainSquare.attachAsset('mainSquare', { anchorX: 0.5, anchorY: 0.5 }); mainSquare.x = centerX; mainSquare.y = centerY - 100; game.addChild(mainSquare); // Bölünmüş kareler için dizi var splitSquares = []; var splitTargets = []; // --- BAŞLANGIÇTA ORTADA 4 KARE GÖSTER --- splitSquares = []; splitTargets = []; var startTargets = [{ x: centerX - 200, y: centerY - 300 }, { x: centerX + 200, y: centerY - 300 }, { x: centerX - 200, y: centerY + 100 }, { x: centerX + 200, y: centerY + 100 }]; var startColors = ['splitSquare', 'splitSquare2', 'splitSquare3', 'splitSquare4']; for (var i = 0; i < 4; i++) { var sq = new DraggableSquare(); var asset = sq.attachAsset(startColors[i], { anchorX: 0.5, anchorY: 0.5 }); sq.x = startTargets[i].x; sq.y = startTargets[i].y; sq.targetX = startTargets[i].x; sq.targetY = startTargets[i].y; sq.locked = true; // Başlangıçta sabit, sürüklenemez game.addChild(sq); splitSquares.push(sq); splitTargets.push(startTargets[i]); } // ----------------------------------------- // İlk bölme: Kareyi ikiye böl function splitToTwo() { // Hedef pozisyonlar (sol ve sağ) var leftTarget = { x: centerX - 200, y: centerY - 100 }; var rightTarget = { x: centerX + 200, y: centerY - 100 }; // Sol kare var leftSquare = new DraggableSquare(); var leftAsset = leftSquare.attachAsset('splitSquare', { anchorX: 0.5, anchorY: 0.5 }); leftSquare.x = centerX - 400; leftSquare.y = centerY + 500; leftSquare.targetX = leftTarget.x; leftSquare.targetY = leftTarget.y; game.addChild(leftSquare); // Sağ kare var rightSquare = new DraggableSquare(); var rightAsset = rightSquare.attachAsset('splitSquare2', { anchorX: 0.5, anchorY: 0.5 }); rightSquare.x = centerX + 400; rightSquare.y = centerY + 500; rightSquare.targetX = rightTarget.x; rightSquare.targetY = rightTarget.y; game.addChild(rightSquare); splitSquares = [leftSquare, rightSquare]; splitTargets = [leftTarget, rightTarget]; } // İkinci bölme: Her kareyi tekrar ikiye böl (toplam 4 kare) function splitToFour() { // Hedef pozisyonlar (sol üst, sağ üst, sol alt, sağ alt) var targets = [{ x: centerX - 200, y: centerY - 300 }, { x: centerX + 200, y: centerY - 300 }, { x: centerX - 200, y: centerY + 100 }, { x: centerX + 200, y: centerY + 100 }]; var colors = ['splitSquare', 'splitSquare2', 'splitSquare3', 'splitSquare4']; var newSquares = []; for (var i = 0; i < 4; i++) { var sq = new DraggableSquare(); var asset = sq.attachAsset(colors[i], { anchorX: 0.5, anchorY: 0.5 }); // Başlangıç pozisyonları: aşağıda karışık sq.x = centerX - 400 + i % 2 * 800; sq.y = centerY + 700 + Math.floor(i / 2) * 200; sq.targetX = targets[i].x; sq.targetY = targets[i].y; game.addChild(sq); newSquares.push(sq); } splitSquares = newSquares; splitTargets = targets; } // Tüm kareler doğru yere yerleşti mi? function checkAllPlaced() { var allPlaced = true; for (var i = 0; i < splitSquares.length; i++) { if (!splitSquares[i].locked) { allPlaced = false; break; } } if (allPlaced) { if (stageStep === 1) { // 2. aşamaya geç: dörde böl LK.getSound('success').play(); scoreTxt.setText('Bölme: 2/2'); // Eski kareleri sil for (var j = 0; j < splitSquares.length; j++) { splitSquares[j].destroy(); } splitSquares = []; // 2. bölme splitToFour(); stageStep = 2; } else if (stageStep === 2) { // Oyun bitti LK.getSound('success').play(); LK.effects.flashScreen(0x2ecc71, 800); LK.showYouWin(); } } } // Sürükleme işlemleri function handleMove(x, y, obj) { if (dragNode && !dragNode.locked) { dragNode.x = x - dragNode.offsetX; dragNode.y = y - dragNode.offsetY; } } // Oyun başlat function startGame() { score = 0; moves = 0; stageStep = 1; scoreTxt.setText('Bölme: 1/2'); movesTxt.setText('Hamle: 0/' + maxMoves); // Ana kareyi göster mainSquare.visible = true; // Önceki kareleri temizle for (var i = 0; i < splitSquares.length; i++) { splitSquares[i].destroy(); } splitSquares = []; splitToTwo(); } // Oyun hareketleri game.move = function (x, y, obj) { handleMove(x, y, obj); }; game.down = function (x, y, obj) { // Sürüklenen kareyi bul for (var i = 0; i < splitSquares.length; i++) { var sq = splitSquares[i]; // Kareye tıklandı mı? if (!sq.locked && x > sq.x - 195 && x < sq.x + 195 && y > sq.y - 195 && y < sq.y + 195) { sq.down(x, y, obj); break; } } }; game.up = function (x, y, obj) { if (dragNode) { dragNode.up(x, y, obj); moves++; movesTxt.setText('Hamle: ' + moves + '/' + maxMoves); if (moves > maxMoves) { LK.effects.flashScreen(0xe74c3c, 800); LK.showGameOver(); } } dragNode = null; }; // Oyun güncellemesi game.update = function () { // Ana kareyi gizle, ilk bölme sonrası if (stageStep >= 1) { mainSquare.visible = false; } }; // Oyunu başlat startGame();
===================================================================
--- original.js
+++ change.js
@@ -93,8 +93,41 @@
game.addChild(mainSquare);
// Bölünmüş kareler için dizi
var splitSquares = [];
var splitTargets = [];
+// --- BAŞLANGIÇTA ORTADA 4 KARE GÖSTER ---
+splitSquares = [];
+splitTargets = [];
+var startTargets = [{
+ x: centerX - 200,
+ y: centerY - 300
+}, {
+ x: centerX + 200,
+ y: centerY - 300
+}, {
+ x: centerX - 200,
+ y: centerY + 100
+}, {
+ x: centerX + 200,
+ y: centerY + 100
+}];
+var startColors = ['splitSquare', 'splitSquare2', 'splitSquare3', 'splitSquare4'];
+for (var i = 0; i < 4; i++) {
+ var sq = new DraggableSquare();
+ var asset = sq.attachAsset(startColors[i], {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ sq.x = startTargets[i].x;
+ sq.y = startTargets[i].y;
+ sq.targetX = startTargets[i].x;
+ sq.targetY = startTargets[i].y;
+ sq.locked = true; // Başlangıçta sabit, sürüklenemez
+ game.addChild(sq);
+ splitSquares.push(sq);
+ splitTargets.push(startTargets[i]);
+}
+// -----------------------------------------
// İlk bölme: Kareyi ikiye böl
function splitToTwo() {
// Hedef pozisyonlar (sol ve sağ)
var leftTarget = {