User prompt
The trail should disappear after 700 ms BUT the tail should stop spawning 2.25 seconds after the star spawned
User prompt
The trail shoul disappear after 2 second
User prompt
The trail should come when Shurikens be faster
User prompt
Shurikenlere yavaşça yok olan (fade) bir tail ekle ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
The game should start after the text goes out ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
The text should disappear 3 sec after the game start ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Make a text that says "Shurikens Will Increase Every 10 Seconds Be Careful!"
User prompt
Enemy3 comes at 20 second
User prompt
Do it
User prompt
Please fix the bug: 'ReferenceError: Powerup is not defined' in or related to this line: 'var powerup = new Powerup();' Line Number: 184
User prompt
Please fix the bug: 'ReferenceError: Enemy is not defined' in or related to this line: 'enemy = new Enemy();' Line Number: 118
User prompt
Please fix the bug: 'Player is not defined' in or related to this line: 'player = new Player();' Line Number: 63
User prompt
Please fix the bug: 'Player is not defined' in or related to this line: 'player = new Player();' Line Number: 63
User prompt
Her on sanıyede hızlansın demiştim ya o hızlanmayı biraz değiştirelim 10 sn sonra farklı rakipler gelsin onun için yeni 2 asset oluştur
User prompt
Oluştur artık
User prompt
Sarı puan veren toplar daha çok spawn lansın
User prompt
Dokunduğumuz yere ışınlanmasın dokunup sürüklediğimizde ilerlesim
User prompt
Karakterimizin kontrolünü bütün ekrana taşı yani karakterin üzerine dokunduğumuzda değil ekranın herhangi bir yerine dokunduğumuzda hareket edebilsin
User prompt
Karakterimize gelen engeller her 10 sn de bir artsın ve daha hızlı gelsinler
Code edit (1 edits merged)
Please save this source code
User prompt
Survival IO
Initial prompt
Made a game named survival io
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // --- Enemy Class --- var Enemy = Container.expand(function () { var self = Container.call(this); // Attach enemy asset (image) var enemyAsset = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.radius = enemyAsset.width / 2; self.speed = 3; self.angle = 0; self.update = function () { // Store lastX, lastY for good practice (if needed for triggers) if (typeof self.lastX === "undefined") self.lastX = self.x; if (typeof self.lastY === "undefined") self.lastY = self.y; // Move in direction of angle self.x += Math.cos(self.angle) * self.speed; self.y += Math.sin(self.angle) * self.speed; // Update lastX, lastY self.lastX = self.x; self.lastY = self.y; }; return self; }); // --- Enemy2 Class (Red, smaller, faster) --- var Enemy2 = Container.expand(function () { var self = Container.call(this); // Attach enemy2 asset (image) var enemyAsset = self.attachAsset('enemy2', { anchorX: 0.5, anchorY: 0.5 }); self.radius = enemyAsset.width / 2; self.speed = 5; // Faster than regular enemy self.angle = 0; self.update = function () { // Store lastX, lastY for good practice if (typeof self.lastX === "undefined") self.lastX = self.x; if (typeof self.lastY === "undefined") self.lastY = self.y; // Move in direction of angle self.x += Math.cos(self.angle) * self.speed; self.y += Math.sin(self.angle) * self.speed; // Update lastX, lastY self.lastX = self.x; self.lastY = self.y; }; return self; }); // --- Enemy3 Class (Purple, wide, special movement) --- var Enemy3 = Container.expand(function () { var self = Container.call(this); // Attach enemy3 asset (image) var enemyAsset = self.attachAsset('enemy3', { anchorX: 0.5, anchorY: 0.5 }); self.radius = enemyAsset.width / 2; self.speed = 2; // Slower but wider self.angle = 0; self.wobbleOffset = 0; // For special movement pattern self.update = function () { // Store lastX, lastY for good practice if (typeof self.lastX === "undefined") self.lastX = self.x; if (typeof self.lastY === "undefined") self.lastY = self.y; // Special wobble movement self.wobbleOffset += 0.1; var wobbleX = Math.cos(self.wobbleOffset) * 50; // Side-to-side wobble var wobbleY = Math.sin(self.wobbleOffset * 0.5) * 30; // Up-down wobble // Move in direction of angle with wobble self.x += Math.cos(self.angle) * self.speed + wobbleX * 0.02; self.y += Math.sin(self.angle) * self.speed + wobbleY * 0.02; // Update lastX, lastY self.lastX = self.x; self.lastY = self.y; }; return self; }); // --- Player Class --- var Player = Container.expand(function () { var self = Container.call(this); // Attach player asset var playerAsset = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); // Set radius for collision self.radius = playerAsset.width / 2; // Flash effect on hit self.flash = function () { LK.effects.flashObject(self, 0xff0000, 600); }; return self; }); // --- Powerup Class --- var Powerup = Container.expand(function () { var self = Container.call(this); // Attach powerup asset var powerupAsset = self.attachAsset('powerup', { anchorX: 0.5, anchorY: 0.5 }); // Set radius for collision self.radius = powerupAsset.width / 2; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x181c24 }); /**** * Game Code ****/ // Purple, wide, special // Red, smaller, faster // --- Asset Initialization --- // --- Game Variables --- var player; var enemies = []; var powerups = []; var dragNode = null; var lastPlayerPos = { x: 0, y: 0 }; var lastHit = false; var score = 0; var scoreTxt; var survivalTime = 0; var timeTxt; var spawnTimer = 0; var spawnInterval = 90; // frames var powerupTimer = 0; var powerupInterval = 300; // frames (was 600, now twice as frequent) var difficultyTimer = 0; var minSpawnInterval = 30; // --- UI --- scoreTxt = new Text2('Score: 0', { size: 100, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); timeTxt = new Text2('Time: 0.0', { size: 70, fill: 0xB0EAFF }); timeTxt.anchor.set(0.5, 0); LK.gui.top.addChild(timeTxt); timeTxt.y = 110; // Warning text about shuriken increase var warningTxt = new Text2('Shurikens Will Increase Every 10 Seconds Be Careful!', { size: 60, fill: 0xFFFF00 }); warningTxt.anchor.set(0.5, 0); LK.gui.top.addChild(warningTxt); warningTxt.y = 200; // --- Player --- player = new Player(); player.x = 2048 / 2; player.y = 2732 / 2; game.addChild(player); // --- Helper Functions --- function resetGameVars() { enemies = []; powerups = []; score = 0; survivalTime = 0; spawnTimer = 0; spawnInterval = 90; powerupTimer = 0; difficultyTimer = 0; lastHit = false; scoreTxt.setText('Score: 0'); timeTxt.setText('Time: 0.0'); player.x = 2048 / 2; player.y = 2732 / 2; } // --- Spawning --- function spawnEnemy() { // Spawn at random edge, move toward player var enemy; // After 10 seconds, start mixing in Enemy2, after 20 seconds add Enemy3 if (survivalTime >= 20) { var r = Math.random(); if (r < 0.4) { enemy = new Enemy(); } else if (r < 0.7) { enemy = new Enemy2(); } else { enemy = new Enemy3(); } } else if (survivalTime >= 10) { var r = Math.random(); if (r < 0.6) { enemy = new Enemy(); } else { enemy = new Enemy2(); } } else { enemy = new Enemy(); } var edge = Math.floor(Math.random() * 4); var x, y; if (edge === 0) { // Top x = 200 + Math.random() * (2048 - 400); y = -80; } else if (edge === 1) { // Bottom x = 200 + Math.random() * (2048 - 400); y = 2732 + 80; } else if (edge === 2) { // Left x = -80; y = 200 + Math.random() * (2732 - 400); } else { // Right x = 2048 + 80; y = 200 + Math.random() * (2732 - 400); } enemy.x = x; enemy.y = y; // Aim at player var dx = player.x - x; var dy = player.y - y; enemy.angle = Math.atan2(dy, dx); if (typeof baseEnemySpeed === "undefined") { baseEnemySpeed = 3; } // Only set speed for Enemy (default), others use their own if (enemy instanceof Enemy) { enemy.speed = baseEnemySpeed + Math.random() * 2 + survivalTime / 20; } enemies.push(enemy); game.addChild(enemy); } function spawnPowerup() { var powerup = new Powerup(); powerup.x = 200 + Math.random() * (2048 - 400); powerup.y = 200 + Math.random() * (2732 - 400); powerups.push(powerup); game.addChild(powerup); } // --- Collision --- function circleIntersect(a, b) { var dx = a.x - b.x; var dy = a.y - b.y; var dist = Math.sqrt(dx * dx + dy * dy); return dist < (a.radius + b.radius) * 0.85; } // --- Drag Controls --- function handleMove(x, y, obj) { if (dragNode) { // Only move player if dragging (i.e., finger/mouse is moving after down) // Calculate movement delta from lastPlayerPos if (lastPlayerPos.active) { var dx = x - lastPlayerPos.x; var dy = y - lastPlayerPos.y; // Only move if there is a delta (prevents teleport on first touch) if (dx !== 0 || dy !== 0) { var newX = dragNode.x + dx; var newY = dragNode.y + dy; // Clamp to game area (avoid top left 100x100) var px = Math.max(100 + player.radius, Math.min(2048 - player.radius, newX)); var py = Math.max(100 + player.radius, Math.min(2732 - player.radius, newY)); dragNode.x = px; dragNode.y = py; } } // Update lastPlayerPos for next move lastPlayerPos.x = x; lastPlayerPos.y = y; lastPlayerPos.active = true; } } game.move = handleMove; game.down = function (x, y, obj) { dragNode = player; // Record initial drag position, but do not move player yet lastPlayerPos.x = x; lastPlayerPos.y = y; lastPlayerPos.active = false; // Prevents teleport on first move }; game.up = function (x, y, obj) { dragNode = null; lastPlayerPos.active = false; }; // --- Main Update Loop --- game.update = function () { // Survival time survivalTime += 1 / 60; timeTxt.setText('Time: ' + survivalTime.toFixed(1)); // Difficulty scaling difficultyTimer++; if (difficultyTimer % 600 === 0) { // Every 10 seconds, increase difficulty // Decrease spawn interval (more frequent spawns) if (spawnInterval > minSpawnInterval) { spawnInterval -= 8; if (spawnInterval < minSpawnInterval) spawnInterval = minSpawnInterval; } // Increase number of enemies spawned per interval if (typeof enemiesPerSpawn === "undefined") { enemiesPerSpawn = 1; } enemiesPerSpawn++; // Increase base enemy speed if (typeof baseEnemySpeed === "undefined") { baseEnemySpeed = 3; } baseEnemySpeed += 0.5; } // Enemy spawn spawnTimer++; if (spawnTimer >= spawnInterval) { // Spawn multiple enemies per interval as difficulty increases if (typeof enemiesPerSpawn === "undefined") { enemiesPerSpawn = 1; } for (var s = 0; s < enemiesPerSpawn; s++) { spawnEnemy(); } spawnTimer = 0; } // Powerup spawn powerupTimer++; if (powerupTimer >= powerupInterval) { // Spawn 2 powerups per interval for more frequent yellow balls for (var i = 0; i < 2; i++) { spawnPowerup(); } powerupTimer = 0; } // Update enemies for (var i = enemies.length - 1; i >= 0; i--) { var e = enemies[i]; e.update(); // Remove if off screen if (e.x < -200 || e.x > 2248 || e.y < -200 || e.y > 2932) { e.destroy(); enemies.splice(i, 1); continue; } // Collision with player if (circleIntersect(e, player)) { if (!lastHit) { player.flash(); LK.effects.flashScreen(0xff0000, 600); LK.showGameOver(); lastHit = true; return; } } } // Remove dead enemies if game over if (lastHit) { for (var j = 0; j < enemies.length; j++) { enemies[j].destroy(); } enemies = []; for (var k = 0; k < powerups.length; k++) { powerups[k].destroy(); } powerups = []; return; } // Update powerups for (var p = powerups.length - 1; p >= 0; p--) { var pu = powerups[p]; // Collision with player if (circleIntersect(pu, player)) { score += 10; scoreTxt.setText('Score: ' + score); pu.destroy(); powerups.splice(p, 1); continue; } } // Score increases with time if (Math.floor(survivalTime * 10) % 10 === 0) { var newScore = Math.floor(survivalTime); if (newScore > score) { score = newScore; scoreTxt.setText('Score: ' + score); } } }; // --- Game Over Reset --- LK.on('gameover', function () { resetGameVars(); }); // --- You Win (not used in endless, but for completeness) --- LK.on('youwin', function () { resetGameVars(); });
===================================================================
--- original.js
+++ change.js
@@ -158,8 +158,16 @@
});
timeTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(timeTxt);
timeTxt.y = 110;
+// Warning text about shuriken increase
+var warningTxt = new Text2('Shurikens Will Increase Every 10 Seconds Be Careful!', {
+ size: 60,
+ fill: 0xFFFF00
+});
+warningTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(warningTxt);
+warningTxt.y = 200;
// --- Player ---
player = new Player();
player.x = 2048 / 2;
player.y = 2732 / 2;