User prompt
Yüksek skor sağ üstte olsun
User prompt
Ana menü olsun
User prompt
Arkaplan da küçük küçük beyaz yıldızlarda olsun
User prompt
Arkaplan uzay olsun
User prompt
Arkaplan assetsleri olsun
User prompt
Mermilerin hitboxini arttır
User prompt
Oyuncu istediği yere gidemesin sadece düz bir alan ve sadece sağa sola gidebilir
User prompt
Oyuncunun hitboxini 3 kat büyüt
User prompt
Her 5 puanda bir mermilerin hızı 2 katına çıksın ve çoğalsınlar
User prompt
Oyuncuyu hareket ettirebilmesi lazım
Code edit (1 edits merged)
Please save this source code
User prompt
Bullet Rain - Dodge & Survive
Initial prompt
Bana bir deodge oyunu yap üstten mermiler düşecek ve oyuncular da o mermilerden kaçmaya çalışacak puan sistemi olsun
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.update = function () { self.y += self.speed; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a2e }); /**** * Game Code ****/ var player = game.addChild(new Player()); player.x = 1024; // Center horizontally player.y = 2200; // Near bottom of screen var bullets = []; var bulletSpawnTimer = 0; var bulletSpawnDelay = 60; // Start spawning every 60 ticks (1 second) var minSpawnDelay = 20; // Minimum spawn delay (maximum difficulty) var difficultyTimer = 0; var speedMultiplier = 1; var gameStartTime = Date.now(); var dragNode = null; // Score display var scoreTxt = new Text2('0', { size: 100, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Time display var timeTxt = new Text2('Time: 0s', { size: 60, fill: 0xFFFFFF }); timeTxt.anchor.set(0, 0); timeTxt.x = 120; timeTxt.y = 20; LK.gui.topLeft.addChild(timeTxt); function updateScore() { var timeAlive = Math.floor((Date.now() - gameStartTime) / 1000); LK.setScore(timeAlive); scoreTxt.setText(timeAlive); timeTxt.setText('Time: ' + timeAlive + 's'); } function spawnBullet() { var bullet = new Bullet(); bullet.x = Math.random() * (2048 - 100) + 50; // Random x position with margin bullet.y = -30; // Start above screen bullet.speed = (6 + Math.random() * 4) * speedMultiplier; // Apply speed multiplier bullets.push(bullet); game.addChild(bullet); } function increaseDifficulty() { var currentScore = LK.getScore(); // Check if we've reached a new 5-point milestone if (currentScore > 0 && currentScore % 5 === 0) { // Only increase difficulty if we haven't already increased it for this score if (currentScore / 5 > speedMultiplier - 1) { speedMultiplier = Math.floor(currentScore / 5) + 1; // Decrease spawn delay (more bullets spawn) bulletSpawnDelay = Math.max(minSpawnDelay, Math.floor(60 / speedMultiplier)); } } } function handleMove(x, y, obj) { if (dragNode) { // Keep player within screen bounds horizontally only dragNode.x = Math.max(40, Math.min(2008, x)); // Keep player locked to bottom area - no vertical movement dragNode.y = 2200; } } game.move = handleMove; game.down = function (x, y, obj) { // Set drag node to player for any touch on screen dragNode = player; handleMove(x, y, obj); }; game.up = function (x, y, obj) { dragNode = null; }; game.update = function () { updateScore(); increaseDifficulty(); // Spawn bullets bulletSpawnTimer++; if (bulletSpawnTimer >= bulletSpawnDelay) { spawnBullet(); bulletSpawnTimer = 0; } // Update and check bullets for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; // Initialize tracking variables if (bullet.lastY === undefined) bullet.lastY = bullet.y; if (bullet.lastIntersecting === undefined) bullet.lastIntersecting = false; // Check if bullet went off screen if (bullet.lastY <= 2800 && bullet.y > 2800) { bullet.destroy(); bullets.splice(i, 1); continue; } // Check collision with player var currentIntersecting = bullet.intersects(player); if (!bullet.lastIntersecting && currentIntersecting) { // Collision detected - game over LK.getSound('hit').play(); LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } // Update tracking variables bullet.lastY = bullet.y; bullet.lastIntersecting = currentIntersecting; } };
===================================================================
--- original.js
+++ change.js
@@ -91,11 +91,12 @@
}
}
function handleMove(x, y, obj) {
if (dragNode) {
- // Keep player within screen bounds
+ // Keep player within screen bounds horizontally only
dragNode.x = Math.max(40, Math.min(2008, x));
- dragNode.y = Math.max(40, Math.min(2692, y));
+ // Keep player locked to bottom area - no vertical movement
+ dragNode.y = 2200;
}
}
game.move = handleMove;
game.down = function (x, y, obj) {