User prompt
Sahnenin rastgele yerlerine rastgele büyüklükte oyunun oynayışını etkilemiycek beyaz noktalar ekle
User prompt
Oyunu eski haline geri getir
User prompt
Varlıkların boşlukları oyunu etkilemesin
User prompt
sahneleri 4 şekilde incelleyelim bunlar 1. dünya sahnesi yani bulutlar üzerinde zıplayalım ve etraf gökyüzü gibi masmavi olsun sayaç 1000 olduğunda 2. sahne geçsin ve 2. sahnede kraterlerin üstünde zıplayalım ve ekran siyah renkte ve beyaz yıldızlardan oluşsun sayaç 2000 olduğunda 3. sahneye geç bu sahnede belirli gezegenleri görelim sayaç 3000 olduğunda 4. sahneye geçelim ve bu sahnede cennet olsun sarı ve beyaz renklerde bulunsun daha sonra oyun sayaç 3500 olduğunda cennet haritasında sona ersin
User prompt
Oyunu basit bir karekterin tepeye doğru parkur yaparak çıkabilecek şekilde yap ve oynanabilir durumda olsun
Code edit (1 edits merged)
Please save this source code
User prompt
Tepeye Tırmanış Parkuru
Initial prompt
tepeye doğru çıkabileceğimiz parkur oyunu yap
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Obstacle class: static obstacle (box or ellipse) var Obstacle = Container.expand(function () { var self = Container.call(this); // Attach obstacle asset (ellipse shape) var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); return self; }); // Platform class: static or moving platform var Platform = Container.expand(function () { var self = Container.call(this); // Attach platform asset (box shape) var platformGraphics = self.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5 }); // Platform movement properties self.isMoving = false; self.moveDir = 1; // 1: right, -1: left self.moveRange = 0; // in px self.moveSpeed = 0; // px per frame self.startX = 0; // Called every tick self.update = function () { if (self.isMoving) { self.x += self.moveDir * self.moveSpeed; if (Math.abs(self.x - self.startX) > self.moveRange) { self.moveDir *= -1; } } }; return self; }); // Player class var Player = Container.expand(function () { var self = Container.call(this); // Attach player asset (box shape) var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); // Physics properties self.vx = 0; self.vy = 0; self.isOnGround = false; self.width = playerGraphics.width; self.height = playerGraphics.height; // Jump method self.jump = function () { if (self.isOnGround) { self.vy = -jumpStrength; self.isOnGround = false; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222244 }); /**** * Game Code ****/ // --- Game Constants --- // --- Asset Initialization --- var GRAVITY = 2.2; var MOVE_SPEED = 22; var jumpStrength = 48; var PLATFORM_MIN_WIDTH = 220; var PLATFORM_MAX_WIDTH = 420; var PLATFORM_HEIGHT = 40; var PLATFORM_GAP_MIN = 220; var PLATFORM_GAP_MAX = 420; var PLATFORM_MOVE_CHANCE = 0.25; var PLATFORM_MOVE_RANGE = 320; var PLATFORM_MOVE_SPEED = 4; var OBSTACLE_CHANCE = 0.25; var OBSTACLE_SIZE = 80; var PLAYER_START_X = 2048 / 2; var PLAYER_START_Y = 2732 - 400; var CAMERA_OFFSET = 900; // How far from bottom the player is kept // --- Game State --- var player; var platforms = []; var obstacles = []; var maxHeight = 0; // Highest Y the player has reached (lower y = higher) var dragStartX = null; var dragStartY = null; var dragLastX = null; var dragLastY = null; var isDragging = false; var scoreTxt; var lastPlatformY = 0; var cameraY = 0; var gameOver = false; // --- GUI --- scoreTxt = new Text2('0', { size: 120, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // --- Helper Functions --- // Generate a new platform at (x, y), optionally moving function createPlatform(x, y, width, isMoving) { var plat = new Platform(); plat.x = x; plat.y = y; plat.width = width; plat.height = PLATFORM_HEIGHT; plat.getChildAt(0).width = width; plat.getChildAt(0).height = PLATFORM_HEIGHT; plat.isMoving = isMoving; plat.moveRange = isMoving ? PLATFORM_MOVE_RANGE : 0; plat.moveSpeed = isMoving ? PLATFORM_MOVE_SPEED : 0; plat.startX = x; game.addChild(plat); platforms.push(plat); return plat; } // Generate a new obstacle on a platform function createObstacle(x, y) { var obs = new Obstacle(); obs.x = x; obs.y = y - OBSTACLE_SIZE / 2 - 10; obs.width = OBSTACLE_SIZE; obs.height = OBSTACLE_SIZE; obs.getChildAt(0).width = OBSTACLE_SIZE; obs.getChildAt(0).height = OBSTACLE_SIZE; game.addChild(obs); obstacles.push(obs); return obs; } // Remove platforms/obstacles below camera function cleanupPlatformsObstacles() { for (var i = platforms.length - 1; i >= 0; i--) { if (platforms[i].y - cameraY > 2732 + 200) { platforms[i].destroy(); platforms.splice(i, 1); } } for (var j = obstacles.length - 1; j >= 0; j--) { if (obstacles[j].y - cameraY > 2732 + 200) { obstacles[j].destroy(); obstacles.splice(j, 1); } } } // Generate platforms up to a certain Y function generatePlatformsUpTo(minY) { while (lastPlatformY > minY) { var gap = PLATFORM_GAP_MIN + Math.random() * (PLATFORM_GAP_MAX - PLATFORM_GAP_MIN); var platY = lastPlatformY - gap; var platWidth = PLATFORM_MIN_WIDTH + Math.random() * (PLATFORM_MAX_WIDTH - PLATFORM_MIN_WIDTH); var platX = platWidth / 2 + Math.random() * (2048 - platWidth); var isMoving = Math.random() < PLATFORM_MOVE_CHANCE; var plat = createPlatform(platX, platY, platWidth, isMoving); // Maybe add obstacle if (Math.random() < OBSTACLE_CHANCE && platWidth > 200 + OBSTACLE_SIZE) { var obsX = plat.x + (Math.random() - 0.5) * (platWidth - OBSTACLE_SIZE - 40); createObstacle(obsX, platY); } lastPlatformY = platY; } } // Reset game state function resetGame() { // Remove old objects for (var i = 0; i < platforms.length; i++) platforms[i].destroy(); for (var j = 0; j < obstacles.length; j++) obstacles[j].destroy(); platforms = []; obstacles = []; cameraY = 0; lastPlatformY = PLAYER_START_Y + 120; maxHeight = PLAYER_START_Y; LK.setScore(0); scoreTxt.setText('0'); gameOver = false; // Create player if (player) player.destroy(); player = new Player(); player.x = PLAYER_START_X; player.y = PLAYER_START_Y; player.vx = 0; player.vy = 0; player.isOnGround = false; game.addChild(player); // Create starting platform createPlatform(PLAYER_START_X, PLAYER_START_Y + 80, 420, false); // Generate initial platforms generatePlatformsUpTo(PLAYER_START_Y - 2000); } // --- Input Handling --- // Touch/drag to move player left/right, tap to jump game.down = function (x, y, obj) { if (gameOver) return; dragStartX = x; dragStartY = y; dragLastX = x; dragLastY = y; isDragging = true; }; game.move = function (x, y, obj) { if (gameOver) return; if (!isDragging) return; var dx = x - dragLastX; dragLastX = x; dragLastY = y; // Move player horizontally player.x += dx * 1.2; if (player.x < player.width / 2) player.x = player.width / 2; if (player.x > 2048 - player.width / 2) player.x = 2048 - player.width / 2; }; game.up = function (x, y, obj) { if (gameOver) return; isDragging = false; // If tap (not drag), jump if (Math.abs(x - dragStartX) < 30 && Math.abs(y - dragStartY) < 30) { player.jump(); } }; // --- Main Game Loop --- game.update = function () { if (gameOver) return; // --- Player Physics --- player.vy += GRAVITY; player.y += player.vy; player.x += player.vx; // Clamp player to screen if (player.x < player.width / 2) player.x = player.width / 2; if (player.x > 2048 - player.width / 2) player.x = 2048 - player.width / 2; // --- Platform Collision --- player.isOnGround = false; for (var i = 0; i < platforms.length; i++) { var plat = platforms[i]; // Only check collision if falling if (player.vy >= 0) { var px = player.x; var py = player.y + player.height / 2; var platLeft = plat.x - plat.width / 2; var platRight = plat.x + plat.width / 2; var platTop = plat.y - plat.height / 2; var platBottom = plat.y + plat.height / 2; if (px > platLeft + 10 && px < platRight - 10 && py > platTop && py < platTop + 40 && player.y < plat.y) { // Landed on platform player.y = platTop - player.height / 2 + 1; player.vy = 0; player.isOnGround = true; } } } // --- Obstacle Collision --- for (var j = 0; j < obstacles.length; j++) { var obs = obstacles[j]; // Simple circle-rect collision var dx = Math.abs(player.x - obs.x); var dy = Math.abs(player.y - obs.y); if (dx < player.width / 2 + OBSTACLE_SIZE / 2 - 10 && dy < player.height / 2 + OBSTACLE_SIZE / 2 - 10) { // Hit obstacle LK.effects.flashScreen(0xff0000, 800); gameOver = true; LK.showGameOver(); return; } } // --- Fall Off Screen --- if (player.y - cameraY > 2732 + 100) { LK.effects.flashScreen(0xff0000, 800); gameOver = true; LK.showGameOver(); return; } // --- Camera Follow --- if (player.y < maxHeight) { maxHeight = player.y; LK.setScore(Math.max(0, Math.floor((PLAYER_START_Y - maxHeight) / 10))); scoreTxt.setText(LK.getScore()); } var targetCameraY = player.y - (2732 - CAMERA_OFFSET); if (targetCameraY < cameraY) { cameraY = targetCameraY; } // Move all objects up by cameraY // Move all objects up by cameraY (endless climb illusion) for (var k = 0; k < platforms.length; k++) { // Move platform up by camera scroll delta platforms[k].y -= cameraY - (platforms[k].baseCameraY || 0); platforms[k].baseCameraY = cameraY; platforms[k].update(); } for (var l = 0; l < obstacles.length; l++) { obstacles[l].y -= cameraY - (obstacles[l].baseCameraY || 0); obstacles[l].baseCameraY = cameraY; } player.y -= cameraY - (player.baseCameraY || 0); player.baseCameraY = cameraY; // --- Generate More Platforms --- generatePlatformsUpTo(cameraY - 1200); // --- Cleanup --- cleanupPlatformsObstacles(); }; // --- Game Over Handler (reset on restart) --- LK.on('gameover', function () { resetGame(); }); // --- Start Game --- resetGame();
===================================================================
--- original.js
+++ change.js
@@ -294,19 +294,21 @@
if (targetCameraY < cameraY) {
cameraY = targetCameraY;
}
// Move all objects up by cameraY
+ // Move all objects up by cameraY (endless climb illusion)
for (var k = 0; k < platforms.length; k++) {
- platforms[k].y -= cameraY - (platforms[k].y - platforms[k].baseY || 0);
- platforms[k].baseY = platforms[k].y - cameraY;
+ // Move platform up by camera scroll delta
+ platforms[k].y -= cameraY - (platforms[k].baseCameraY || 0);
+ platforms[k].baseCameraY = cameraY;
platforms[k].update();
}
for (var l = 0; l < obstacles.length; l++) {
- obstacles[l].y -= cameraY - (obstacles[l].y - obstacles[l].baseY || 0);
- obstacles[l].baseY = obstacles[l].y - cameraY;
+ obstacles[l].y -= cameraY - (obstacles[l].baseCameraY || 0);
+ obstacles[l].baseCameraY = cameraY;
}
- player.y -= cameraY - (player.y - (player.baseY || 0));
- player.baseY = player.y - cameraY;
+ player.y -= cameraY - (player.baseCameraY || 0);
+ player.baseCameraY = cameraY;
// --- Generate More Platforms ---
generatePlatformsUpTo(cameraY - 1200);
// --- Cleanup ---
cleanupPlatformsObstacles();