User prompt
Engellere çarpınca oyunu kaybedelim
User prompt
Arka plan sanki havada bulutlardaymışız gibi olsun
User prompt
Arka plan su deseni ve mavi olsun
Code edit (1 edits merged)
Please save this source code
User prompt
Hatayı düzeltirmsin ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'storage.get is not a function' in or related to this line: 'var highScore = storage.get('highScore') || 0;' Line Number: 107 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'storage.getItem is not a function' in or related to this line: 'var highScore = storage.getItem('highScore') || 0;' Line Number: 107
User prompt
Please fix the bug: 'storage.get is not a function' in or related to this line: 'var highScore = storage.get('highScore') || 0;' Line Number: 107
User prompt
Yaptığımız en yüksek skor normal skorun altında yazsın
User prompt
Skor attıkça düşmanlar daha güçlensin ve daha fazla gelsin
User prompt
Her 20 düşman öldürdüğümüzde 1 kerelik süper güç elde edelim
Code edit (1 edits merged)
Please save this source code
User prompt
Taktik Savaşçı: Mobil Arena
Initial prompt
Bir savaş oyunu yapacağız. Bu oyun mobil kontrollere sahip olacak. Karakerimiz, düşmanlarla savaşacak taktiksel savaş için engeller olacak. Her 10 düşman öldürdüğümüzde silahımız güçlenecek.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletAsset = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.radius = bulletAsset.width / 2; self.speed = -18; self.update = function () { self.y += self.speed; }; return self; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyAsset = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.radius = enemyAsset.width / 2; self.speed = 3 + Math.random() * 2; // Speed increases with waves self.update = function () { self.y += self.speed; }; return self; }); // Hero class var Hero = Container.expand(function () { var self = Container.call(this); var heroAsset = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.radius = heroAsset.width / 2; self.weaponLevel = 1; // 1: single, 2: double, 3: triple, etc. // For touch drag self.down = function (x, y, obj) {}; self.up = function (x, y, obj) {}; self.move = function (x, y, obj) {}; return self; }); // Obstacle class var Obstacle = Container.expand(function () { var self = Container.call(this); var obsAsset = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.radius = obsAsset.width / 2; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xcce6ff // Açık gökyüzü mavisi, bulutlu bir hava efekti için }); /**** * Game Code ****/ // --- Game Variables --- // --- Asset Initialization --- var hero; var enemies = []; var bullets = []; var obstacles = []; var dragNode = null; var lastScore = 0; var kills = 0; var wave = 1; var spawnTimer = 0; var weaponLevel = 1; var scoreTxt; // --- Super Power State --- var superPowerAvailable = 0; // Number of super powers available var superPowerActive = false; var superPowerTimer = 0; // --- UI --- scoreTxt = new Text2('0', { size: 120, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // High Score UI var highScore = storage.highScore || 0; var highScoreTxt = new Text2('En Yüksek: ' + highScore, { size: 70, fill: 0xFFD700 }); highScoreTxt.anchor.set(0.5, 0); highScoreTxt.y = scoreTxt.height + 10; LK.gui.top.addChild(highScoreTxt); // --- Place Obstacles --- function placeObstacles() { // Clear old for (var i = 0; i < obstacles.length; i++) { obstacles[i].destroy(); } obstacles = []; // Place 3 obstacles in the arena, not blocking the hero spawn var obsY = [900, 1500, 2100]; for (var i = 0; i < 3; i++) { var obs = new Obstacle(); obs.x = 2048 / 2 + (i - 1) * 500; obs.y = obsY[i]; obstacles.push(obs); game.addChild(obs); } } // --- Spawn Hero --- function spawnHero() { hero = new Hero(); hero.x = 2048 / 2; hero.y = 2732 - 300; game.addChild(hero); weaponLevel = 1; hero.weaponLevel = 1; } // --- Spawn Enemy --- function spawnEnemy() { var enemy = new Enemy(); enemy.x = 300 + Math.random() * (2048 - 600); enemy.y = -120; // Increase enemy speed as score increases var baseSpeed = 3 + Math.random() * 2; var speedBonus = Math.floor(LK.getScore() / 20) * 0.8; // +0.8 per 20 score enemy.speed = baseSpeed + speedBonus; enemies.push(enemy); game.addChild(enemy); } // --- Fire Bullets --- function fireBullets() { var bulletCount = weaponLevel; var spread = 60; // px between bullets var baseX = hero.x - (bulletCount - 1) * spread / 2; for (var i = 0; i < bulletCount; i++) { var bullet = new Bullet(); bullet.x = baseX + i * spread; bullet.y = hero.y - hero.radius - 20; bullets.push(bullet); game.addChild(bullet); } } // --- Touch Controls --- function handleMove(x, y, obj) { if (dragNode) { // Clamp hero inside arena var minX = hero.radius + 20; var maxX = 2048 - hero.radius - 20; var minY = hero.radius + 200; var maxY = 2732 - hero.radius - 20; dragNode.x = Math.max(minX, Math.min(maxX, x)); dragNode.y = Math.max(minY, Math.min(maxY, y)); } } game.move = handleMove; game.down = function (x, y, obj) { // Only drag if touch is on hero var dx = x - hero.x; var dy = y - hero.y; if (dx * dx + dy * dy < hero.radius * hero.radius * 1.2) { // --- Super Power: Double tap to activate --- if (!game._lastTapTime) { game._lastTapTime = 0; } var now = Date.now(); if (now - game._lastTapTime < 350 && superPowerAvailable > 0 && !superPowerActive) { // Activate super power: clear all enemies superPowerActive = true; superPowerAvailable--; superPowerTimer = 30; // 0.5 seconds of effect (optional visual) // Destroy all enemies instantly for (var i = enemies.length - 1; i >= 0; i--) { enemies[i].destroy(); enemies.splice(i, 1); } LK.effects.flashScreen(0x3399ff, 600); } game._lastTapTime = now; dragNode = hero; handleMove(x, y, obj); } }; game.up = function (x, y, obj) { dragNode = null; }; // --- Game Update --- game.update = function () { // --- Bullets --- for (var i = bullets.length - 1; i >= 0; i--) { var b = bullets[i]; b.update(); // Remove offscreen if (b.y < -50) { b.destroy(); bullets.splice(i, 1); continue; } // Collide with obstacles var hitObs = false; for (var j = 0; j < obstacles.length; j++) { if (b.intersects(obstacles[j])) { b.destroy(); bullets.splice(i, 1); hitObs = true; break; } } if (hitObs) { continue; } // Collide with enemies for (var j = enemies.length - 1; j >= 0; j--) { if (b.intersects(enemies[j])) { // Destroy both b.destroy(); bullets.splice(i, 1); enemies[j].destroy(); enemies.splice(j, 1); kills++; LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); // High score update if (LK.getScore() > highScore) { highScore = LK.getScore(); storage.highScore = highScore; highScoreTxt.setText('En Yüksek: ' + highScore); } // Weapon upgrade if (kills % 10 === 0) { weaponLevel++; hero.weaponLevel = weaponLevel; LK.effects.flashObject(hero, 0x00ff00, 600); } // Super Power gain every 20 kills if (kills % 20 === 0) { superPowerAvailable++; // Optional: flash hero blue to indicate super power gained LK.effects.flashObject(hero, 0x3399ff, 800); } break; } } } // --- Enemies --- for (var i = enemies.length - 1; i >= 0; i--) { var e = enemies[i]; e.update(); // Collide with obstacles var hitObs = false; for (var j = 0; j < obstacles.length; j++) { if (e.intersects(obstacles[j])) { // Bounce down a bit and change x direction e.y -= 30; e.x += (Math.random() - 0.5) * 200; hitObs = true; break; } } if (hitObs) { continue; } // Collide with hero if (e.intersects(hero)) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } // Remove offscreen if (e.y > 2732 + 100) { e.destroy(); enemies.splice(i, 1); } } // --- Hero collides with obstacles (game over) --- for (var i = 0; i < obstacles.length; i++) { if (hero && hero.intersects(obstacles[i])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } // --- Enemy Spawning --- // Difficulty scaling: more enemies and faster as score increases spawnTimer++; // Increase spawn rate as score increases (minimum interval 12) var difficulty = Math.floor(LK.getScore() / 10); var spawnInterval = Math.max(12, 90 - wave * 5 - difficulty * 4); if (spawnTimer >= spawnInterval) { // Spawn more enemies at once as score increases var extraEnemies = 1 + Math.floor(LK.getScore() / 25); for (var s = 0; s < extraEnemies; s++) { spawnEnemy(); } spawnTimer = 0; } // Increase wave every 15 kills wave = 1 + Math.floor(kills / 15); // --- Fire Bullets (auto fire) --- if (LK.ticks % 18 === 0) { fireBullets(); } ; // --- Super Power Timer --- if (superPowerActive) { superPowerTimer--; if (superPowerTimer <= 0) { superPowerActive = false; } } }; // --- Game Start --- placeObstacles(); spawnHero(); LK.setScore(0); scoreTxt.setText(0); // Reset high score UI (in case storage changed externally) highScore = storage.highScore || 0; highScoreTxt.setText('En Yüksek: ' + highScore); kills = 0; wave = 1; weaponLevel = 1; enemies = []; bullets = []; spawnTimer = 0; superPowerAvailable = 0; superPowerActive = false; superPowerTimer = 0; ;
===================================================================
--- original.js
+++ change.js
@@ -285,8 +285,16 @@
e.destroy();
enemies.splice(i, 1);
}
}
+ // --- Hero collides with obstacles (game over) ---
+ for (var i = 0; i < obstacles.length; i++) {
+ if (hero && hero.intersects(obstacles[i])) {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
// --- Enemy Spawning ---
// Difficulty scaling: more enemies and faster as score increases
spawnTimer++;
// Increase spawn rate as score increases (minimum interval 12)
Gerçek mermiye benzeyen mermi yap. In-Game asset. 2d. High contrast. No shadows
Düşman angry birdse benzesin. In-Game asset. 2d. High contrast. No shadows
Yeşil angry birds olsun. In-Game asset. 2d. High contrast. No shadows
Bulut deseni olsun ve parlak beyaz olsun. In-Game asset. 2d. High contrast. No shadows