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 ****/ // Oyun alanı merkezini hesapla var centerX = 2048 / 2; var centerY = 2732 / 2; // --- SADECE ORTADA 4 RENKLİ KARE GÖSTER --- 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 Container(); var asset = sq.attachAsset(startColors[i], { anchorX: 0.5, anchorY: 0.5 }); sq.x = startTargets[i].x; sq.y = startTargets[i].y; game.addChild(sq); }
===================================================================
--- original.js
+++ change.js
@@ -54,50 +54,12 @@
/****
* 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 = [];
+// --- SADECE ORTADA 4 RENKLİ KARE GÖSTER ---
var startTargets = [{
x: centerX - 200,
y: centerY - 300
}, {
@@ -110,202 +72,14 @@
x: centerX + 200,
y: centerY + 100
}];
var startColors = ['splitSquare', 'splitSquare2', 'splitSquare3', 'splitSquare4'];
-var introSquares = [];
for (var i = 0; i < 4; i++) {
- var sq = new DraggableSquare();
+ var sq = new Container();
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);
- introSquares.push(sq);
-}
-// Ekrana ilk tıklamada bu kareler yok olacak ve oyun başlayacak
-var introActive = true;
-game.down = function (x, y, obj) {
- if (introActive) {
- // Kareleri yok et
- for (var i = 0; i < introSquares.length; i++) {
- introSquares[i].destroy();
- }
- introActive = false;
- // Oyunu başlat
- startGame();
- return;
- }
- // 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;
- }
- }
-};
-// İ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();
\ No newline at end of file
+}
\ No newline at end of file