User prompt
golden freddy 0.8 saniye beklesin
User prompt
golden freddy spring trap ile aynı kapakta olamaz ve %80 oranla çıksın
User prompt
ekstra kapaklardan golden fredy çıksın eğer ona basarsak jumpscare yiyelim
User prompt
springtrap 0.9 saniye beklesin
User prompt
ilk 10 skorda bir sürü kalp çıksın
User prompt
buton üstteki sayı 20 olunca gelsin
User prompt
butona basmak için sadece 0.5 saniye olsun
User prompt
eğer butona basmazsak jumpscare çıksın
User prompt
eğerki ölürsek jumpscare çıksın
User prompt
ekranın her hangi bir yerinde buton çıksın eğer tıklamazsak ölelim
User prompt
sağ üstte ne kadar kalbimiz varsa gösteren bir sayaç olsun
User prompt
kalpleri asset haline dönüştür
User prompt
kalpler daha büyük olsun
User prompt
%30 şansla ekranda her hangi bir yerde ekstra bir kalp çıksın ve 1 tane daha hakkımız olsun
User prompt
başlat meüsünde oyunun ismi yazsın
User prompt
ve başlat menüsünde en yüksek skoru göster ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
jumpscare gelince jumpscare_sfx sesini çal
User prompt
oyun açıldığı zaman backraund adlı müzik çalsın ve jumpscare gelince dursun
User prompt
başlat menüsü mavi olsun
User prompt
tıklamak için sadece 0.9 saniyemiz olsun
User prompt
kapakları büyüt ve aralıklarıda büyüt
User prompt
bu kapaklar ekranın ortasında yan yana 3er 3er sıralansın ve springtrap bu kapakların olduğu yerden çıksın
User prompt
bu kapakların rengi farklı olsun
User prompt
ekrana 6 tane kapak ekle springtrap bu kapakların içinden çıksın
User prompt
bir başlat menüsü ekle ve springtrap gelince üzerine tıkla yaz
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ // Ekstra kalp (can) class'ı var Heart = Container.expand(function () { var self = Container.call(this); // Kalp görseli (artık asset olarak kalp resmi) var heartAsset = self.attachAsset('heart', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 1.2 }); self.active = true; // Kalp'e dokununca self.down = function (x, y, obj) { if (!self.active) return; self.active = false; self.visible = false; // 1 can ekle if (typeof lives !== "undefined") { lives += 1; if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives); } // Kalbi yok et self.destroy(); }; return self; }); // 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; }); // Kapak (cover) class: farklı renkli kapaklar için var Kapak = Container.expand(function () { var self = Container.call(this); // Kapak indexine göre farklı asset kullan self.setKapakIndex = function (idx) { // Önce eski asset varsa kaldır if (self.kapakAsset) { self.removeChild(self.kapakAsset); } self.kapakIndex = idx; self.kapakAsset = self.attachAsset('kapak' + idx, { anchorX: 0.5, anchorY: 0.5 }); }; 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 kapakların birinin ortasında rastgele çıkar self.appear = function () { // Kapaklar globalde tanımlı if (typeof kapaklar !== "undefined" && kapaklar.length > 0) { var idx = Math.floor(Math.random() * kapaklar.length); var kapak = kapaklar[idx]; // Springtrap'i kapağın ortasına yerleştir self.x = kapak.x; self.y = kapak.y - kapak.height / 2 - self.height / 2 + 40; // Biraz kapağın üstünde çıksın } else { // Fallback: ortada göster self.x = 2048 / 2; self.y = 2732 / 2; } 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; // 'Üzerine tıkla' yazısını gizle if (typeof tapHint !== "undefined") tapHint.visible = 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 ****/ // Skor metni // Springtrap karakteri için bir kutu şekli (daha sonra görsel ile değiştirilebilir) // Jumpscare efekti için kırmızı bir kutu // Springtrap uzaklaştırma efekti için kısa bir ses // Jumpscare için bir ses efekti // 6 farklı renkli kapaklar // Mavi // Kırmızı // Yeşil // Sarı // Mor // Lacivert var scoreTxt = new Text2('0', { size: 120, fill: 0xFFF700 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // 6 farklı renkli kapakları ekle var kapaklar = []; var kapakCount = 6; var kapakSpacing = 120; // Aralıkları büyüttük var kapakWidth = 480; // Kapakları büyüttük var kapakHeight = 270; // Kapakları büyüttük // 2 satır, 3 sütun olacak şekilde ortala var cols = 3; var rows = 2; var totalWidth = cols * kapakWidth + (cols - 1) * kapakSpacing; var totalHeight = rows * kapakHeight + (rows - 1) * kapakSpacing; var startX = (2048 - totalWidth) / 2 + kapakWidth / 2; var startY = (2732 - totalHeight) / 2 + kapakHeight / 2; for (var i = 0; i < kapakCount; i++) { var kapak = new Kapak(); kapak.setKapakIndex(i); var row = Math.floor(i / cols); var col = i % cols; kapak.x = startX + col * (kapakWidth + kapakSpacing); kapak.y = startY + row * (kapakHeight + kapakSpacing); game.addChild(kapak); kapaklar.push(kapak); } // --- BAŞLAT MENÜSÜ EKLE --- var startMenuBg = LK.getAsset('centerCircle', { anchorX: 0, anchorY: 0, x: 0, y: 0, scaleX: 2048 / 100, scaleY: 2732 / 100 }); startMenuBg.tint = 0x0074D9; // mavi startMenuBg.alpha = 1; // Oyun ismi başlat menüsünde en üstte büyük olarak gösterilsin var startMenuGameName = new Text2('Springtrap Jumpscare', { size: 220, fill: 0xFFF700 }); startMenuGameName.anchor.set(0.5, 0.5); startMenuGameName.x = 2048 / 2; startMenuGameName.y = 2732 / 2 - 500; var startMenuText = new Text2('Başlamak için dokun', { size: 140, fill: 0xFFFFFF }); startMenuText.anchor.set(0.5, 0.5); startMenuText.x = 2048 / 2; startMenuText.y = 2732 / 2 - 100; // (İsteğe bağlı: eski başlık metni kaldırıldı, çünkü yukarıda büyük başlık var) // var startMenuTitle = new Text2('Springtrap Jumpscare', { // size: 180, // fill: 0xFFF700 // }); // startMenuTitle.anchor.set(0.5, 0.5); // startMenuTitle.x = 2048 / 2; // startMenuTitle.y = 2732 / 2 - 350; var startMenu = new Container(); startMenu.addChild(startMenuBg); startMenu.addChild(startMenuGameName); startMenu.addChild(startMenuText); // En yüksek skor metni var highScore = storage.highScore || 0; var highScoreTxt = new Text2('En Yüksek Skor: ' + highScore, { size: 110, fill: 0xffffff }); highScoreTxt.anchor.set(0.5, 0.5); highScoreTxt.x = 2048 / 2; highScoreTxt.y = 2732 / 2 + 120; startMenu.addChild(highScoreTxt); game.addChild(startMenu); var gameStarted = false; // 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 = 900; // Springtrap'in tekrar çıkma aralığı (ms) var springtrapDelayMin = 700; var springtrapDelayMax = 1600; // Springtrap zamanlayıcıları var springtrapTimeout = null; var springtrapAppearTimeout = null; // Can (hak) sayısı ve metni var lives = 1; // Sağ üstte kalp ve sayaç için bir container var livesContainer = new Container(); // Kalp simgesi (küçük boyut, sağ üstte) var livesIcon = LK.getAsset('heart', { anchorX: 1, anchorY: 0, scaleX: 0.7, scaleY: 0.7, x: 0, y: 0 }); livesContainer.addChild(livesIcon); // Sayaç metni (kalbin solunda) var livesTxt = new Text2("x" + lives, { size: 110, fill: 0xff3b3b }); livesTxt.anchor.set(1, 0.5); livesTxt.x = -20; livesTxt.y = livesIcon.height / 2 - 10; livesContainer.addChild(livesTxt); // Sağ üst köşeye yerleştir (biraz içeri, menüyle çakışmasın) livesContainer.x = 2048 - 40; livesContainer.y = 40; LK.gui.topRight.addChild(livesContainer); // Aktif kalp referansı var activeHeart = null; // Skoru sıfırla LK.setScore(0); scoreTxt.setText(0); // --- Springtrap gelince 'üzerine tıkla' yazısı --- var tapHint = new Text2('Üzerine tıkla!', { size: 120, fill: 0xFFFFFF }); tapHint.anchor.set(0.5, 0.5); tapHint.x = 2048 / 2; tapHint.y = 2732 / 2 + 400; tapHint.visible = false; game.addChild(tapHint); // Springtrap'i ekranda göster function showSpringtrap() { springtrap.appear(); // 'Üzerine tıkla' yazısını göster tapHint.visible = true; // %30 şansla ekranda bir kalp çıkar if (activeHeart && activeHeart.parent) { activeHeart.destroy(); activeHeart = null; } if (Math.random() < 0.3) { activeHeart = new Heart(); // Rastgele bir konumda (kapakların dışında, ekranın ortasında bir yerde) var margin = 200; var minX = margin; var maxX = 2048 - margin; var minY = margin + 200; var maxY = 2732 - margin - 200; activeHeart.x = minX + Math.random() * (maxX - minX); activeHeart.y = minY + Math.random() * (maxY - minY); game.addChild(activeHeart); } // Eğer oyuncu zamanında dokunmazsa jumpscare başlat springtrapTimeout = LK.setTimeout(function () { if (springtrap.active) { triggerJumpscare(); } // Kalp varsa yok et if (activeHeart && activeHeart.parent) { activeHeart.destroy(); activeHeart = null; } }, 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() { // Eğer fazladan can varsa jumpscare'i engelle ve canı azalt if (typeof lives !== "undefined" && lives > 1) { lives -= 1; if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives); // Springtrap'i kaybet, yeni springtrap gelsin springtrap.active = false; springtrap.visible = false; if (tapHint) tapHint.visible = false; scheduleNextSpringtrap(); // Kalp varsa yok et if (activeHeart && activeHeart.parent) { activeHeart.destroy(); activeHeart = null; } return; } springtrap.active = false; springtrap.visible = false; jumpscare.start(); // Jumpscare sesi çal LK.getSound('jumpscare_sfx').play(); // Jumpscare sırasında müziği durdur LK.stopMusic(); // Kısa gecikmeden sonra oyun biter LK.setTimeout(function () { LK.showGameOver(); }, 900); } // Oyun başladığında ilk Springtrap'i göster // scheduleNextSpringtrap(); // Oyuncu başlat menüsünde dokunana kadar oyun başlamasın // Oyun bittiğinde zamanlayıcıları temizle game.onDestroy = function () { if (springtrapTimeout) LK.clearTimeout(springtrapTimeout); if (springtrapAppearTimeout) LK.clearTimeout(springtrapAppearTimeout); // Oyun bittiğinde başlat menüsünü tekrar göster if (startMenu) startMenu.visible = true; gameStarted = false; if (tapHint) tapHint.visible = false; // Oyun bitince müziği durdur LK.stopMusic(); // Skor kaydı ve gösterimi var currentScore = LK.getScore(); if (!storage.highScore || currentScore > storage.highScore) { storage.highScore = currentScore; } if (typeof highScoreTxt !== "undefined") { highScoreTxt.setText('En Yüksek Skor: ' + (storage.highScore || 0)); } // Canı sıfırla lives = 1; if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives); if (activeHeart && activeHeart.parent) { activeHeart.destroy(); activeHeart = null; } }; // Oyun açıldığında arka plan müziğini başlat LK.playMusic('backraund'); // 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) { // Eğer oyun başlamadıysa ve başlat menüsü açıksa, başlat if (!gameStarted && startMenu && startMenu.visible !== false) { gameStarted = true; startMenu.visible = false; LK.setScore(0); scoreTxt.setText(0); // Canı sıfırla lives = 1; if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives); if (activeHeart && activeHeart.parent) { activeHeart.destroy(); activeHeart = null; } scheduleNextSpringtrap(); return; } // 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
@@ -25,9 +25,9 @@
self.visible = false;
// 1 can ekle
if (typeof lives !== "undefined") {
lives += 1;
- if (typeof livesTxt !== "undefined") livesTxt.setText("Can: " + lives);
+ if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
}
// Kalbi yok et
self.destroy();
};
@@ -276,16 +276,33 @@
var springtrapTimeout = null;
var springtrapAppearTimeout = null;
// Can (hak) sayısı ve metni
var lives = 1;
-var livesTxt = new Text2("Can: " + lives, {
+// Sağ üstte kalp ve sayaç için bir container
+var livesContainer = new Container();
+// Kalp simgesi (küçük boyut, sağ üstte)
+var livesIcon = LK.getAsset('heart', {
+ anchorX: 1,
+ anchorY: 0,
+ scaleX: 0.7,
+ scaleY: 0.7,
+ x: 0,
+ y: 0
+});
+livesContainer.addChild(livesIcon);
+// Sayaç metni (kalbin solunda)
+var livesTxt = new Text2("x" + lives, {
size: 110,
fill: 0xff3b3b
});
-livesTxt.anchor.set(0.5, 0.5);
-livesTxt.x = 2048 / 2;
-livesTxt.y = 2732 / 2 + 250;
-LK.gui.top.addChild(livesTxt);
+livesTxt.anchor.set(1, 0.5);
+livesTxt.x = -20;
+livesTxt.y = livesIcon.height / 2 - 10;
+livesContainer.addChild(livesTxt);
+// Sağ üst köşeye yerleştir (biraz içeri, menüyle çakışmasın)
+livesContainer.x = 2048 - 40;
+livesContainer.y = 40;
+LK.gui.topRight.addChild(livesContainer);
// Aktif kalp referansı
var activeHeart = null;
// Skoru sıfırla
LK.setScore(0);
@@ -345,9 +362,9 @@
function triggerJumpscare() {
// Eğer fazladan can varsa jumpscare'i engelle ve canı azalt
if (typeof lives !== "undefined" && lives > 1) {
lives -= 1;
- if (typeof livesTxt !== "undefined") livesTxt.setText("Can: " + lives);
+ if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
// Springtrap'i kaybet, yeni springtrap gelsin
springtrap.active = false;
springtrap.visible = false;
if (tapHint) tapHint.visible = false;
@@ -393,9 +410,9 @@
highScoreTxt.setText('En Yüksek Skor: ' + (storage.highScore || 0));
}
// Canı sıfırla
lives = 1;
- if (typeof livesTxt !== "undefined") livesTxt.setText("Can: " + lives);
+ if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
@@ -415,9 +432,9 @@
LK.setScore(0);
scoreTxt.setText(0);
// Canı sıfırla
lives = 1;
- if (typeof livesTxt !== "undefined") livesTxt.setText("Can: " + lives);
+ if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}