User prompt
roket ekranın alt kısmında yer alır, roket ucar gibi gözüküyor ama aslında arka plan aşağıya doğru kayacak
Code edit (1 edits merged)
Please save this source code
User prompt
Rocket Fuel Rush
Initial prompt
bir oyun yapmak istiyorum, bir roket var, yukarı doğru uçuyor, ama uçmak için, roketin yakıta ihtiyacı var, roket önüne gelen yakıtları alamazsa, düşer ve oyun biter, yakıtları toplaması gerekiyor, ama tabi yukarıya çıkarken, bazı engeller karşısına çıkacak, ve engelle çarparsa, oyun yine biter. roketin kaç metere yukarıya çıktığını bilmek için bir metre sayacı olması lazım, best score ekranda kalacak, sayaç her düştüğünde sıfırlanacak, roketi sağ sola kaydırmak için rokete basılı tutup sağ sola kaydırmak gerekir
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { best: 0 }); /**** * Classes ****/ // Fuel class var Fuel = Container.expand(function () { var self = Container.call(this); var fuelGfx = self.attachAsset('fuel', { anchorX: 0.5, anchorY: 0.5 }); self.width = fuelGfx.width; self.height = fuelGfx.height; self.update = function () { // Movement handled in game.update }; return self; }); // Obstacle class var Obstacle = Container.expand(function () { var self = Container.call(this); var obsGfx = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.width = obsGfx.width; self.height = obsGfx.height; self.update = function () { // Movement handled in game.update }; return self; }); // Rocket class var Rocket = Container.expand(function () { var self = Container.call(this); var rocketGfx = self.attachAsset('rocket', { anchorX: 0.5, anchorY: 0.5 }); self.width = rocketGfx.width; self.height = rocketGfx.height; self.fuel = 100; // percent self.alive = true; self.update = function () { // Nothing here, movement handled in game.update }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Explosion effect (for flash) // Obstacle // Fuel // Rocket (player) // --- Global variables --- var rocket; var fuels = []; var obstacles = []; var dragStartX = null; var dragRocketStartX = null; var isDragging = false; var fuelTimer = 0; var obstacleTimer = 0; var distance = 0; var best = storage.best || 0; var fuelDepleteRate = 0.18; // per tick var rocketSpeed = 8; // px per tick (vertical) var fuelSpawnInterval = 90; // ticks var obstacleSpawnInterval = 110; // ticks var minX = 100, maxX = 2048 - 100; var minY = 200, maxY = 2732 - 200; var fuelAmount = 35; // how much fuel a fuel gives var fuelMax = 100; var gameStarted = false; // --- UI --- var distanceTxt = new Text2('0 m', { size: 90, fill: 0xFFFFFF }); distanceTxt.anchor.set(0.5, 0); LK.gui.top.addChild(distanceTxt); var bestTxt = new Text2('Best: 0 m', { size: 60, fill: 0xFFFF00 }); bestTxt.anchor.set(1, 0); LK.gui.topRight.addChild(bestTxt); // Fuel bar (simple text) var fuelTxt = new Text2('Yakıt: 100%', { size: 60, fill: 0x44DDEE }); fuelTxt.anchor.set(0, 0); LK.gui.top.addChild(fuelTxt); // --- Helper functions --- function resetGame() { // Remove old objects if (rocket) rocket.destroy(); for (var i = 0; i < fuels.length; ++i) fuels[i].destroy(); for (var i = 0; i < obstacles.length; ++i) obstacles[i].destroy(); fuels = []; obstacles = []; // Reset variables distance = 0; fuelTimer = 0; obstacleTimer = 0; // Create rocket rocket = new Rocket(); rocket.x = 2048 / 2; rocket.y = 2732 - 350; game.addChild(rocket); rocket.fuel = 100; rocket.alive = true; gameStarted = true; updateUI(); } function updateUI() { distanceTxt.setText(Math.floor(distance) + ' m'); bestTxt.setText('Best: ' + Math.floor(best) + ' m'); fuelTxt.setText('Yakıt: ' + Math.max(0, Math.floor(rocket ? rocket.fuel : 0)) + '%'); } // --- Input (drag to move rocket) --- game.down = function (x, y, obj) { if (!rocket || !rocket.alive) return; isDragging = true; dragStartX = x; dragRocketStartX = rocket.x; }; game.move = function (x, y, obj) { if (!rocket || !rocket.alive) return; if (isDragging) { var dx = x - dragStartX; rocket.x = Math.max(minX, Math.min(maxX, dragRocketStartX + dx)); } }; game.up = function (x, y, obj) { isDragging = false; }; // --- Main game loop --- game.update = function () { if (!rocket || !rocket.alive) return; // Move rocket up (rocket stays at same y, background moves down) var bgMove = rocketSpeed; for (var i = 0; i < fuels.length; ++i) { fuels[i].y += bgMove; } for (var i = 0; i < obstacles.length; ++i) { obstacles[i].y += bgMove; } distance += rocketSpeed / 6; // scale to meters updateUI(); // Deplete fuel rocket.fuel -= fuelDepleteRate; if (rocket.fuel <= 0) { rocket.fuel = 0; rocket.alive = false; LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } // Move fuels and check collision for (var i = fuels.length - 1; i >= 0; --i) { var f = fuels[i]; f.y -= rocketSpeed; // move up with rocket if (f.y < -100) { f.destroy(); fuels.splice(i, 1); continue; } if (rocket.intersects(f)) { rocket.fuel = Math.min(fuelMax, rocket.fuel + fuelAmount); f.destroy(); fuels.splice(i, 1); // Small flash effect LK.effects.flashObject(rocket, 0x44ddee, 300); updateUI(); } } // Move obstacles and check collision for (var i = obstacles.length - 1; i >= 0; --i) { var o = obstacles[i]; o.y -= rocketSpeed; // move up with rocket if (o.y < -100) { o.destroy(); obstacles.splice(i, 1); continue; } if (rocket.intersects(o)) { rocket.alive = false; LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } // Spawn fuel fuelTimer++; if (fuelTimer >= fuelSpawnInterval) { fuelTimer = 0; var f = new Fuel(); f.x = Math.floor(minX + Math.random() * (maxX - minX)); f.y = rocket.y - 900 - Math.random() * 400; game.addChild(f); fuels.push(f); } // Spawn obstacle obstacleTimer++; if (obstacleTimer >= obstacleSpawnInterval) { obstacleTimer = 0; var o = new Obstacle(); o.x = Math.floor(minX + Math.random() * (maxX - minX)); o.y = rocket.y - 700 - Math.random() * 600; game.addChild(o); obstacles.push(o); } }; // --- Game over / win handling --- LK.on('gameover', function () { gameStarted = false; if (distance > best) { best = distance; storage.best = Math.floor(best); } updateUI(); LK.setTimeout(function () { resetGame(); }, 1200); }); // --- Start game --- resetGame();
===================================================================
--- original.js
+++ change.js
@@ -156,10 +156,16 @@
};
// --- Main game loop ---
game.update = function () {
if (!rocket || !rocket.alive) return;
- // Move rocket up
- rocket.y -= rocketSpeed;
+ // Move rocket up (rocket stays at same y, background moves down)
+ var bgMove = rocketSpeed;
+ for (var i = 0; i < fuels.length; ++i) {
+ fuels[i].y += bgMove;
+ }
+ for (var i = 0; i < obstacles.length; ++i) {
+ obstacles[i].y += bgMove;
+ }
distance += rocketSpeed / 6; // scale to meters
updateUI();
// Deplete fuel
rocket.fuel -= fuelDepleteRate;