/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Renkli bloklar için ana sınıf
var Block = Container.expand(function () {
var self = Container.call(this);
// Rastgele bir renk seç
var colorList = ['blockRed', 'blockGreen', 'blockBlue', 'blockYellow', 'blockPurple', 'blockCyan', 'blockOrange'];
var colorId = colorList[Math.floor(Math.random() * colorList.length)];
var blockAsset = self.attachAsset(colorId, {
anchorX: 0.5,
anchorY: 0.5
});
// Blok ömrü (ms cinsinden)
self.lifetime = 1500; // Başlangıçta 1.5 saniye
self.spawnTime = LK.ticks;
self.isAlive = true;
// Blok patlatıldığında animasyon ve yok etme
self.pop = function () {
if (!self.isAlive) return;
self.isAlive = false;
// Patlama efekti
var pop = LK.getAsset('popCircle', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 0,
scaleX: 0.5,
scaleY: 0.5,
alpha: 0.7
});
self.addChild(pop);
tween(pop, {
scaleX: 1.5,
scaleY: 1.5,
alpha: 0
}, {
duration: 220,
easing: tween.easeOut,
onFinish: function onFinish() {
pop.destroy();
}
});
// Ses efekti
LK.getSound('pop').play();
// Blok kaybolsun
tween(self, {
alpha: 0,
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 180,
onFinish: function onFinish() {
self.destroy();
}
});
};
// Blok tıklama olayı
self.down = function (x, y, obj) {
if (!self.isAlive) return;
self.pop();
// Skoru artır
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
// Zorluk artırıcı: Her 5 puanda blok ömrünü biraz azalt
if (LK.getScore() % 5 === 0 && blockLifetime > 600) {
blockLifetime -= 100;
}
};
// Her frame blok ömrünü kontrol et
self.update = function () {
if (!self.isAlive) return;
var elapsed = (LK.ticks - self.spawnTime) * (1000 / 60);
if (elapsed > self.lifetime) {
self.isAlive = false;
self.miss();
}
};
// Kaçırıldığında çağrılır
self.miss = function () {
// Blok kaybolsun
tween(self, {
alpha: 0
}, {
duration: 180,
onFinish: function onFinish() {
self.destroy();
}
});
// Canı azalt
loseLife();
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x181818
});
/****
* Game Code
****/
// Blok patlama sesi
// Patlama efekti için küçük bir daire
// Renkli bloklar için farklı renklerde kutular tanımlanıyor
// Skor göstergesi
var scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Can göstergesi (kalp simgeleri yerine kutucuklar)
var maxLives = 3;
var lives = maxLives;
var lifeBoxes = [];
function drawLives() {
// Önceki kutuları temizle
for (var i = 0; i < lifeBoxes.length; i++) {
if (lifeBoxes[i].parent) lifeBoxes[i].parent.removeChild(lifeBoxes[i]);
}
lifeBoxes = [];
for (var i = 0; i < maxLives; i++) {
var box = LK.getAsset('blockRed', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.35,
scaleY: 0.35,
alpha: i < lives ? 1 : 0.25
});
// Ekranın üst sağ köşesine diz
box.x = LK.gui.width - 60 - i * 80;
box.y = 80;
LK.gui.addChild(box);
lifeBoxes.push(box);
}
}
drawLives();
// Bloklar için global dizi
var blocks = [];
// Blok çıkış süresi (ms)
var blockLifetime = 1500;
// Blok çıkış aralığı (ms)
var blockInterval = 900;
var minBlockInterval = 400;
var blockIntervalDecrease = 30;
// Son blok çıkış zamanı
var lastBlockTick = 0;
// Blokların çıkabileceği alan (kenarlardan taşmasın)
var margin = 160;
// Can kaybetme fonksiyonu
function loseLife() {
lives--;
drawLives();
// Ekranı kısa süre kırmızıya flashla
LK.effects.flashScreen(0xff3b30, 300);
if (lives <= 0) {
// Oyun bitti
LK.showGameOver();
}
}
// Yeni blok oluştur
function spawnBlock() {
var block = new Block();
// Blok ömrünü güncel zorlukla ayarla
block.lifetime = blockLifetime;
// Rastgele pozisyon (kenarlardan taşmasın)
var bx = margin + Math.random() * (2048 - 2 * margin);
var by = 300 + Math.random() * (2732 - 2 * margin - 300);
block.x = bx;
block.y = by;
block.alpha = 0;
block.scaleX = 0.7;
block.scaleY = 0.7;
// Hafif büyüyerek görünme animasyonu
tween(block, {
alpha: 1,
scaleX: 1,
scaleY: 1
}, {
duration: 180,
easing: tween.easeOut
});
blocks.push(block);
game.addChild(block);
}
// Oyun güncelleme döngüsü
game.update = function () {
// Blok çıkış zamanını kontrol et
if (LK.ticks - lastBlockTick > blockInterval / 1000 * 60) {
spawnBlock();
lastBlockTick = LK.ticks;
// Zorluk: Aralığı azalt
if (blockInterval > minBlockInterval) {
blockInterval -= blockIntervalDecrease;
}
}
// Blokları güncelle
for (var i = blocks.length - 1; i >= 0; i--) {
var b = blocks[i];
if (!b.parent) {
blocks.splice(i, 1);
continue;
}
if (b.update) b.update();
}
};
// Oyun başladığında skor ve canları sıfırla
function resetGame() {
LK.setScore(0);
scoreTxt.setText('0');
lives = maxLives;
drawLives();
blockLifetime = 1500;
blockInterval = 900;
lastBlockTick = LK.ticks;
// Tüm blokları temizle
for (var i = blocks.length - 1; i >= 0; i--) {
if (blocks[i].parent) blocks[i].destroy();
blocks.splice(i, 1);
}
}
resetGame();
// Oyun yeniden başladığında sıfırla
game.on('reset', function () {
resetGame();
});
// Ekranın üst sol köşesini boş bırak (oyun menüsü için)
game.on('resize', function () {
drawLives();
}); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,239 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Renkli bloklar için ana sınıf
+var Block = Container.expand(function () {
+ var self = Container.call(this);
+ // Rastgele bir renk seç
+ var colorList = ['blockRed', 'blockGreen', 'blockBlue', 'blockYellow', 'blockPurple', 'blockCyan', 'blockOrange'];
+ var colorId = colorList[Math.floor(Math.random() * colorList.length)];
+ var blockAsset = self.attachAsset(colorId, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Blok ömrü (ms cinsinden)
+ self.lifetime = 1500; // Başlangıçta 1.5 saniye
+ self.spawnTime = LK.ticks;
+ self.isAlive = true;
+ // Blok patlatıldığında animasyon ve yok etme
+ self.pop = function () {
+ if (!self.isAlive) return;
+ self.isAlive = false;
+ // Patlama efekti
+ var pop = LK.getAsset('popCircle', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: 0,
+ scaleX: 0.5,
+ scaleY: 0.5,
+ alpha: 0.7
+ });
+ self.addChild(pop);
+ tween(pop, {
+ scaleX: 1.5,
+ scaleY: 1.5,
+ alpha: 0
+ }, {
+ duration: 220,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ pop.destroy();
+ }
+ });
+ // Ses efekti
+ LK.getSound('pop').play();
+ // Blok kaybolsun
+ tween(self, {
+ alpha: 0,
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 180,
+ onFinish: function onFinish() {
+ self.destroy();
+ }
+ });
+ };
+ // Blok tıklama olayı
+ self.down = function (x, y, obj) {
+ if (!self.isAlive) return;
+ self.pop();
+ // Skoru artır
+ LK.setScore(LK.getScore() + 1);
+ scoreTxt.setText(LK.getScore());
+ // Zorluk artırıcı: Her 5 puanda blok ömrünü biraz azalt
+ if (LK.getScore() % 5 === 0 && blockLifetime > 600) {
+ blockLifetime -= 100;
+ }
+ };
+ // Her frame blok ömrünü kontrol et
+ self.update = function () {
+ if (!self.isAlive) return;
+ var elapsed = (LK.ticks - self.spawnTime) * (1000 / 60);
+ if (elapsed > self.lifetime) {
+ self.isAlive = false;
+ self.miss();
+ }
+ };
+ // Kaçırıldığında çağrılır
+ self.miss = function () {
+ // Blok kaybolsun
+ tween(self, {
+ alpha: 0
+ }, {
+ duration: 180,
+ onFinish: function onFinish() {
+ self.destroy();
+ }
+ });
+ // Canı azalt
+ loseLife();
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
+ backgroundColor: 0x181818
+});
+
+/****
+* Game Code
+****/
+// Blok patlama sesi
+// Patlama efekti için küçük bir daire
+// Renkli bloklar için farklı renklerde kutular tanımlanıyor
+// Skor göstergesi
+var scoreTxt = new Text2('0', {
+ size: 120,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Can göstergesi (kalp simgeleri yerine kutucuklar)
+var maxLives = 3;
+var lives = maxLives;
+var lifeBoxes = [];
+function drawLives() {
+ // Önceki kutuları temizle
+ for (var i = 0; i < lifeBoxes.length; i++) {
+ if (lifeBoxes[i].parent) lifeBoxes[i].parent.removeChild(lifeBoxes[i]);
+ }
+ lifeBoxes = [];
+ for (var i = 0; i < maxLives; i++) {
+ var box = LK.getAsset('blockRed', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 0.35,
+ scaleY: 0.35,
+ alpha: i < lives ? 1 : 0.25
+ });
+ // Ekranın üst sağ köşesine diz
+ box.x = LK.gui.width - 60 - i * 80;
+ box.y = 80;
+ LK.gui.addChild(box);
+ lifeBoxes.push(box);
+ }
+}
+drawLives();
+// Bloklar için global dizi
+var blocks = [];
+// Blok çıkış süresi (ms)
+var blockLifetime = 1500;
+// Blok çıkış aralığı (ms)
+var blockInterval = 900;
+var minBlockInterval = 400;
+var blockIntervalDecrease = 30;
+// Son blok çıkış zamanı
+var lastBlockTick = 0;
+// Blokların çıkabileceği alan (kenarlardan taşmasın)
+var margin = 160;
+// Can kaybetme fonksiyonu
+function loseLife() {
+ lives--;
+ drawLives();
+ // Ekranı kısa süre kırmızıya flashla
+ LK.effects.flashScreen(0xff3b30, 300);
+ if (lives <= 0) {
+ // Oyun bitti
+ LK.showGameOver();
+ }
+}
+// Yeni blok oluştur
+function spawnBlock() {
+ var block = new Block();
+ // Blok ömrünü güncel zorlukla ayarla
+ block.lifetime = blockLifetime;
+ // Rastgele pozisyon (kenarlardan taşmasın)
+ var bx = margin + Math.random() * (2048 - 2 * margin);
+ var by = 300 + Math.random() * (2732 - 2 * margin - 300);
+ block.x = bx;
+ block.y = by;
+ block.alpha = 0;
+ block.scaleX = 0.7;
+ block.scaleY = 0.7;
+ // Hafif büyüyerek görünme animasyonu
+ tween(block, {
+ alpha: 1,
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 180,
+ easing: tween.easeOut
+ });
+ blocks.push(block);
+ game.addChild(block);
+}
+// Oyun güncelleme döngüsü
+game.update = function () {
+ // Blok çıkış zamanını kontrol et
+ if (LK.ticks - lastBlockTick > blockInterval / 1000 * 60) {
+ spawnBlock();
+ lastBlockTick = LK.ticks;
+ // Zorluk: Aralığı azalt
+ if (blockInterval > minBlockInterval) {
+ blockInterval -= blockIntervalDecrease;
+ }
+ }
+ // Blokları güncelle
+ for (var i = blocks.length - 1; i >= 0; i--) {
+ var b = blocks[i];
+ if (!b.parent) {
+ blocks.splice(i, 1);
+ continue;
+ }
+ if (b.update) b.update();
+ }
+};
+// Oyun başladığında skor ve canları sıfırla
+function resetGame() {
+ LK.setScore(0);
+ scoreTxt.setText('0');
+ lives = maxLives;
+ drawLives();
+ blockLifetime = 1500;
+ blockInterval = 900;
+ lastBlockTick = LK.ticks;
+ // Tüm blokları temizle
+ for (var i = blocks.length - 1; i >= 0; i--) {
+ if (blocks[i].parent) blocks[i].destroy();
+ blocks.splice(i, 1);
+ }
+}
+resetGame();
+// Oyun yeniden başladığında sıfırla
+game.on('reset', function () {
+ resetGame();
+});
+// Ekranın üst sol köşesini boş bırak (oyun menüsü için)
+game.on('resize', function () {
+ drawLives();
});
\ No newline at end of file