User prompt
20 saniye olsun
User prompt
1 saniye değil 3
User prompt
bloklar ateşli ve 3 saniye içinde yok olsun 5 bluk yok olduğunda asıl yerden 1 blok eksilsin
Code edit (1 edits merged)
Please save this source code
User prompt
Renkli Kutuları Sürükle
Initial prompt
türkçe yüzle kontrol olmasın
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Kutuların sınıfı var DraggableBox = Container.expand(function () { var self = Container.call(this); // Renk seçimi var colorList = ['box_red', 'box_blue', 'box_green', 'box_yellow', 'box_purple']; var colorId = colorList[Math.floor(Math.random() * colorList.length)]; self.colorId = colorId; // Kutu grafiği var box = self.attachAsset(colorId, { anchorX: 0.5, anchorY: 0.5 }); // Kutu sürükleniyor mu? self.isDragging = false; // Kutu hedefe ulaştı mı? self.isDelivered = false; // Kutuya dokunulduğunda self.down = function (x, y, obj) { if (self.isDelivered) return; self.isDragging = true; // Hafifçe büyüt tween(self, { scaleX: 1.15, scaleY: 1.15 }, { duration: 120, easing: tween.easeOut }); }; // Kutu bırakıldığında self.up = function (x, y, obj) { if (self.isDelivered) return; self.isDragging = false; // Eski boyuta dön tween(self, { scaleX: 1, scaleY: 1 }, { duration: 120, easing: tween.easeOut }); }; // Kutu sürüklenirken self.move = function (x, y, obj) { // Sürükleme işlemi game.move'da yönetilecek }; // Kutu hedefe ulaştığında animasyon self.deliver = function () { self.isDelivered = true; // Hedefte hafif büyütüp kaybolma animasyonu tween(self, { scaleX: 1.4, scaleY: 1.4, alpha: 0 }, { duration: 220, easing: tween.easeIn, onFinish: function onFinish() { self.destroy(); } }); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xf7f7f7 }); /**** * Game Code ****/ // Kutular için farklı renklerde kutu şekilleri oluşturuluyor // Oyun alanı boyutları var GAME_W = 2048; var GAME_H = 2732; // Hedef bölgeyi ortala var target = LK.getAsset('target', { anchorX: 0.5, anchorY: 0.5, x: GAME_W / 2, y: GAME_H * 0.78 // Alt kısımda, ama ekranın dışında değil }); game.addChild(target); // Skor metni var scoreTxt = new Text2('0', { size: 120, fill: 0x222222 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Zamanlayıcı metni var timerTxt = new Text2('0', { size: 70, fill: 0x666666 }); timerTxt.anchor.set(0.5, 0); LK.gui.top.addChild(timerTxt); timerTxt.y = 130; // Kutular dizisi var boxes = []; // Sürüklenen kutu var dragBox = null; // Sürükleme offseti var dragOffsetX = 0; var dragOffsetY = 0; // Oyun süresi (saniye) var elapsedTime = 0; // Kutu oluşturma aralığı (ms) var boxInterval = 1600; var boxIntervalMin = 600; var boxIntervalStep = 60; // Son kutu oluşturma tick'i var lastBoxTick = 0; // Skoru güncelle function updateScore(val) { LK.setScore(val); scoreTxt.setText(val); } // Zamanı güncelle function updateTimer(sec) { timerTxt.setText(sec + " sn"); } // Yeni kutu oluştur function spawnBox() { var box = new DraggableBox(); // Rastgele bir konum (hedeften uzakta, üst 2/3'te) var safeRadius = 400; var spawnAreaY = GAME_H * 0.12 + Math.random() * (GAME_H * 0.5); var spawnAreaX = 200 + Math.random() * (GAME_W - 400); // Hedeften uzaksa var dx = spawnAreaX - target.x; var dy = spawnAreaY - target.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist < safeRadius) { // Uzaklaştır if (dx === 0 && dy === 0) { spawnAreaX += 300; } else { spawnAreaX += dx / dist * safeRadius; spawnAreaY += dy / dist * safeRadius; } } box.x = spawnAreaX; box.y = spawnAreaY; box.scaleX = 1; box.scaleY = 1; box.alpha = 1; // Kutuyu ekle game.addChild(box); boxes.push(box); } // Oyun başladığında ilk kutuyu oluştur spawnBox(); // Oyun tick fonksiyonu game.update = function () { // Zamanı güncelle if (LK.ticks % 60 === 0) { elapsedTime += 1; updateTimer(elapsedTime); } // Kutu oluşturma aralığını azalt (oyun hızlanır) if (boxInterval > boxIntervalMin && LK.ticks % 180 === 0) { boxInterval -= boxIntervalStep; if (boxInterval < boxIntervalMin) boxInterval = boxIntervalMin; } // Yeni kutu oluşturma zamanı geldiyse if (LK.ticks - lastBoxTick > Math.floor(boxInterval / 16.67)) { spawnBox(); lastBoxTick = LK.ticks; } // Kutular hedefe ulaştı mı kontrol et for (var i = boxes.length - 1; i >= 0; i--) { var box = boxes[i]; if (box.isDelivered) continue; // Hedefle kesişiyor mu? if (box.intersects(target)) { // Sadece sürükleniyorsa teslim et if (box.isDragging) { box.deliver(); updateScore(LK.getScore() + 1); boxes.splice(i, 1); // Yeni kutu hemen gelsin spawnBox(); } } } }; // Sürükleme işlemleri game.down = function (x, y, obj) { // Ters sıradan kutulara bak (üstteki kutu öncelikli) for (var i = boxes.length - 1; i >= 0; i--) { var box = boxes[i]; if (box.isDelivered) continue; // Kutuya tıklandı mı? var local = box.toLocal(game.toGlobal({ x: x, y: y })); if (local.x > -box.width / 2 && local.x < box.width / 2 && local.y > -box.height / 2 && local.y < box.height / 2) { dragBox = box; dragBox.isDragging = true; dragOffsetX = box.x - x; dragOffsetY = box.y - y; // Kutuya down eventini ilet if (typeof box.down === 'function') box.down(x, y, obj); break; } } }; game.move = function (x, y, obj) { if (dragBox && dragBox.isDragging && !dragBox.isDelivered) { // Kutu pozisyonunu güncelle dragBox.x = x + dragOffsetX; dragBox.y = y + dragOffsetY; } }; game.up = function (x, y, obj) { if (dragBox) { if (typeof dragBox.up === 'function') dragBox.up(x, y, obj); dragBox.isDragging = false; dragBox = null; } }; // Oyun başladığında skor ve zaman sıfırla updateScore(0); updateTimer(0);
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,238 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Kutuların sınıfı
+var DraggableBox = Container.expand(function () {
+ var self = Container.call(this);
+ // Renk seçimi
+ var colorList = ['box_red', 'box_blue', 'box_green', 'box_yellow', 'box_purple'];
+ var colorId = colorList[Math.floor(Math.random() * colorList.length)];
+ self.colorId = colorId;
+ // Kutu grafiği
+ var box = self.attachAsset(colorId, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Kutu sürükleniyor mu?
+ self.isDragging = false;
+ // Kutu hedefe ulaştı mı?
+ self.isDelivered = false;
+ // Kutuya dokunulduğunda
+ self.down = function (x, y, obj) {
+ if (self.isDelivered) return;
+ self.isDragging = true;
+ // Hafifçe büyüt
+ tween(self, {
+ scaleX: 1.15,
+ scaleY: 1.15
+ }, {
+ duration: 120,
+ easing: tween.easeOut
+ });
+ };
+ // Kutu bırakıldığında
+ self.up = function (x, y, obj) {
+ if (self.isDelivered) return;
+ self.isDragging = false;
+ // Eski boyuta dön
+ tween(self, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 120,
+ easing: tween.easeOut
+ });
+ };
+ // Kutu sürüklenirken
+ self.move = function (x, y, obj) {
+ // Sürükleme işlemi game.move'da yönetilecek
+ };
+ // Kutu hedefe ulaştığında animasyon
+ self.deliver = function () {
+ self.isDelivered = true;
+ // Hedefte hafif büyütüp kaybolma animasyonu
+ tween(self, {
+ scaleX: 1.4,
+ scaleY: 1.4,
+ alpha: 0
+ }, {
+ duration: 220,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ self.destroy();
+ }
+ });
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xf7f7f7
+});
+
+/****
+* Game Code
+****/
+// Kutular için farklı renklerde kutu şekilleri oluşturuluyor
+// Oyun alanı boyutları
+var GAME_W = 2048;
+var GAME_H = 2732;
+// Hedef bölgeyi ortala
+var target = LK.getAsset('target', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: GAME_W / 2,
+ y: GAME_H * 0.78 // Alt kısımda, ama ekranın dışında değil
+});
+game.addChild(target);
+// Skor metni
+var scoreTxt = new Text2('0', {
+ size: 120,
+ fill: 0x222222
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Zamanlayıcı metni
+var timerTxt = new Text2('0', {
+ size: 70,
+ fill: 0x666666
+});
+timerTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(timerTxt);
+timerTxt.y = 130;
+// Kutular dizisi
+var boxes = [];
+// Sürüklenen kutu
+var dragBox = null;
+// Sürükleme offseti
+var dragOffsetX = 0;
+var dragOffsetY = 0;
+// Oyun süresi (saniye)
+var elapsedTime = 0;
+// Kutu oluşturma aralığı (ms)
+var boxInterval = 1600;
+var boxIntervalMin = 600;
+var boxIntervalStep = 60;
+// Son kutu oluşturma tick'i
+var lastBoxTick = 0;
+// Skoru güncelle
+function updateScore(val) {
+ LK.setScore(val);
+ scoreTxt.setText(val);
+}
+// Zamanı güncelle
+function updateTimer(sec) {
+ timerTxt.setText(sec + " sn");
+}
+// Yeni kutu oluştur
+function spawnBox() {
+ var box = new DraggableBox();
+ // Rastgele bir konum (hedeften uzakta, üst 2/3'te)
+ var safeRadius = 400;
+ var spawnAreaY = GAME_H * 0.12 + Math.random() * (GAME_H * 0.5);
+ var spawnAreaX = 200 + Math.random() * (GAME_W - 400);
+ // Hedeften uzaksa
+ var dx = spawnAreaX - target.x;
+ var dy = spawnAreaY - target.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist < safeRadius) {
+ // Uzaklaştır
+ if (dx === 0 && dy === 0) {
+ spawnAreaX += 300;
+ } else {
+ spawnAreaX += dx / dist * safeRadius;
+ spawnAreaY += dy / dist * safeRadius;
+ }
+ }
+ box.x = spawnAreaX;
+ box.y = spawnAreaY;
+ box.scaleX = 1;
+ box.scaleY = 1;
+ box.alpha = 1;
+ // Kutuyu ekle
+ game.addChild(box);
+ boxes.push(box);
+}
+// Oyun başladığında ilk kutuyu oluştur
+spawnBox();
+// Oyun tick fonksiyonu
+game.update = function () {
+ // Zamanı güncelle
+ if (LK.ticks % 60 === 0) {
+ elapsedTime += 1;
+ updateTimer(elapsedTime);
+ }
+ // Kutu oluşturma aralığını azalt (oyun hızlanır)
+ if (boxInterval > boxIntervalMin && LK.ticks % 180 === 0) {
+ boxInterval -= boxIntervalStep;
+ if (boxInterval < boxIntervalMin) boxInterval = boxIntervalMin;
+ }
+ // Yeni kutu oluşturma zamanı geldiyse
+ if (LK.ticks - lastBoxTick > Math.floor(boxInterval / 16.67)) {
+ spawnBox();
+ lastBoxTick = LK.ticks;
+ }
+ // Kutular hedefe ulaştı mı kontrol et
+ for (var i = boxes.length - 1; i >= 0; i--) {
+ var box = boxes[i];
+ if (box.isDelivered) continue;
+ // Hedefle kesişiyor mu?
+ if (box.intersects(target)) {
+ // Sadece sürükleniyorsa teslim et
+ if (box.isDragging) {
+ box.deliver();
+ updateScore(LK.getScore() + 1);
+ boxes.splice(i, 1);
+ // Yeni kutu hemen gelsin
+ spawnBox();
+ }
+ }
+ }
+};
+// Sürükleme işlemleri
+game.down = function (x, y, obj) {
+ // Ters sıradan kutulara bak (üstteki kutu öncelikli)
+ for (var i = boxes.length - 1; i >= 0; i--) {
+ var box = boxes[i];
+ if (box.isDelivered) continue;
+ // Kutuya tıklandı mı?
+ var local = box.toLocal(game.toGlobal({
+ x: x,
+ y: y
+ }));
+ if (local.x > -box.width / 2 && local.x < box.width / 2 && local.y > -box.height / 2 && local.y < box.height / 2) {
+ dragBox = box;
+ dragBox.isDragging = true;
+ dragOffsetX = box.x - x;
+ dragOffsetY = box.y - y;
+ // Kutuya down eventini ilet
+ if (typeof box.down === 'function') box.down(x, y, obj);
+ break;
+ }
+ }
+};
+game.move = function (x, y, obj) {
+ if (dragBox && dragBox.isDragging && !dragBox.isDelivered) {
+ // Kutu pozisyonunu güncelle
+ dragBox.x = x + dragOffsetX;
+ dragBox.y = y + dragOffsetY;
+ }
+};
+game.up = function (x, y, obj) {
+ if (dragBox) {
+ if (typeof dragBox.up === 'function') dragBox.up(x, y, obj);
+ dragBox.isDragging = false;
+ dragBox = null;
+ }
+};
+// Oyun başladığında skor ve zaman sıfırla
+updateScore(0);
+updateTimer(0);
\ No newline at end of file