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;
// Aktif kalp referansı
var activeHeart = null;
// Birden fazla kalp için dizi
var activeHearts = [];
// Aktif buton referansı
var activeButton = 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;
// İlk 10 skor için birden fazla kalp çıkar
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
}
activeHearts = [];
if (LK.getScore() < 10) {
// 2-4 arası kalp çıkar (her seferinde farklı sayıda)
var heartCount = 2 + Math.floor(Math.random() * 3); // 2,3,4
var margin = 200;
var minX = margin;
var maxX = 2048 - margin;
var minY = margin + 200;
var maxY = 2732 - margin - 200;
for (var i = 0; i < heartCount; i++) {
var heart = new Heart();
// Rastgele bir konumda (kapakların dışında, ekranın ortasında bir yerde)
heart.x = minX + Math.random() * (maxX - minX);
heart.y = minY + Math.random() * (maxY - minY);
game.addChild(heart);
activeHearts.push(heart);
}
} else {
// 10 ve üstü skor için eski kalp varsa yok et, tekli kalp çıkarma (önceki davranış)
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (Math.random() < 0.3) {
activeHeart = new Heart();
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);
}
}
// --- RASTGELE BUTON EKLEME ---
// Sadece skor 20 veya daha fazlaysa buton gelsin
if (LK.getScore() >= 20) {
// Önce eski buton varsa kaldır
if (typeof activeButton !== "undefined" && activeButton && activeButton.parent) {
activeButton.destroy();
activeButton = null;
}
var buttonWidth = 420;
var buttonHeight = 180;
var buttonMargin = 120;
var buttonMinX = buttonMargin + buttonWidth / 2;
var buttonMaxX = 2048 - buttonMargin - buttonWidth / 2;
var buttonMinY = buttonMargin + buttonHeight / 2;
var buttonMaxY = 2732 - buttonMargin - buttonHeight / 2;
var buttonX = buttonMinX + Math.random() * (buttonMaxX - buttonMinX);
var buttonY = buttonMinY + Math.random() * (buttonMaxY - buttonMinY);
activeButton = new Container();
var btnBg = LK.getAsset('centerCircle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: buttonWidth / 100,
scaleY: buttonHeight / 100,
x: 0,
y: 0
});
btnBg.tint = 0x00c853;
activeButton.addChild(btnBg);
var btnText = new Text2('BUTONA BAS!', {
size: 90,
fill: 0xffffff
});
btnText.anchor.set(0.5, 0.5);
btnText.x = 0;
btnText.y = 0;
activeButton.addChild(btnText);
activeButton.x = buttonX;
activeButton.y = buttonY;
activeButton.visible = true;
activeButton.active = true;
game.addChild(activeButton);
// Butona basınca butonu yok et, bir sonraki springtrap'e geç
activeButton.down = function (x, y, obj) {
if (!activeButton.active) return;
activeButton.active = false;
activeButton.visible = false;
activeButton.destroy();
activeButton = null;
// Springtrap'i de yok et, yeni springtrap gelsin
if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
if (springtrap.active) {
springtrap.active = false;
springtrap.visible = false;
}
if (tapHint) tapHint.visible = false;
scheduleNextSpringtrap();
};
// Eğer oyuncu zamanında dokunmazsa jumpscare başlat
springtrapTimeout = LK.setTimeout(function () {
// Eğer butona basılmadıysa ve aktifse, jumpscare!
if (typeof activeButton !== "undefined" && activeButton && activeButton.active) {
activeButton.active = false;
activeButton.visible = false;
activeButton.destroy();
activeButton = null;
// Butona basılmadıysa jumpscare başlat
triggerJumpscare();
return;
}
// Eğer springtrap aktifse ve butona basılmışsa, yine jumpscare başlat
if (springtrap.active) {
triggerJumpscare();
}
// Kalp varsa yok et
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
}, springtrapTime);
} else {
// Skor 20'den küçükse, eski buton varsa kaldır ve yeni buton oluşturma
if (typeof activeButton !== "undefined" && activeButton && activeButton.parent) {
activeButton.destroy();
activeButton = null;
}
// Springtrap için timeout yine de başlatılsın (buton yokken de springtrap süresi dolunca jumpscare olabilsin)
springtrapTimeout = LK.setTimeout(function () {
// Sadece springtrap aktifse jumpscare başlat
if (springtrap.active) {
triggerJumpscare();
}
// Kalp varsa yok et
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
}, 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;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
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 ve jumpscare ekranda gösterilir
LK.setTimeout(function () {
jumpscare.visible = false; // Jumpscare'i gizle (oyun bitince)
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;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
// Buton varsa yok et
if (typeof activeButton !== "undefined" && activeButton && activeButton.parent) {
activeButton.destroy();
activeButton = 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;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
scheduleNextSpringtrap();
return;
}
// Önce butona tıklanıp tıklanmadığını kontrol et
if (typeof activeButton !== "undefined" && activeButton && activeButton.active && activeButton.visible) {
// Koordinatları butonun lokaline çevir
var localBtn = activeButton.toLocal(game.toGlobal({
x: x,
y: y
}));
var btnBg = activeButton.children[0];
if (localBtn.x >= -btnBg.width / 2 && localBtn.x <= btnBg.width / 2 && localBtn.y >= -btnBg.height / 2 && localBtn.y <= btnBg.height / 2) {
if (typeof activeButton.down === "function") {
activeButton.down(x, y, obj);
}
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
@@ -267,9 +267,9 @@
// Jumpscare efekti
var jumpscare = new Jumpscare();
game.addChild(jumpscare);
// Springtrap'in ekranda kalma süresi (ms)
-var springtrapTime = 500;
+var springtrapTime = 900;
// Springtrap'in tekrar çıkma aralığı (ms)
var springtrapDelayMin = 700;
var springtrapDelayMax = 1600;
// Springtrap zamanlayıcıları