User prompt
oyunumu yayınlayamıyorum yardım
User prompt
oyun başlatıldığında yüklediğim müzik çalsın
User prompt
Oyun başlatıldığında yüklediğim müzik çalsın
User prompt
Bazı engeller daha hızlı hareket etsin, oyuncunun refleksini test etsin.
User prompt
✅ Engellerin yalnızca şeritlerde oluşmasını sağlayın, şeritler arasında oluşmasın ve tüm zıplama mantığını kaldırın. ✅ Şerit tabanlı olmayan tüm sıçrama/çarpışma mantığını kaldırın, engellerden kaçınmak için yalnızca şerit değiştirmenin kullanıldığından emin olun.
User prompt
Zıplama yerine engeller sadece belirli şeritlerde çıksın. Oyuncu doğru zamanda sağa veya sola geçerek engellerden kaçmalı.
User prompt
Ekranda bir puan göstergesi olsun. Üretkenlik nesnesi toplandıkça bu sayı artsın.
User prompt
Zemin veya yol sürekli karaktere doğru kaymalı gibi görünmeli. Oyun durmayacak şekilde ilerlemeli.
User prompt
Belirli aralıklarla engeller ve üretkenlik nesneleri oluştur. Üretkenlik nesnesi toplanınca puan 1 artsın. Engel ile çarpışınca oyun dursun.
User prompt
Karakter 3 şeritli bir yolda koşmalı. Sağ ve sol tuşlarıyla bir şerit sağa veya sola geçmeli.
Code edit (1 edits merged)
Please save this source code
User prompt
Focus Runner
Initial prompt
Yeni bir 2D sonsuz koşu oyunu başlat. Oyuncu ileri doğru koşmalı, sağ ve sol şeritlere geçebilmeli. Üretkenlik simgeleri toplanmalı, dikkat dağıtıcılarla çarpınca oyun bitmeli. Karakter sürekli hareket etmeli.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Distraction Icon (obstacle) var DistractionIcon = Container.expand(function () { var self = Container.call(this); var icon = self.attachAsset('distraction_icon', { anchorX: 0.5, anchorY: 0.5 }); self.type = 'distraction'; self.lane = 1; self.speed = 16; // Will be set by game, but default here return self; }); // Productivity Icon (collectible) var ProdIcon = Container.expand(function () { var self = Container.call(this); var icon = self.attachAsset('prod_icon', { anchorX: 0.5, anchorY: 0.5 }); self.type = 'prod'; self.lane = 1; self.speed = 16; // Will be set by game, but default here return self; }); // Runner class var Runner = Container.expand(function () { var self = Container.call(this); var runnerSprite = self.attachAsset('runner', { anchorX: 0.5, anchorY: 1 }); self.lane = 1; // Start in center lane (0: left, 1: center, 2: right) self.y = 2200; // Near bottom of screen // Move to lane with tween self.moveToLane = function (targetLane) { if (targetLane < 0 || targetLane >= laneCount) return; self.lane = targetLane; tween(self, { x: laneX[targetLane] }, { duration: 120, easing: tween.cubicOut }); }; // Set initial position self.x = laneX[self.lane]; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Lane positions (global, so all classes can access) // Runner character // Distraction icons (obstacles) // Productivity icons (collectibles) // Score display var laneCount = 3; var laneX = [2048 / 2 - 300, // Left lane 2048 / 2, // Center lane 2048 / 2 + 300 // Right lane ]; var scoreTxt = new Text2('0', { size: 120, fill: 0x222222 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Game variables var runner; var objects = []; // All collectibles and obstacles var spawnTimer = 0; var spawnInterval = 60; // Frames between spawns (will decrease) var objectSpeed = 16; // Initial speed (will increase) var minSpawnInterval = 24; var maxObjectSpeed = 38; var score = 0; var lastMoveX = null; var lastMoveY = null; var dragStartX = null; var dragStartY = null; var dragActive = false; // Initialize runner runner = new Runner(); game.addChild(runner); // Helper: spawn a new object (randomly prod or distraction) function spawnObject() { // Randomly choose lane var lane = Math.floor(Math.random() * laneCount); // Randomly choose type (60% prod, 40% distraction) var isProd = Math.random() < 0.6; var obj; if (isProd) { obj = new ProdIcon(); } else { obj = new DistractionIcon(); } obj.lane = lane; obj.x = laneX[lane]; obj.y = -100; // Start just above screen obj.speed = objectSpeed; objects.push(obj); game.addChild(obj); } // Touch/drag/swipe controls game.down = function (x, y, obj) { dragStartX = x; dragStartY = y; dragActive = true; lastMoveX = x; lastMoveY = y; }; game.move = function (x, y, obj) { if (!dragActive) return; var dx = x - dragStartX; var dy = y - dragStartY; // Only consider horizontal swipes if (Math.abs(dx) > 80 && Math.abs(dx) > Math.abs(dy)) { if (dx > 0 && runner.lane < laneCount - 1) { runner.moveToLane(runner.lane + 1); dragActive = false; } else if (dx < 0 && runner.lane > 0) { runner.moveToLane(runner.lane - 1); dragActive = false; } } lastMoveX = x; lastMoveY = y; }; game.up = function (x, y, obj) { // If tap (not swipe), move to lane based on tap position if (dragActive && Math.abs(x - dragStartX) < 40 && Math.abs(y - dragStartY) < 40) { // Tap: move to nearest lane var tapLane = 0; var minDist = Math.abs(x - laneX[0]); for (var i = 1; i < laneCount; i++) { var d = Math.abs(x - laneX[i]); if (d < minDist) { minDist = d; tapLane = i; } } runner.moveToLane(tapLane); } dragActive = false; dragStartX = null; dragStartY = null; }; // Main game loop game.update = function () { // Increase difficulty over time if (LK.ticks % 180 == 0) { // Every 3 seconds if (spawnInterval > minSpawnInterval) spawnInterval -= 2; if (objectSpeed < maxObjectSpeed) objectSpeed += 1; } // Spawn objects spawnTimer++; if (spawnTimer >= spawnInterval) { spawnObject(); spawnTimer = 0; } // Move objects and check collisions for (var i = objects.length - 1; i >= 0; i--) { var obj = objects[i]; obj.y += obj.speed; // Remove if off screen if (obj.y > 2800) { obj.destroy(); objects.splice(i, 1); continue; } // Collision with runner if (obj.lane === runner.lane && Math.abs(obj.y - runner.y + 40) < 120) { if (obj.type === 'prod') { // Collect score += 1; LK.setScore(score); scoreTxt.setText(score); // Flash green LK.effects.flashObject(runner, 0x4caf50, 200); obj.destroy(); objects.splice(i, 1); } else if (obj.type === 'distraction') { // Hit distraction: game over LK.effects.flashScreen(0xf44336, 800); LK.showGameOver(); return; } } } }; // Center runner vertically (bottom 1/5th of screen) runner.y = 2732 - 350; // Initial score score = 0; LK.setScore(score); scoreTxt.setText(score);
===================================================================
--- original.js
+++ change.js
@@ -58,9 +58,9 @@
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0xffffff
+ backgroundColor: 0x000000
});
/****
* Game Code