User prompt
kodlar 5 basamaklı olsun
User prompt
bir başlama ekranı ekleyelim
User prompt
arka ekran için ayrı bir asset oluşru
User prompt
aralarındaki boşluğu arttır ve AI daha yavaş hacklesin
User prompt
aralarındaki boşluğu arttır
User prompt
3 tane sol yukarıdan aşağı 3 tane sağ yukarıdan aşağı
User prompt
uygulamalar ortada sıralı şekilde 6 tane olsun
User prompt
alt tarafta iki tane daha uygulama olsun hava durumu ve tok tik
User prompt
AI nın score tablosu biraz daha solda olsun
User prompt
her uygulama için ayrı bir asset oluştur
User prompt
AI nereyi alıyor göstermek için AI nın aldığı yerin üstünde bir işaret çıksın
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'length')' in or related to this line: 'self.icon = self.attachAsset(self.iconId, {' Line Number: 30
Code edit (1 edits merged)
Please save this source code
User prompt
App Hackers: Dijital Savaş
Initial prompt
Bir telefonun içindeki uygulamalar arasında geçen bir strateji oyunu yap. Oyuncu, rakip bir yapay zekadan önce telefonu hacklemeye çalışıyor. Uygulamalar (galeri, mesajlar, ayarlar, oyunlar) farklı mini oyunlar içeriyor. Oyuncu, doğru kod parçalarını bu uygulamalara göndererek sistemi ele geçirmeye çalışıyor. Yapay zeka da aynı anda saldırı yapıyor, bu yüzden zaman ve hamle sınırlı olmalı. Stil olarak dijital, modern bir arayüz kullanılsın. Uygulamayı hacklemek için uygulamaya tıklayalım bir arayüz açılısn üstte sayılar yazsın o saylıarı hızlıca yazınca o alanı alalın
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Uygulama ikonları için temel sınıf var AppIcon = Container.expand(function () { var self = Container.call(this); // Varsayılan değerler, dışarıdan atanmazsa hata engellenir self.iconId = typeof self.iconId !== "undefined" ? self.iconId : "galleryIcon"; self.iconColor = typeof self.iconColor !== "undefined" ? self.iconColor : 0xffffff; self.appName = typeof self.appName !== "undefined" ? self.appName : ""; // Uygulama kutusu var box = self.attachAsset('appBox', { width: 320, height: 320, color: 0x222244, shape: 'box', anchorX: 0.5, anchorY: 0.5 }); self.box = box; self.addChild(box); // Uygulama simgesi (farklı renkler) self.icon = self.attachAsset(self.iconId, { width: 180, height: 180, color: self.iconColor, shape: 'ellipse', anchorX: 0.5, anchorY: 0.5, y: 0 }); self.addChild(self.icon); // Uygulama adı self.label = new Text2(self.appName, { size: 60, fill: 0xB8E0FF }); self.label.anchor.set(0.5, 0); self.label.y = 110; self.addChild(self.label); // Hacklenme durumu self.hacked = false; self.aiHacked = false; // AI işareti (başta görünmez) self.aiMark = self.attachAsset('aiMark', { anchorX: 0.5, anchorY: 1, y: -120 }); self.aiMark.visible = false; self.addChild(self.aiMark); // Hack animasyonu self.flash = function (color) { tween(self, { alpha: 0.5 }, { duration: 100, onFinish: function onFinish() { tween(self, { alpha: 1 }, { duration: 200 }); } }); }; // AI işareti güncelleme fonksiyonu self.updateAIMark = function () { self.aiMark.visible = !!self.aiHacked; }; return self; }); // Mini oyun ekranı var MiniGame = Container.expand(function () { var self = Container.call(this); // Arkaplan var bg = self.attachAsset('miniGameBg', { width: 1200, height: 900, color: 0x181c2a, shape: 'box', anchorX: 0.5, anchorY: 0.5 }); // Rastgele sayı dizisi self.code = []; self.codeLen = 4; self.input = ''; self.active = false; self.codeText = new Text2('', { size: 120, fill: "#fff" }); self.codeText.anchor.set(0.5, 0.5); self.codeText.y = -120; self.addChild(self.codeText); self.inputText = new Text2('', { size: 100, fill: 0x00FF99 }); self.inputText.anchor.set(0.5, 0.5); self.inputText.y = 60; self.addChild(self.inputText); // Kapatma butonu self.closeBtn = self.attachAsset('closeBtn', { width: 80, height: 80, color: 0xff4444, shape: 'ellipse', anchorX: 0.5, anchorY: 0.5, x: 540, y: -400 }); self.closeBtn.interactive = true; self.closeBtn.down = function () { self.hide(); }; self.show = function (codeLen) { self.codeLen = codeLen || 4; self.code = []; for (var i = 0; i < self.codeLen; i++) { self.code.push(Math.floor(Math.random() * 10)); } self.input = ''; self.codeText.setText(self.code.join(' ')); self.inputText.setText(''); self.visible = true; self.active = true; }; self.hide = function () { self.visible = false; self.active = false; }; self.onInput = function (num) { if (!self.active) return; if (self.input.length >= self.codeLen) return; self.input += num; self.inputText.setText(self.input); if (self.input.length === self.codeLen) { if (self.input === self.code.join('')) { self.active = false; if (self.onSuccess) self.onSuccess(); } else { self.inputText.setText('Yanlış!'); tween(self.inputText, { alpha: 0 }, { duration: 200, onFinish: function onFinish() { self.inputText.alpha = 1; self.input = ''; self.inputText.setText(''); } }); } } }; return self; }); // Rakam tuş takımı var NumPad = Container.expand(function () { var self = Container.call(this); self.buttons = []; var btnSize = 180; var margin = 30; var startX = -btnSize - margin; var startY = -btnSize - margin; for (var i = 1; i <= 9; i++) { var btn = self.attachAsset('numBtn' + i, { width: btnSize, height: btnSize, color: 0x2a3a4a, shape: 'ellipse', anchorX: 0.5, anchorY: 0.5, x: startX + (i - 1) % 3 * (btnSize + margin), y: startY + Math.floor((i - 1) / 3) * (btnSize + margin) }); btn.num = i; btn.interactive = true; btn.down = function (x, y, obj) { if (self.onNum) self.onNum(this.num); }; var txt = new Text2('' + i, { size: 80, fill: "#fff" }); txt.anchor.set(0.5, 0.5); btn.addChild(txt); self.buttons.push(btn); } // 0 tuşu var btn0 = self.attachAsset('numBtn0', { width: btnSize, height: btnSize, color: 0x2a3a4a, shape: 'ellipse', anchorX: 0.5, anchorY: 0.5, x: startX + btnSize + margin, y: startY + 3 * (btnSize + margin) }); btn0.num = 0; btn0.interactive = true; btn0.down = function (x, y, obj) { if (self.onNum) self.onNum(this.num); }; var txt0 = new Text2('0', { size: 80, fill: "#fff" }); txt0.anchor.set(0.5, 0.5); btn0.addChild(txt0); self.buttons.push(btn0); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x0a0c18 }); /**** * Game Code ****/ // AI'nin hacklediği uygulamanın üstünde gösterilecek işaret // Uygulama tanımları var appDefs = [{ appName: "Galeri", iconId: "galleryIcon", iconColor: 0x6ec6ff }, { appName: "Mesajlar", iconId: "msgIcon", iconColor: 0xffb347 }, { appName: "Ayarlar", iconId: "settingsIcon", iconColor: 0x8aff80 }, { appName: "Oyunlar", iconId: "gamesIcon", iconColor: 0xff6e9c }]; // Uygulama ikonları var appIcons = []; var appGridCols = 2; var appGridRows = 2; var appGridStartX = 2048 / 2 - 400; var appGridStartY = 900; var appGridDX = 800; var appGridDY = 600; // AI hack ilerlemesi var aiProgress = [false, false, false, false]; // Oyuncu hack ilerlemesi var playerProgress = [false, false, false, false]; // Oyun durumu var currentMiniGame = null; var currentAppIndex = null; var aiTimer = null; var aiSpeed = 2200; // ms, AI'nin bir uygulamayı hacklemesi için gereken süre var gameEnded = false; // Skor göstergesi var playerScoreTxt = new Text2('0', { size: 90, fill: 0x00FF99 }); playerScoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(playerScoreTxt); var aiScoreTxt = new Text2('0', { size: 90, fill: 0xFF4444 }); aiScoreTxt.anchor.set(0.5, 0); LK.gui.topRight.addChild(aiScoreTxt); // Uygulama ikonlarını oluştur for (var i = 0; i < appDefs.length; i++) { var def = appDefs[i]; var icon = new AppIcon(); icon.iconId = def.iconId; icon.iconColor = def.iconColor; icon.appName = def.appName; icon.x = appGridStartX + i % appGridCols * appGridDX; icon.y = appGridStartY + Math.floor(i / appGridCols) * appGridDY; icon.interactive = true; icon.appIndex = i; icon.down = function (x, y, obj) { if (gameEnded) return; var idx = this.appIndex; if (playerProgress[idx] || aiProgress[idx]) return; openMiniGame(idx); }; appIcons.push(icon); game.addChild(icon); } // Mini oyun ekranı ve tuş takımı var miniGame = new MiniGame(); miniGame.x = 2048 / 2; miniGame.y = 2732 / 2; miniGame.visible = false; game.addChild(miniGame); var numPad = new NumPad(); numPad.x = 2048 / 2; numPad.y = 2732 / 2 + 400; numPad.visible = false; game.addChild(numPad); // Mini oyun aç function openMiniGame(appIdx) { currentAppIndex = appIdx; miniGame.show(4 + appIdx); // Zorluk arttıkça kod uzuyor numPad.visible = true; miniGame.visible = true; miniGame.onSuccess = function () { playerProgress[appIdx] = true; appIcons[appIdx].hacked = true; appIcons[appIdx].flash(0x00ff99); updateScores(); closeMiniGame(); checkGameEnd(); }; } // Mini oyun kapat function closeMiniGame() { miniGame.hide(); numPad.visible = false; currentAppIndex = null; } // NumPad input numPad.onNum = function (num) { if (miniGame.active) { miniGame.onInput('' + num); } }; // Skorları güncelle function updateScores() { var playerScore = 0, aiScore = 0; for (var i = 0; i < 4; i++) { if (playerProgress[i]) playerScore++; if (aiProgress[i]) aiScore++; } playerScoreTxt.setText('SEN: ' + playerScore); aiScoreTxt.setText('AI: ' + aiScore); } // AI hack ilerlemesi function startAI() { if (aiTimer) LK.clearInterval(aiTimer); aiTimer = LK.setInterval(function () { if (gameEnded) { LK.clearInterval(aiTimer); return; } // AI henüz hacklemediği bir uygulama seçsin var available = []; for (var i = 0; i < 4; i++) { if (!aiProgress[i] && !playerProgress[i]) available.push(i); } if (available.length === 0) return; var pick = available[Math.floor(Math.random() * available.length)]; aiProgress[pick] = true; appIcons[pick].aiHacked = true; appIcons[pick].flash(0xff4444); updateScores(); checkGameEnd(); }, aiSpeed); } // Oyun bitiş kontrolü function checkGameEnd() { var playerScore = 0, aiScore = 0; for (var i = 0; i < 4; i++) { if (playerProgress[i]) playerScore++; if (aiProgress[i]) aiScore++; } if (playerScore + aiScore === 4) { gameEnded = true; if (playerScore > aiScore) { LK.showYouWin(); } else if (aiScore > playerScore) { LK.showGameOver(); } else { LK.showGameOver(); } } } // Oyun başlat function resetGame() { for (var i = 0; i < 4; i++) { playerProgress[i] = false; aiProgress[i] = false; appIcons[i].hacked = false; appIcons[i].aiHacked = false; appIcons[i].alpha = 1; } gameEnded = false; updateScores(); startAI(); closeMiniGame(); } resetGame(); // Oyun güncellemesi game.update = function () { // Uygulama ikonlarının hack durumunu göster for (var i = 0; i < appIcons.length; i++) { var icon = appIcons[i]; if (icon.hacked) { icon.box.tint = 0x00ff99; icon.label.setText(icon.appName + "\n(HACKLENDİ)"); } else if (icon.aiHacked) { icon.box.tint = 0xff4444; icon.label.setText(icon.appName + "\n(AI)"); } else { icon.box.tint = 0x222244; icon.label.setText(icon.appName); } // AI işareti güncelle if (icon.updateAIMark) icon.updateAIMark(); } }; // Oyun resetlenince tekrar başlat LK.on('reset', function () { resetGame(); }); // Ekran dışı tıklama ile mini oyunu kapatma game.down = function (x, y, obj) { if (miniGame.visible && !miniGame.active) { closeMiniGame(); } }; // Not: Assetler engine tarafından otomatik oluşturulacak: // - appBox: kutu // - galleryIcon, msgIcon, settingsIcon, gamesIcon: farklı renkli elipsler // - miniGameBg: mini oyun arka planı // - closeBtn: kırmızı daire // - numBtn0-9: rakam tuşları (elips)
===================================================================
--- original.js
+++ change.js
@@ -45,8 +45,16 @@
self.addChild(self.label);
// Hacklenme durumu
self.hacked = false;
self.aiHacked = false;
+ // AI işareti (başta görünmez)
+ self.aiMark = self.attachAsset('aiMark', {
+ anchorX: 0.5,
+ anchorY: 1,
+ y: -120
+ });
+ self.aiMark.visible = false;
+ self.addChild(self.aiMark);
// Hack animasyonu
self.flash = function (color) {
tween(self, {
alpha: 0.5
@@ -60,8 +68,12 @@
});
}
});
};
+ // AI işareti güncelleme fonksiyonu
+ self.updateAIMark = function () {
+ self.aiMark.visible = !!self.aiHacked;
+ };
return self;
});
// Mini oyun ekranı
var MiniGame = Container.expand(function () {
@@ -218,8 +230,9 @@
/****
* Game Code
****/
+// AI'nin hacklediği uygulamanın üstünde gösterilecek işaret
// Uygulama tanımları
var appDefs = [{
appName: "Galeri",
iconId: "galleryIcon",
@@ -407,8 +420,10 @@
} else {
icon.box.tint = 0x222244;
icon.label.setText(icon.appName);
}
+ // AI işareti güncelle
+ if (icon.updateAIMark) icon.updateAIMark();
}
};
// Oyun resetlenince tekrar başlat
LK.on('reset', function () {