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 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; 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; } player.y -= cameraY - (player.y - (player.baseY || 0)); player.baseY = player.y - 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
@@ -1,6 +1,319 @@
-/****
+/****
+* 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: 0x000000
-});
\ No newline at end of file
+ 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
+ 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;
+ 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;
+ }
+ player.y -= cameraY - (player.y - (player.baseY || 0));
+ player.baseY = player.y - cameraY;
+ // --- Generate More Platforms ---
+ generatePlatformsUpTo(cameraY - 1200);
+ // --- Cleanup ---
+ cleanupPlatformsObstacles();
+};
+// --- Game Over Handler (reset on restart) ---
+LK.on('gameover', function () {
+ resetGame();
+});
+// --- Start Game ---
+resetGame();
\ No newline at end of file