User prompt
oyunu kolaylaştıralım
Code edit (1 edits merged)
Please save this source code
User prompt
Zıplayan Kutu
Initial prompt
🎮 1. Zıplayan Kutu Amaç: Ekrandaki kutuyu boşluklara düşmeden sağa doğru götür. Nasıl oynanır: Sadece “zıpla” butonu var. Platformlar arasında boşluklar var. Zıplamazsan düşersin. 10 platform geçersen oyun biter. Kodlama zorluğu: Çok kolay Süre: 1-2 dakika
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Box (player) class var Box = Container.expand(function () { var self = Container.call(this); // Box asset: square var box = self.attachAsset('box', { anchorX: 0.5, anchorY: 0.5 }); box.width = 120; box.height = 120; // Physics self.vx = 0; self.vy = 0; self.isJumping = false; // For collision, use self's position and box's size self.getBounds = function () { return { x: self.x - box.width / 2, y: self.y - box.height / 2, width: box.width, height: box.height }; }; return self; }); // Platform class: a static platform the box can land on var Platform = Container.expand(function () { var self = Container.call(this); // Platform asset: wide, short rectangle var plat = self.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5 }); // Set default width/height for platform plat.width = 400; plat.height = 60; // For collision, use self's position and plat's size self.getBounds = function () { return { x: self.x - plat.width / 2, y: self.y - plat.height / 2, width: plat.width, height: plat.height }; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222244 }); /**** * Game Code ****/ // Game constants // Platform and box colors var GAME_WIDTH = 2048; var GAME_HEIGHT = 2732; var PLATFORM_WIDTH = 400; var PLATFORM_HEIGHT = 60; var BOX_SIZE = 120; var PLATFORM_GAP_MIN = 220; var PLATFORM_GAP_MAX = 400; var PLATFORM_Y = GAME_HEIGHT * 0.7; var BOX_START_X = 400; var BOX_START_Y = PLATFORM_Y - PLATFORM_HEIGHT / 2 - BOX_SIZE / 2; var SCROLL_SPEED = 10; // px per frame var JUMP_VY = -38; // initial jump velocity var GRAVITY = 3; // gravity per frame var WIN_PLATFORMS = 10; // Game state var platforms = []; var box; var currentPlatformIndex = 0; var jumpButton; var scoreText; var isGameOver = false; var isYouWin = false; var platformsPassed = 0; // --- UI: Score --- scoreText = new Text2('0 / ' + WIN_PLATFORMS, { size: 100, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); // --- UI: Jump Button --- jumpButton = new Container(); var btnBg = jumpButton.attachAsset('jumpbtn', { anchorX: 0.5, anchorY: 0.5 }); btnBg.width = 400; btnBg.height = 180; btnBg.tint = 0xFF5A36; var btnLabel = new Text2('Zıpla', { size: 80, fill: "#fff" }); btnLabel.anchor.set(0.5, 0.5); jumpButton.addChild(btnLabel); // Place button at bottom center, above bottom edge jumpButton.x = GAME_WIDTH / 2; jumpButton.y = GAME_HEIGHT - 250; game.addChild(jumpButton); // --- Create Platforms --- function createInitialPlatforms() { // Clear old for (var i = 0; i < platforms.length; i++) { platforms[i].destroy(); } platforms = []; var x = BOX_START_X - 100; // Start a bit left of box for (var i = 0; i < WIN_PLATFORMS + 2; i++) { var plat = new Platform(); plat.x = x; plat.y = PLATFORM_Y; game.addChild(plat); platforms.push(plat); // Next platform: random gap var gap = PLATFORM_GAP_MIN + Math.floor(Math.random() * (PLATFORM_GAP_MAX - PLATFORM_GAP_MIN)); x += PLATFORM_WIDTH + gap; } } // --- Create Box --- function createBox() { if (box) box.destroy(); box = new Box(); box.x = BOX_START_X; box.y = BOX_START_Y; box.vx = 0; box.vy = 0; box.isJumping = false; game.addChild(box); } // --- Reset Game State --- function resetGame() { isGameOver = false; isYouWin = false; platformsPassed = 0; currentPlatformIndex = 0; scoreText.setText('0 / ' + WIN_PLATFORMS); createInitialPlatforms(); createBox(); } // --- Platform Collision Detection --- function boxOnPlatform() { // Check if box is standing on any platform (from currentPlatformIndex and next) var bounds = box.getBounds(); for (var i = 0; i < platforms.length; i++) { var plat = platforms[i]; var pb = plat.getBounds(); // Only check platforms under/near the box if (bounds.x + bounds.width * 0.7 > pb.x && bounds.x + bounds.width * 0.3 < pb.x + pb.width && Math.abs(bounds.y + bounds.height - pb.y) < 30 && box.vy >= 0) { return plat; } } return null; } // --- Game Over --- function triggerGameOver() { if (isGameOver) return; isGameOver = true; LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); } // --- You Win --- function triggerYouWin() { if (isYouWin) return; isYouWin = true; LK.effects.flashScreen(0x00ff00, 800); LK.showYouWin(); } // --- Handle Jump Button --- jumpButton.down = function (x, y, obj) { if (isGameOver || isYouWin) return; if (!box.isJumping) { box.vy = JUMP_VY; box.isJumping = true; // Animate button press tween(jumpButton, { scaleX: 0.92, scaleY: 0.92 }, { duration: 80, easing: tween.easeIn, onFinish: function onFinish() { tween(jumpButton, { scaleX: 1, scaleY: 1 }, { duration: 80, easing: tween.easeOut }); } }); } }; // --- Main Game Update --- game.update = function () { if (isGameOver || isYouWin) return; // --- Move platforms left (simulate box moving right) --- for (var i = 0; i < platforms.length; i++) { platforms[i].x -= SCROLL_SPEED; } // --- Move box horizontally (box stays at fixed x, but can fall/jump) --- // Gravity box.vy += GRAVITY; box.y += box.vy; // --- Platform collision --- var landedPlat = boxOnPlatform(); if (landedPlat) { // Snap box to platform box.y = landedPlat.y - PLATFORM_HEIGHT / 2 - BOX_SIZE / 2; box.vy = 0; box.isJumping = false; } else { // If box falls below screen, game over if (box.y > GAME_HEIGHT + BOX_SIZE) { triggerGameOver(); return; } } // --- Check if box passed a platform --- // Find the next platform to pass var nextPlat = platforms[currentPlatformIndex + 1]; if (nextPlat && box.x > nextPlat.x - PLATFORM_WIDTH / 2) { // Passed a platform currentPlatformIndex++; platformsPassed++; scoreText.setText(platformsPassed + ' / ' + WIN_PLATFORMS); // Win condition if (platformsPassed >= WIN_PLATFORMS) { triggerYouWin(); return; } } // --- Remove platforms that are off screen, add new ones --- if (platforms.length > 0 && platforms[0].x < -PLATFORM_WIDTH) { // Remove from game platforms[0].destroy(); platforms.shift(); // Add new platform at the end var lastPlat = platforms[platforms.length - 1]; var plat = new Platform(); var gap = PLATFORM_GAP_MIN + Math.floor(Math.random() * (PLATFORM_GAP_MAX - PLATFORM_GAP_MIN)); plat.x = lastPlat.x + PLATFORM_WIDTH + gap; plat.y = PLATFORM_Y; game.addChild(plat); platforms.push(plat); } // --- Check for falling into gap (no platform under box) --- // If box is below all platforms and not jumping, game over if (!landedPlat && box.vy > 0 && box.y > PLATFORM_Y + 100) { triggerGameOver(); return; } }; // --- Start Game --- resetGame();
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,272 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Box (player) class
+var Box = Container.expand(function () {
+ var self = Container.call(this);
+ // Box asset: square
+ var box = self.attachAsset('box', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ box.width = 120;
+ box.height = 120;
+ // Physics
+ self.vx = 0;
+ self.vy = 0;
+ self.isJumping = false;
+ // For collision, use self's position and box's size
+ self.getBounds = function () {
+ return {
+ x: self.x - box.width / 2,
+ y: self.y - box.height / 2,
+ width: box.width,
+ height: box.height
+ };
+ };
+ return self;
+});
+// Platform class: a static platform the box can land on
+var Platform = Container.expand(function () {
+ var self = Container.call(this);
+ // Platform asset: wide, short rectangle
+ var plat = self.attachAsset('platform', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Set default width/height for platform
+ plat.width = 400;
+ plat.height = 60;
+ // For collision, use self's position and plat's size
+ self.getBounds = function () {
+ return {
+ x: self.x - plat.width / 2,
+ y: self.y - plat.height / 2,
+ width: plat.width,
+ height: plat.height
+ };
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x222244
+});
+
+/****
+* Game Code
+****/
+// Game constants
+// Platform and box colors
+var GAME_WIDTH = 2048;
+var GAME_HEIGHT = 2732;
+var PLATFORM_WIDTH = 400;
+var PLATFORM_HEIGHT = 60;
+var BOX_SIZE = 120;
+var PLATFORM_GAP_MIN = 220;
+var PLATFORM_GAP_MAX = 400;
+var PLATFORM_Y = GAME_HEIGHT * 0.7;
+var BOX_START_X = 400;
+var BOX_START_Y = PLATFORM_Y - PLATFORM_HEIGHT / 2 - BOX_SIZE / 2;
+var SCROLL_SPEED = 10; // px per frame
+var JUMP_VY = -38; // initial jump velocity
+var GRAVITY = 3; // gravity per frame
+var WIN_PLATFORMS = 10;
+// Game state
+var platforms = [];
+var box;
+var currentPlatformIndex = 0;
+var jumpButton;
+var scoreText;
+var isGameOver = false;
+var isYouWin = false;
+var platformsPassed = 0;
+// --- UI: Score ---
+scoreText = new Text2('0 / ' + WIN_PLATFORMS, {
+ size: 100,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreText);
+// --- UI: Jump Button ---
+jumpButton = new Container();
+var btnBg = jumpButton.attachAsset('jumpbtn', {
+ anchorX: 0.5,
+ anchorY: 0.5
+});
+btnBg.width = 400;
+btnBg.height = 180;
+btnBg.tint = 0xFF5A36;
+var btnLabel = new Text2('Zıpla', {
+ size: 80,
+ fill: "#fff"
+});
+btnLabel.anchor.set(0.5, 0.5);
+jumpButton.addChild(btnLabel);
+// Place button at bottom center, above bottom edge
+jumpButton.x = GAME_WIDTH / 2;
+jumpButton.y = GAME_HEIGHT - 250;
+game.addChild(jumpButton);
+// --- Create Platforms ---
+function createInitialPlatforms() {
+ // Clear old
+ for (var i = 0; i < platforms.length; i++) {
+ platforms[i].destroy();
+ }
+ platforms = [];
+ var x = BOX_START_X - 100; // Start a bit left of box
+ for (var i = 0; i < WIN_PLATFORMS + 2; i++) {
+ var plat = new Platform();
+ plat.x = x;
+ plat.y = PLATFORM_Y;
+ game.addChild(plat);
+ platforms.push(plat);
+ // Next platform: random gap
+ var gap = PLATFORM_GAP_MIN + Math.floor(Math.random() * (PLATFORM_GAP_MAX - PLATFORM_GAP_MIN));
+ x += PLATFORM_WIDTH + gap;
+ }
+}
+// --- Create Box ---
+function createBox() {
+ if (box) box.destroy();
+ box = new Box();
+ box.x = BOX_START_X;
+ box.y = BOX_START_Y;
+ box.vx = 0;
+ box.vy = 0;
+ box.isJumping = false;
+ game.addChild(box);
+}
+// --- Reset Game State ---
+function resetGame() {
+ isGameOver = false;
+ isYouWin = false;
+ platformsPassed = 0;
+ currentPlatformIndex = 0;
+ scoreText.setText('0 / ' + WIN_PLATFORMS);
+ createInitialPlatforms();
+ createBox();
+}
+// --- Platform Collision Detection ---
+function boxOnPlatform() {
+ // Check if box is standing on any platform (from currentPlatformIndex and next)
+ var bounds = box.getBounds();
+ for (var i = 0; i < platforms.length; i++) {
+ var plat = platforms[i];
+ var pb = plat.getBounds();
+ // Only check platforms under/near the box
+ if (bounds.x + bounds.width * 0.7 > pb.x && bounds.x + bounds.width * 0.3 < pb.x + pb.width && Math.abs(bounds.y + bounds.height - pb.y) < 30 && box.vy >= 0) {
+ return plat;
+ }
+ }
+ return null;
+}
+// --- Game Over ---
+function triggerGameOver() {
+ if (isGameOver) return;
+ isGameOver = true;
+ LK.effects.flashScreen(0xff0000, 800);
+ LK.showGameOver();
+}
+// --- You Win ---
+function triggerYouWin() {
+ if (isYouWin) return;
+ isYouWin = true;
+ LK.effects.flashScreen(0x00ff00, 800);
+ LK.showYouWin();
+}
+// --- Handle Jump Button ---
+jumpButton.down = function (x, y, obj) {
+ if (isGameOver || isYouWin) return;
+ if (!box.isJumping) {
+ box.vy = JUMP_VY;
+ box.isJumping = true;
+ // Animate button press
+ tween(jumpButton, {
+ scaleX: 0.92,
+ scaleY: 0.92
+ }, {
+ duration: 80,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ tween(jumpButton, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 80,
+ easing: tween.easeOut
+ });
+ }
+ });
+ }
+};
+// --- Main Game Update ---
+game.update = function () {
+ if (isGameOver || isYouWin) return;
+ // --- Move platforms left (simulate box moving right) ---
+ for (var i = 0; i < platforms.length; i++) {
+ platforms[i].x -= SCROLL_SPEED;
+ }
+ // --- Move box horizontally (box stays at fixed x, but can fall/jump) ---
+ // Gravity
+ box.vy += GRAVITY;
+ box.y += box.vy;
+ // --- Platform collision ---
+ var landedPlat = boxOnPlatform();
+ if (landedPlat) {
+ // Snap box to platform
+ box.y = landedPlat.y - PLATFORM_HEIGHT / 2 - BOX_SIZE / 2;
+ box.vy = 0;
+ box.isJumping = false;
+ } else {
+ // If box falls below screen, game over
+ if (box.y > GAME_HEIGHT + BOX_SIZE) {
+ triggerGameOver();
+ return;
+ }
+ }
+ // --- Check if box passed a platform ---
+ // Find the next platform to pass
+ var nextPlat = platforms[currentPlatformIndex + 1];
+ if (nextPlat && box.x > nextPlat.x - PLATFORM_WIDTH / 2) {
+ // Passed a platform
+ currentPlatformIndex++;
+ platformsPassed++;
+ scoreText.setText(platformsPassed + ' / ' + WIN_PLATFORMS);
+ // Win condition
+ if (platformsPassed >= WIN_PLATFORMS) {
+ triggerYouWin();
+ return;
+ }
+ }
+ // --- Remove platforms that are off screen, add new ones ---
+ if (platforms.length > 0 && platforms[0].x < -PLATFORM_WIDTH) {
+ // Remove from game
+ platforms[0].destroy();
+ platforms.shift();
+ // Add new platform at the end
+ var lastPlat = platforms[platforms.length - 1];
+ var plat = new Platform();
+ var gap = PLATFORM_GAP_MIN + Math.floor(Math.random() * (PLATFORM_GAP_MAX - PLATFORM_GAP_MIN));
+ plat.x = lastPlat.x + PLATFORM_WIDTH + gap;
+ plat.y = PLATFORM_Y;
+ game.addChild(plat);
+ platforms.push(plat);
+ }
+ // --- Check for falling into gap (no platform under box) ---
+ // If box is below all platforms and not jumping, game over
+ if (!landedPlat && box.vy > 0 && box.y > PLATFORM_Y + 100) {
+ triggerGameOver();
+ return;
+ }
+};
+// --- Start Game ---
+resetGame();
\ No newline at end of file