/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Jumpscare efekti (ekranı kırmızıya boyar ve titretir)
var Jumpscare = Container.expand(function () {
var self = Container.call(this);
var js = self.attachAsset('jumpscare', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
self.alpha = 0;
self.visible = false;
// Jumpscare başlat
self.start = function () {
self.visible = true;
self.alpha = 0.8;
// Titreme efekti
var shakeCount = 0;
var shakeMax = 10;
var shakeTimer = LK.setInterval(function () {
self.x = (Math.random() - 0.5) * 40;
self.y = (Math.random() - 0.5) * 40;
shakeCount++;
if (shakeCount > shakeMax) {
LK.clearInterval(shakeTimer);
self.x = 0;
self.y = 0;
// Yavaşça kaybol
tween(self, {
alpha: 0
}, {
duration: 400,
onFinish: function onFinish() {
self.visible = false;
}
});
}
}, 30);
};
return self;
});
// Springtrap karakteri
var Springtrap = Container.expand(function () {
var self = Container.call(this);
// Karakteri ortalamak için anchor noktası ortada
var st = self.attachAsset('springtrap', {
anchorX: 0.5,
anchorY: 0.5
});
// Springtrap'in aktif olup olmadığını tut
self.active = false;
// Springtrap'i ekranda rastgele bir yere yerleştir
self.appear = function () {
// Ekranın kenarlarından 100px içeride rastgele bir pozisyon
var marginX = 200;
var marginY = 300;
self.x = marginX + Math.floor(Math.random() * (2048 - 2 * marginX));
self.y = marginY + Math.floor(Math.random() * (2732 - 2 * marginY));
self.visible = true;
self.active = true;
// Hafifçe büyüyerek ortaya çıkma animasyonu
self.scale.x = 0.7;
self.scale.y = 0.7;
tween(self.scale, {
x: 1,
y: 1
}, {
duration: 200,
easing: tween.easeOut
});
};
// Springtrap'i uzaklaştır
self.scareAway = function (_onFinish) {
self.active = false;
// Küçülerek kaybolma animasyonu
tween(self.scale, {
x: 0.2,
y: 0.2
}, {
duration: 180,
easing: tween.easeIn,
onFinish: function onFinish() {
self.visible = false;
if (_onFinish) _onFinish();
}
});
};
// Springtrap'e dokunulduğunda
self.down = function (x, y, obj) {
if (!self.active) return;
// Skoru artır, Springtrap'i uzaklaştır
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
LK.getSound('scare_away').play();
self.scareAway(function () {
// Sonraki Springtrap için zamanlayıcı başlat
scheduleNextSpringtrap();
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x111111
});
/****
* Game Code
****/
// Jumpscare için bir ses efekti
// Springtrap uzaklaştırma efekti için kısa bir ses
// Jumpscare efekti için kırmızı bir kutu
// Springtrap karakteri için bir kutu şekli (daha sonra görsel ile değiştirilebilir)
// Skor metni
var scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFF700
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Springtrap nesnesi
var springtrap = new Springtrap();
game.addChild(springtrap);
// Jumpscare efekti
var jumpscare = new Jumpscare();
game.addChild(jumpscare);
// Springtrap'in ekranda kalma süresi (ms)
var springtrapTime = 1200;
// Springtrap'in tekrar çıkma aralığı (ms)
var springtrapDelayMin = 700;
var springtrapDelayMax = 1600;
// Springtrap zamanlayıcıları
var springtrapTimeout = null;
var springtrapAppearTimeout = null;
// Skoru sıfırla
LK.setScore(0);
scoreTxt.setText(0);
// Springtrap'i ekranda göster
function showSpringtrap() {
springtrap.appear();
// Eğer oyuncu zamanında dokunmazsa jumpscare başlat
springtrapTimeout = LK.setTimeout(function () {
if (springtrap.active) {
triggerJumpscare();
}
}, springtrapTime);
}
// Sonraki Springtrap için zamanlayıcı kur
function scheduleNextSpringtrap() {
if (springtrapAppearTimeout) LK.clearTimeout(springtrapAppearTimeout);
springtrapAppearTimeout = LK.setTimeout(function () {
showSpringtrap();
}, springtrapDelayMin + Math.floor(Math.random() * (springtrapDelayMax - springtrapDelayMin)));
}
// Jumpscare başlat
function triggerJumpscare() {
springtrap.active = false;
springtrap.visible = false;
jumpscare.start();
LK.getSound('jumpscare_sfx').play();
// Kısa gecikmeden sonra oyun biter
LK.setTimeout(function () {
LK.showGameOver();
}, 900);
}
// Oyun başladığında ilk Springtrap'i göster
scheduleNextSpringtrap();
// Oyun bittiğinde zamanlayıcıları temizle
game.onDestroy = function () {
if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
if (springtrapAppearTimeout) LK.clearTimeout(springtrapAppearTimeout);
};
// Oyun güncellemesi (gerekirse ek efektler için)
game.update = function () {
// Oyun akışı burada yönetiliyor
};
// Ekrana dokunma olaylarını Springtrap'e yönlendir
game.down = function (x, y, obj) {
// Ekrana dokunulduğunda Springtrap'e tıklanıp tıklanmadığını kontrol et
if (springtrap.active && springtrap.visible) {
// Koordinatları Springtrap'in lokaline çevir
var local = springtrap.toLocal(game.toGlobal({
x: x,
y: y
}));
// Springtrap kutusunun içinde mi?
var stAsset = springtrap.children[0];
if (local.x >= -stAsset.width / 2 && local.x <= stAsset.width / 2 && local.y >= -stAsset.height / 2 && local.y <= stAsset.height / 2) {
springtrap.down(x, y, obj);
if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
}
}
};
// Oyun başladığında skor sıfırlansın
LK.setScore(0);
scoreTxt.setText(0); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,206 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Jumpscare efekti (ekranı kırmızıya boyar ve titretir)
+var Jumpscare = Container.expand(function () {
+ var self = Container.call(this);
+ var js = self.attachAsset('jumpscare', {
+ anchorX: 0,
+ anchorY: 0,
+ x: 0,
+ y: 0
+ });
+ self.alpha = 0;
+ self.visible = false;
+ // Jumpscare başlat
+ self.start = function () {
+ self.visible = true;
+ self.alpha = 0.8;
+ // Titreme efekti
+ var shakeCount = 0;
+ var shakeMax = 10;
+ var shakeTimer = LK.setInterval(function () {
+ self.x = (Math.random() - 0.5) * 40;
+ self.y = (Math.random() - 0.5) * 40;
+ shakeCount++;
+ if (shakeCount > shakeMax) {
+ LK.clearInterval(shakeTimer);
+ self.x = 0;
+ self.y = 0;
+ // Yavaşça kaybol
+ tween(self, {
+ alpha: 0
+ }, {
+ duration: 400,
+ onFinish: function onFinish() {
+ self.visible = false;
+ }
+ });
+ }
+ }, 30);
+ };
+ return self;
+});
+// Springtrap karakteri
+var Springtrap = Container.expand(function () {
+ var self = Container.call(this);
+ // Karakteri ortalamak için anchor noktası ortada
+ var st = self.attachAsset('springtrap', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Springtrap'in aktif olup olmadığını tut
+ self.active = false;
+ // Springtrap'i ekranda rastgele bir yere yerleştir
+ self.appear = function () {
+ // Ekranın kenarlarından 100px içeride rastgele bir pozisyon
+ var marginX = 200;
+ var marginY = 300;
+ self.x = marginX + Math.floor(Math.random() * (2048 - 2 * marginX));
+ self.y = marginY + Math.floor(Math.random() * (2732 - 2 * marginY));
+ self.visible = true;
+ self.active = true;
+ // Hafifçe büyüyerek ortaya çıkma animasyonu
+ self.scale.x = 0.7;
+ self.scale.y = 0.7;
+ tween(self.scale, {
+ x: 1,
+ y: 1
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ };
+ // Springtrap'i uzaklaştır
+ self.scareAway = function (_onFinish) {
+ self.active = false;
+ // Küçülerek kaybolma animasyonu
+ tween(self.scale, {
+ x: 0.2,
+ y: 0.2
+ }, {
+ duration: 180,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ self.visible = false;
+ if (_onFinish) _onFinish();
+ }
+ });
+ };
+ // Springtrap'e dokunulduğunda
+ self.down = function (x, y, obj) {
+ if (!self.active) return;
+ // Skoru artır, Springtrap'i uzaklaştır
+ LK.setScore(LK.getScore() + 1);
+ scoreTxt.setText(LK.getScore());
+ LK.getSound('scare_away').play();
+ self.scareAway(function () {
+ // Sonraki Springtrap için zamanlayıcı başlat
+ scheduleNextSpringtrap();
+ });
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x111111
+});
+
+/****
+* Game Code
+****/
+// Jumpscare için bir ses efekti
+// Springtrap uzaklaştırma efekti için kısa bir ses
+// Jumpscare efekti için kırmızı bir kutu
+// Springtrap karakteri için bir kutu şekli (daha sonra görsel ile değiştirilebilir)
+// Skor metni
+var scoreTxt = new Text2('0', {
+ size: 120,
+ fill: 0xFFF700
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Springtrap nesnesi
+var springtrap = new Springtrap();
+game.addChild(springtrap);
+// Jumpscare efekti
+var jumpscare = new Jumpscare();
+game.addChild(jumpscare);
+// Springtrap'in ekranda kalma süresi (ms)
+var springtrapTime = 1200;
+// Springtrap'in tekrar çıkma aralığı (ms)
+var springtrapDelayMin = 700;
+var springtrapDelayMax = 1600;
+// Springtrap zamanlayıcıları
+var springtrapTimeout = null;
+var springtrapAppearTimeout = null;
+// Skoru sıfırla
+LK.setScore(0);
+scoreTxt.setText(0);
+// Springtrap'i ekranda göster
+function showSpringtrap() {
+ springtrap.appear();
+ // Eğer oyuncu zamanında dokunmazsa jumpscare başlat
+ springtrapTimeout = LK.setTimeout(function () {
+ if (springtrap.active) {
+ triggerJumpscare();
+ }
+ }, springtrapTime);
+}
+// Sonraki Springtrap için zamanlayıcı kur
+function scheduleNextSpringtrap() {
+ if (springtrapAppearTimeout) LK.clearTimeout(springtrapAppearTimeout);
+ springtrapAppearTimeout = LK.setTimeout(function () {
+ showSpringtrap();
+ }, springtrapDelayMin + Math.floor(Math.random() * (springtrapDelayMax - springtrapDelayMin)));
+}
+// Jumpscare başlat
+function triggerJumpscare() {
+ springtrap.active = false;
+ springtrap.visible = false;
+ jumpscare.start();
+ LK.getSound('jumpscare_sfx').play();
+ // Kısa gecikmeden sonra oyun biter
+ LK.setTimeout(function () {
+ LK.showGameOver();
+ }, 900);
+}
+// Oyun başladığında ilk Springtrap'i göster
+scheduleNextSpringtrap();
+// Oyun bittiğinde zamanlayıcıları temizle
+game.onDestroy = function () {
+ if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
+ if (springtrapAppearTimeout) LK.clearTimeout(springtrapAppearTimeout);
+};
+// Oyun güncellemesi (gerekirse ek efektler için)
+game.update = function () {
+ // Oyun akışı burada yönetiliyor
+};
+// Ekrana dokunma olaylarını Springtrap'e yönlendir
+game.down = function (x, y, obj) {
+ // Ekrana dokunulduğunda Springtrap'e tıklanıp tıklanmadığını kontrol et
+ if (springtrap.active && springtrap.visible) {
+ // Koordinatları Springtrap'in lokaline çevir
+ var local = springtrap.toLocal(game.toGlobal({
+ x: x,
+ y: y
+ }));
+ // Springtrap kutusunun içinde mi?
+ var stAsset = springtrap.children[0];
+ if (local.x >= -stAsset.width / 2 && local.x <= stAsset.width / 2 && local.y >= -stAsset.height / 2 && local.y <= stAsset.height / 2) {
+ springtrap.down(x, y, obj);
+ if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
+ }
+ }
+};
+// Oyun başladığında skor sıfırlansın
+LK.setScore(0);
+scoreTxt.setText(0);
\ No newline at end of file