User prompt
Puan: yerine Altın:0 Olarak değiştir
User prompt
100 puan eklemeye devam et ben oynadıkça
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'match')' in or related to this line: 'var match = currentScoreText.match(/Puan:\s*(\d+)/);' Line Number: 383
User prompt
her tebrikler kazandınız yazdıktan sonra puan kısmının yanına 100 puan ekle
User prompt
2 saniye geçtikten sonra oyun tekrardan başlasın
User prompt
sonra rakamlar çizgi ve pastalar aktif olsun tekrardan
User prompt
tebrikler kazandınız 100 puan ekranda sadece 2 saniye gözüksün
User prompt
tebrikler kazandınız 100 puan ekranda sadece 2 saat gözüksün
User prompt
baştan başladığında ekrandan tebrikler kazandınız ve 100 puanı sil
User prompt
bu yazı yazdıktan sonra 2 saniye sonra tekrar oyunu baştan başlat
User prompt
tebrikler kazandınız yazınısın altına 100 Puan yaz
User prompt
şimdi seviye 1 den başlıyor oyun level 1 yani level birdeyken verdiğin başta random verdiğin rakamlar 1 ile 5 arasında olsun
User prompt
2 sini birden biraz üste kaydır
User prompt
seviye ve 1 rakamı alt alta olsun
User prompt
saviyeyi üste kaydır
User prompt
rakamla seviyeyi azıcık üste kaydır
User prompt
onun altınada bir rakam yaz
User prompt
en aşağıdaya 'Seviye' yaz
User prompt
şimdi sağa hizala
User prompt
baştan başla yazısıyla aynı hizada olsun
User prompt
biraz aşağıya ve sarı
User prompt
Yukarıya sağa ' Puan: ' yaz
User prompt
daha çok komfeti olsun ve ekranın her yerine dağılsın
User prompt
konfetilerin patlama efktini değiştir
User prompt
Çizgide olmasın tebrikler kazandınız yazınca
/**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Siyah arka plan }); /**** * Game Code ****/ // Arka planı ekle (en alta) var arkaPlan = LK.getAsset('arkaplan', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, width: 2048, height: 2732 }); game.addChild(arkaPlan); // Üstte geniş ve kısa bir kutu görseli göster (resim koymak için uygun) var headerWideBox = LK.getAsset('headerWideBox', { anchorX: 0.5, anchorY: 0, x: 2048 / 2, // Ortalanmış y: 200, // Biraz daha aşağıya kaydırıldı (daha fazla) width: 720, height: 360 }); game.addChild(headerWideBox); // Başlığın altına bir rakam yaz (örnek: 20 ve 1, alttaki üsttekinden büyük olacak) var topNumber = 1 + Math.floor(Math.random() * 20); // 1-20 arası sayı var bottomNumber = 1 + Math.floor(Math.random() * 20); // 1-20 arası sayı // Alttaki sayı üstteki sayıdan büyük olmalı, değilse swap et if (bottomNumber <= topNumber) { var temp = bottomNumber; bottomNumber = topNumber + 1; // 20'yi geçerse, tekrar 20'ye sabitle if (bottomNumber > 20) bottomNumber = 20; topNumber = temp; } var headerNumberLabel = new Text2(topNumber.toString(), { size: 120, fill: 0xFFD700 }); headerNumberLabel.anchor.set(0.5, 0); // headerWideBox'ın altına, ortalanmış şekilde yerleştir headerNumberLabel.x = headerWideBox.x; headerNumberLabel.y = headerWideBox.y + headerWideBox.height + 40; game.addChild(headerNumberLabel); // İkinci rakamı, ilk rakamın hemen altına ekle var headerNumberLabel2 = new Text2(bottomNumber.toString(), { size: 120, fill: 0xFFD700 }); headerNumberLabel2.anchor.set(0.5, 0); headerNumberLabel2.x = headerWideBox.x; headerNumberLabel2.y = headerNumberLabel.y + headerNumberLabel.height + 40; game.addChild(headerNumberLabel2); // Sadece 5 ve 8 rakamları arasına sarı bir çizgi ekle // Çizgi, ilk label'ın alt kenarı ile ikinci label'ın üst kenarı arasında tam ortada ve sadece bu arada olacak // Yatay çizgi için genişliği iki label'ın genişliğinden biraz fazla yap, yüksekliği ise ince tut var lineHeight = 8; // Çizgi kalınlığı (ince) var lineWidth = Math.max(headerNumberLabel.width, headerNumberLabel2.width) + 80; // Label'ların genişliğinden biraz fazla var lineY = headerNumberLabel2.y - 40; // 5 ve 8 arasının ortasına yakın bir yerde var line = LK.getAsset('yellowLine', { anchorX: 0.5, anchorY: 0.5, x: headerWideBox.x, y: (headerNumberLabel.y + headerNumberLabel.height + headerNumberLabel2.y) / 2, width: lineWidth, height: lineHeight }); // Önce ekle, sonra en öne getir game.addChild(line); if (line.parent && typeof line.parent.setChildIndex === "function") { line.parent.setChildIndex(line, line.parent.children.length - 1); } // Baştan Başla butonu ekle var restartButton = new Text2('⟲ Baştan Başla', { size: 80, fill: 0xffffff }); restartButton.anchor.set(0.5, 0); // Ekranın üst kısmında, headerWideBox'ın biraz üstünde ortala restartButton.x = 2048 / 2; restartButton.y = headerWideBox.y - 100; game.addChild(restartButton); // Sağ üstte 'Puan: ' yazısı ekle var scoreLabel = new Text2('Puan: ', { size: 80, fill: 0xffd700, align: 'right' }); scoreLabel.anchor.set(1, 0); // sağ üst köşe scoreLabel.x = restartButton.x + restartButton.width / 2 + scoreLabel.width / 2 + 60; // Baştan Başla ile aynı hizada, sağında biraz boşluk scoreLabel.y = restartButton.y; // Baştan Başla ile aynı yatayda game.addChild(scoreLabel); // Butona tıklanınca oyunu baştan başlat restartButton.down = function (x, y, obj) { // Tüm oyun state'ini sıfırla ve yeniden başlat // 1. Eski kareleri ve konfeti varsa temizle if (centerSquare && !centerSquare._destroyed) { centerSquare.destroy(); } if (splitSquares && splitSquares.length > 0) { for (var i = 0; i < splitSquares.length; i++) { if (splitSquares[i] && !splitSquares[i]._destroyed) { splitSquares[i].destroy(); } } splitSquares = []; } if (game._confettiList && game._confettiList.length > 0) { for (var i = 0; i < game._confettiList.length; i++) { if (game._confettiList[i] && !game._confettiList[i]._destroyed) { game._confettiList[i].destroy(); } } game._confettiList = []; } // 2. Kazanma mesajı varsa kaldır if (game.children) { for (var i = game.children.length - 1; i >= 0; i--) { var child = game.children[i]; if (child && child.text && typeof child.text === "string" && child.text.indexOf("Tebrikler") === 0) { child.destroy(); } } } // 3. Yeni sayılar üret topNumber = 1 + Math.floor(Math.random() * 20); bottomNumber = 1 + Math.floor(Math.random() * 20); if (bottomNumber <= topNumber) { var temp = bottomNumber; bottomNumber = topNumber + 1; if (bottomNumber > 20) bottomNumber = 20; topNumber = temp; } headerNumberLabel.setText(topNumber.toString()); headerNumberLabel2.setText(bottomNumber.toString()); // 4. Split adımını ve kareleri sıfırla splitStep = 1; // 5. Ortadaki kareyi tekrar oluştur var upperBound = headerWideBox.y + headerWideBox.height + 40; var lowerBound = 2732 - 140 - 60; var availableHeight = lowerBound - upperBound; var centerSquareY = upperBound + availableHeight / 2; centerSquare = LK.getAsset('centerSquare', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: centerSquareY }); game.addChild(centerSquare); centerSquare.tapCount = 0; centerSquare.down = function (x, y, obj) { if (typeof centerSquare.tapCount !== "number") centerSquare.tapCount = 0; centerSquare.tapCount += 1; if (centerSquare.tapCount === 1) { centerSquare.tint = 0xFF69B4; } else if (centerSquare.tapCount === 2) { centerSquare.tint = 0x00FF00; } else if (centerSquare.tapCount === 3) { centerSquare.tint = 0xFFFFFF; centerSquare.tapCount = 0; } }; // 6. SplitLabel konumunu sıfırla splitLabel.y = centerSquare.y + centerSquare.height / 2 + 60; // Pastalar ve Pastayı Böl yazısı tekrar görünür olsun for (var i = 0; i < splitSquares.length; i++) { if (splitSquares[i] && !splitSquares[i]._destroyed) { splitSquares[i].visible = true; } } if (splitLabel && !splitLabel._destroyed) { splitLabel.visible = true; } // Rakamları tekrar görünür yap if (headerNumberLabel && !headerNumberLabel._destroyed) { headerNumberLabel.visible = true; } if (headerNumberLabel2 && !headerNumberLabel2._destroyed) { headerNumberLabel2.visible = true; } // Çizgiyi tekrar görünür yap if (line && !line._destroyed) { line.visible = true; } }; // 'Seçilen Pasta' ve 'Dilim Sayısı' etiketleri kaldırıldı // Ortaya bir kare ekle // Kareyi ekranın üst kısmından splitLabel'ın altına kadar olan bölgede tam ortada konumlandır var upperBound = headerWideBox.y + headerWideBox.height + 40; var lowerBound = 2732 - 140 - 60; // splitLabel.height yaklaşık 140, padding 60 var availableHeight = lowerBound - upperBound; var centerSquareY = upperBound + availableHeight / 2; var centerSquare = LK.getAsset('centerSquare', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: centerSquareY }); game.addChild(centerSquare); // 'Pastayı Böl' yazısı ekle var splitLabel = new Text2('Pastayı Böl', { size: 140, fill: 0xFFD700 }); splitLabel.anchor.set(0.5, 0); // Pastayı merkeze göre altına yerleştir splitLabel.x = 2048 / 2; // Pastaların altına dinamik olarak yerleştirilecek, ilk başta ortadaki pastanın altına koy splitLabel.y = centerSquare.y + centerSquare.height / 2 + 60; game.addChild(splitLabel); // Kaç parçaya bölüneceğini takip eden değişken var splitStep = 1; // 1'den başlatıyoruz (ilk kareye tıklama ile 2'ye bölünecek) var splitSquares = []; // Aktif kareleri tutar // Ortadaki kareyi de seçilebilir yap centerSquare.tapCount = 0; centerSquare.down = function (x, y, obj) { // Her dokunuşta tapCount'u artır if (typeof centerSquare.tapCount !== "number") centerSquare.tapCount = 0; centerSquare.tapCount += 1; if (centerSquare.tapCount === 1) { // 1. dokunuş: pembe centerSquare.tint = 0xFF69B4; } else if (centerSquare.tapCount === 2) { // 2. dokunuş: yeşil centerSquare.tint = 0x00FF00; } else if (centerSquare.tapCount === 3) { // 3. dokunuş: başa dön centerSquare.tint = 0xFFFFFF; centerSquare.tapCount = 0; } }; // 'Kareyi Böl' yazısına tıklanınca kareleri böl splitLabel.down = function (x, y, obj) { // Eğer ilk kare duruyorsa, onu kaldır if (centerSquare && !centerSquare._destroyed) { centerSquare.destroy(); } // 25'e ulaştıysa daha fazla bölme! if (splitStep >= 25 || splitStep + 1 > 25) { return; } // Önceki kareleri sadece yeni kareler eklenmeden önce kaldır if (splitSquares.length > 0) { for (var i = 0; i < splitSquares.length; i++) { if (splitSquares[i] && !splitSquares[i]._destroyed) { splitSquares[i].destroy(); } } splitSquares = []; } splitStep += 1; createSplitSquares(splitStep); }; // Karelere tıklama ile bölme işlemini kaldırıyoruz function handleSplit(x, y, obj) { if (obj && obj.target) { // Kareye özel tapCount'u tut if (typeof obj.target.tapCount !== "number") obj.target.tapCount = 0; obj.target.tapCount += 1; if (obj.target.tapCount === 1) { // 1. dokunuş: pembe obj.target.tint = 0xFF69B4; } else if (obj.target.tapCount === 2) { // 2. dokunuş: yeşil obj.target.tint = 0x00FF00; } else if (obj.target.tapCount === 3) { // 3. dokunuş: başa dön obj.target.tint = 0xFFFFFF; obj.target.tapCount = 0; } // Kazanma kontrolü: Kırmızı pasta sayısı üstteki sayıya, toplam pasta sayısı alttaki sayıya eşit mi? // Kırmızı pasta: tint'i 0xFF69B4 olanlar var redCount = 0; for (var i = 0; i < splitSquares.length; i++) { if (splitSquares[i] && splitSquares[i].tint === 0xFF69B4) { redCount++; } } if (splitSquares.length === bottomNumber && redCount === topNumber) { // Pastaları ve Pastayı Böl yazısını gizle for (var i = 0; i < splitSquares.length; i++) { if (splitSquares[i] && !splitSquares[i]._destroyed) { splitSquares[i].visible = false; } } if (splitLabel && !splitLabel._destroyed) { splitLabel.visible = false; } // Rakamları gizle if (headerNumberLabel && !headerNumberLabel._destroyed) { headerNumberLabel.visible = false; } if (headerNumberLabel2 && !headerNumberLabel2._destroyed) { headerNumberLabel2.visible = false; } // Çizgiyi gizle if (line && !line._destroyed) { line.visible = false; } // Tebrikler mesajı: büyük, ekranı kaplayan, sarı, alt alta var winLabel = new Text2('Tebrikler\nkazandınız!', { size: 260, fill: 0xFFD700, align: 'center' }); winLabel.anchor.set(0.5, 0.5); winLabel.x = 2048 / 2; winLabel.y = 2732 / 2; game.addChild(winLabel); // Konfeti efekti: Çok daha fazla konfeti ve ekranın her yerine dağılacak şekilde var confettiCount = 400; // Çok daha fazla konfeti var colors = [0xffd700, 0xff69b4, 0x00ff00, 0x00bfff, 0xff4500, 0x9400d3, 0xffffff, 0x00ffff, 0xffa500, 0x228b22]; var screenW = 2048; var screenH = 2732; // Konfetiler ekranın farklı noktalarından patlayacak şekilde, 6 farklı merkezden yayılacak var burstCenters = [{ x: screenW / 2, y: screenH / 2 }, // tam merkez { x: screenW * 0.25, y: screenH * 0.25 }, // sol üst { x: screenW * 0.75, y: screenH * 0.25 }, // sağ üst { x: screenW * 0.25, y: screenH * 0.75 }, // sol alt { x: screenW * 0.75, y: screenH * 0.75 }, // sağ alt { x: screenW / 2, y: screenH * 0.1 } // üst orta ]; for (var b = 0; b < burstCenters.length; b++) { var center = burstCenters[b]; var burstCount = Math.floor(confettiCount / burstCenters.length); for (var i = 0; i < burstCount; i++) { // Spiral/dairesel yayılım için açı ve hız var angle = 2 * Math.PI * i / burstCount + (Math.random() - 0.5) * 0.5; // Daireye yay var spiral = 0.7 + Math.random() * 1.5; var speed = 18 + Math.random() * 22; var vx = Math.cos(angle) * speed * spiral; var vy = Math.sin(angle) * speed * spiral; // Başlangıç noktası: merkezden hafif rastgele sapmalı var startX = center.x + Math.cos(angle) * (Math.random() * 60); var startY = center.y + Math.sin(angle) * (Math.random() * 60); var confetti = LK.getAsset('yellowLine', { anchorX: 0.5, anchorY: 0.5, width: 18 + Math.random() * 60, height: 8 + Math.random() * 18, x: startX, y: startY }); confetti.tint = colors[Math.floor(Math.random() * colors.length)]; game.addChild(confetti); // Spiral/dairesel yayılım, hafif zıplama ve titreşim efekti (function (confetti, vx, vy, angle, center) { var gravity = 0.7 + Math.random() * 0.7; var friction = 0.95 + Math.random() * 0.04; var oscillate = 0.12 + Math.random() * 0.22; var oscillateSpeed = 0.10 + Math.random() * 0.22; var life = 80 + Math.floor(Math.random() * 70); // 1.3-2.5 saniye confetti._life = 0; var baseAngle = angle; confetti._update = function () { // Spiral hareket + titreşim confetti.x += vx + Math.cos(baseAngle + confetti._life * oscillateSpeed) * oscillate * 18; confetti.y += vy + Math.sin(baseAngle + confetti._life * oscillateSpeed) * oscillate * 8; vy += gravity; vx *= friction; vy *= friction; confetti.rotation += 0.25 * (Math.random() - 0.5) + Math.sin(confetti._life * 0.2) * 0.08; confetti._life++; // Ekran dışına çıkınca veya ömrü bitince yok et if (confetti._life > life || confetti.y > screenH + 120 || confetti.x < -120 || confetti.x > screenW + 120) { if (confetti.parent) confetti.destroy(); } }; // Her tick'te güncelle if (!game._confettiList) game._confettiList = []; game._confettiList.push(confetti); })(confetti, vx, vy, angle, center); } } // Konfeti güncellemesi için game.update'e ekle if (!game._confettiUpdateAdded) { var oldUpdate = game.update; game.update = function () { if (typeof oldUpdate === "function") oldUpdate.call(this); if (game._confettiList) { for (var i = game._confettiList.length - 1; i >= 0; i--) { var c = game._confettiList[i]; if (c._destroyed) { game._confettiList.splice(i, 1); } else if (typeof c._update === "function") { c._update(); } } } }; game._confettiUpdateAdded = true; } } } } // İstenilen sayıda kareyi ortaya, aralıklı ve eşit boyda yerleştirir function createSplitSquares(pieceCount) { // Dilim sayısı etiketini güncelleme kaldırıldı var gap = 40; // Karelerin boyutunu %10 küçült var baseWidth = centerSquare.width; var shrinkFactor = 0.9 * Math.pow(0.95, splitStep); // Her durumda %10 daha küçük başla, sonra her bölmede %5 küçült var pieceWidth = baseWidth * shrinkFactor; var pieceHeight = pieceWidth; // Kare olması için yükseklik = genişlik // Kare matris mi? (4, 9, 16, ...) var sqrt = Math.sqrt(pieceCount); var isPerfectSquare = sqrt === Math.floor(sqrt); if (isPerfectSquare) { // NxN grid var N = sqrt; var totalGapX = gap * (N - 1); var totalGapY = gap * (N - 1); var totalWidth = pieceWidth * N + totalGapX; var totalHeight = pieceHeight * N + totalGapY; var startX = 2048 / 2 - totalWidth / 2 + pieceWidth / 2; // Kareler ve 'Pastayı Böl' yazısı, headerWideBox'tan ekranın altına kadar olan bölgede hapis olacak şekilde konumlandırılır // Üst sınır: headerNumberLabel2'nin altı + 40px padding (rakamların hemen altı) // Alt sınır: ekranın altı - splitLabel yüksekliği - 60px padding var upperBound = headerNumberLabel2.y + headerNumberLabel2.height + 40; var lowerBound = 2732 - splitLabel.height - 60; var availableHeight = lowerBound - upperBound; if (totalHeight > availableHeight) { // Kareler sığmıyorsa, kare boyutunu küçült var scale = availableHeight / totalHeight; pieceWidth *= scale; pieceHeight = pieceWidth; totalHeight = pieceHeight * N + totalGapY; } var startY = upperBound + (availableHeight - totalHeight) / 2 + pieceHeight / 2; var idx = 0; for (var row = 0; row < N; row++) { for (var col = 0; col < N; col++) { if (idx >= pieceCount) { break; } // Karelerin merkezini kendi kare alanlarının tam ortasına yerleştir var squareCenterX = startX + col * (pieceWidth + gap); var squareCenterY = startY + row * (pieceHeight + gap); var square = LK.getAsset('splitSquare', { anchorX: 0.5, anchorY: 0.5, width: pieceWidth, height: pieceHeight, x: squareCenterX, y: squareCenterY }); game.addChild(square); splitSquares.push(square); // Her kareye tıklama eventi ekle (20'ye kadar) square.down = handleSplit; idx++; } } // Kareyi Böl butonunu en alt satırın altına yerleştir var lastRowY = startY + (N - 1) * (pieceHeight + gap); splitLabel.y = lastRowY + pieceHeight / 2 + 60; } else { // NxN grid gibi göster (ekrana sığdırmak için) var N = Math.ceil(Math.sqrt(pieceCount)); var rows = Math.ceil(pieceCount / N); var cols = N; var totalGapX = gap * (cols - 1); var totalGapY = gap * (rows - 1); var totalWidth = pieceWidth * cols + totalGapX; var totalHeight = pieceHeight * rows + totalGapY; var startX = 2048 / 2 - totalWidth / 2 + pieceWidth / 2; // Kareler ve 'Pastayı Böl' yazısı, headerWideBox'tan ekranın altına kadar olan bölgede hapis olacak şekilde konumlandırılır // Üst sınır: headerNumberLabel2'nin altı + 40px padding (rakamların hemen altı) // Alt sınır: ekranın altı - splitLabel yüksekliği - 60px padding var upperBound = headerNumberLabel2.y + headerNumberLabel2.height + 40; var lowerBound = 2732 - splitLabel.height - 60; var availableHeight = lowerBound - upperBound; if (totalHeight > availableHeight) { // Kareler sığmıyorsa, kare boyutunu küçült var scale = availableHeight / totalHeight; pieceWidth *= scale; pieceHeight = pieceWidth; totalHeight = pieceHeight * rows + totalGapY; } var startY = upperBound + (availableHeight - totalHeight) / 2 + pieceHeight / 2; var idx = 0; for (var row = 0; row < rows; row++) { for (var col = 0; col < cols; col++) { if (idx >= pieceCount) { break; } // Karelerin merkezini kendi kare alanlarının tam ortasına yerleştir (non-square grid) var squareCenterX = startX + col * (pieceWidth + gap); var squareCenterY = startY + row * (pieceHeight + gap); var square = LK.getAsset('splitSquare', { anchorX: 0.5, anchorY: 0.5, width: pieceWidth, height: pieceHeight, x: squareCenterX, y: squareCenterY }); game.addChild(square); splitSquares.push(square); // Her kareye tıklama eventi ekle (20'ye kadar) square.down = handleSplit; idx++; } } // Kareyi Böl butonunu en alt satırın altına yerleştir (non-square grid) var lastRowY = startY + (rows - 1) * (pieceHeight + gap); splitLabel.y = lastRowY + pieceHeight / 2 + 60; } }
===================================================================
--- original.js
+++ change.js
@@ -94,10 +94,10 @@
fill: 0xffd700,
align: 'right'
});
scoreLabel.anchor.set(1, 0); // sağ üst köşe
-scoreLabel.x = 2048 - 60; // sağdan biraz içeride
-scoreLabel.y = 120; // üstten biraz daha aşağıda
+scoreLabel.x = restartButton.x + restartButton.width / 2 + scoreLabel.width / 2 + 60; // Baştan Başla ile aynı hizada, sağında biraz boşluk
+scoreLabel.y = restartButton.y; // Baştan Başla ile aynı yatayda
game.addChild(scoreLabel);
// Butona tıklanınca oyunu baştan başlat
restartButton.down = function (x, y, obj) {
// Tüm oyun state'ini sıfırla ve yeniden başlat
a slice cake top view for kids. In-Game asset. 2d. High contrast. No shadows
Just write 'BÖLME' as a title in colorful text.. In-Game asset. 2d. High contrast. No shadows
Sarı bir button olsun ve içinde 'Pastayı Böl' yazsın. In-Game asset. 2d. High contrast. No shadows
Full ekran sadece sarı renk ekranda başka hiçbirşey yok. In-Game asset. 2d. High contrast. No shadows