/**** * 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