User prompt
Coin yazısı taşmış
User prompt
Oyun bitince skor yazmıyor düzelt
User prompt
Oyunun adı ve kendisi İngilizce olsun
User prompt
Boşluk varsa otomatik zıplama yoksa zıplama yok
User prompt
Boşluk yokken zıplamasın
User prompt
Boşlukta otomatik zıplama olsun
User prompt
Boşluğa gelince otomatik zıplayınca
User prompt
Zıplama çalışmıyor
User prompt
Boş yerden zıplayarak geçilsin
User prompt
Zıplama olsun
Code edit (1 edits merged)
Please save this source code
User prompt
Uzun Kaydırak (The Long Slide)
Initial prompt
Uzun kaydırak
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Boost: Speed boost pad var Boost = Container.expand(function () { var self = Container.call(this); var boost = self.attachAsset('boost', { anchorX: 0.5, anchorY: 0.5 }); return self; }); // Coin: Collectible var Coin = Container.expand(function () { var self = Container.call(this); var coin = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); // For simple spin animation self.spinTick = 0; self.update = function () { self.spinTick++; coin.scaleX = 0.7 + 0.3 * Math.abs(Math.sin(self.spinTick * 0.15)); }; return self; }); // Obstacle: Stationary object on the slide var Obstacle = Container.expand(function () { var self = Container.call(this); var obs = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); return self; }); // Player: The character controlled by the player var Player = Container.expand(function () { var self = Container.call(this); var player = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); // For jump animation self.isJumping = false; self.jumpTick = 0; self.jumpDuration = 0; self.jumpHeight = 0; self.update = function () { if (self.isJumping) { self.jumpTick++; // Simple jump arc var t = self.jumpTick / self.jumpDuration; if (t > 1) t = 1; self.y = self.baseY - Math.sin(Math.PI * t) * self.jumpHeight; if (self.jumpTick >= self.jumpDuration) { self.isJumping = false; self.y = self.baseY; } } }; // Start jump self.startJump = function (duration, height) { if (!self.isJumping) { self.isJumping = true; self.jumpTick = 0; self.jumpDuration = duration; self.jumpHeight = height; self.baseY = self.y; } }; return self; }); // SlideSegment: A piece of the slide, can be straight or curved var SlideSegment = Container.expand(function () { var self = Container.call(this); var segment = self.attachAsset('slideSegment', { anchorX: 0.5, anchorY: 0.5 }); // Type: 'straight', 'left', 'right', 'jump', 'boost' self.type = 'straight'; // For curve: curveAmount in px, positive=right, negative=left self.curveAmount = 0; // For jump: isJump self.isJump = false; // For boost: isBoost self.isBoost = false; // For segment index self.segmentIndex = 0; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a2e }); /**** * Game Code ****/ // Speed boost // Player character // Coin // Obstacle // Slide (track) segment // Game constants var GAME_WIDTH = 2048; var GAME_HEIGHT = 2732; var SLIDE_WIDTH = 800; var SLIDE_SEGMENT_HEIGHT = 300; var PLAYER_START_X = GAME_WIDTH / 2; var PLAYER_START_Y = GAME_HEIGHT * 0.7; var PLAYER_MOVE_LIMIT = SLIDE_WIDTH / 2 - 80; var PLAYER_SPEED = 18; // px per tick (vertical) var PLAYER_MAX_SPEED = 38; var PLAYER_MIN_SPEED = 12; var PLAYER_ACCEL = 0.01; var PLAYER_DECEL = 0.02; var BOOST_SPEED = 32; var BOOST_DURATION = 60; // ticks var JUMP_DURATION = 50; // ticks var JUMP_HEIGHT = 220; var OBSTACLE_RADIUS = 60; var COIN_RADIUS = 40; var SLIDE_CURVE_MAX = 220; // px per segment var SLIDE_CURVE_CHANCE = 0.25; var OBSTACLE_CHANCE = 0.35; var COIN_CHANCE = 0.25; var BOOST_CHANCE = 0.10; var JUMP_CHANCE = 0.08; // Game state var slideSegments = []; var obstacles = []; var coins = []; var boosts = []; var player = null; var distance = 0; var coinCount = 0; var speed = PLAYER_SPEED; var boostTicks = 0; var isGameOver = false; var dragX = null; var dragStartX = null; var dragStartPlayerX = null; var lastMoveX = null; var lastMoveY = null; var lastSegmentIndex = 0; var jumpQueued = false; // Score display (English) var scoreTxt = new Text2('Score: 0', { size: 120, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Coin display (English) var coinTxt = new Text2('Coins: 0', { size: 90, fill: 0xFFE066 }); coinTxt.anchor.set(0.5, 0); LK.gui.topRight.addChild(coinTxt); // Helper: Generate a slide segment function createSlideSegment(type, curveAmount, y) { var seg = new SlideSegment(); seg.type = type; seg.curveAmount = curveAmount || 0; seg.x = GAME_WIDTH / 2; seg.y = y; seg.segmentIndex = lastSegmentIndex++; if (type === 'left' || type === 'right') { seg.curveAmount = curveAmount; } if (type === 'jump') { seg.isJump = true; } if (type === 'boost') { seg.isBoost = true; } slideSegments.push(seg); game.addChild(seg); return seg; } // Helper: Generate an obstacle function createObstacle(x, y) { var obs = new Obstacle(); obs.x = x; obs.y = y; obstacles.push(obs); game.addChild(obs); return obs; } // Helper: Generate a coin function createCoin(x, y) { var c = new Coin(); c.x = x; c.y = y; coins.push(c); game.addChild(c); return c; } // Helper: Generate a boost function createBoost(x, y) { var b = new Boost(); b.x = x; b.y = y; boosts.push(b); game.addChild(b); return b; } // Helper: Remove offscreen objects function cleanupObjects() { // Slide segments for (var i = slideSegments.length - 1; i >= 0; i--) { if (slideSegments[i].y > GAME_HEIGHT + SLIDE_SEGMENT_HEIGHT) { slideSegments[i].destroy(); slideSegments.splice(i, 1); } } // Obstacles for (var i = obstacles.length - 1; i >= 0; i--) { if (obstacles[i].y > GAME_HEIGHT + 200) { obstacles[i].destroy(); obstacles.splice(i, 1); } } // Coins for (var i = coins.length - 1; i >= 0; i--) { if (coins[i].y > GAME_HEIGHT + 200) { coins[i].destroy(); coins.splice(i, 1); } } // Boosts for (var i = boosts.length - 1; i >= 0; i--) { if (boosts[i].y > GAME_HEIGHT + 200) { boosts[i].destroy(); boosts.splice(i, 1); } } } // Helper: Generate next slide segment (randomly) function generateNextSegment() { var lastSeg = slideSegments[slideSegments.length - 1]; var y = lastSeg.y - SLIDE_SEGMENT_HEIGHT; var type = 'straight'; var curveAmount = 0; var rand = Math.random(); if (rand < SLIDE_CURVE_CHANCE) { // Curve if (Math.random() < 0.5) { type = 'left'; curveAmount = -SLIDE_CURVE_MAX * (0.5 + Math.random() * 0.5); } else { type = 'right'; curveAmount = SLIDE_CURVE_MAX * (0.5 + Math.random() * 0.5); } } else if (rand < SLIDE_CURVE_CHANCE + JUMP_CHANCE) { type = 'jump'; } else if (rand < SLIDE_CURVE_CHANCE + JUMP_CHANCE + BOOST_CHANCE) { type = 'boost'; } var seg = createSlideSegment(type, curveAmount, y); // Place obstacles, coins, boosts // Obstacles: not on jump or boost if (type !== 'jump' && type !== 'boost' && Math.random() < OBSTACLE_CHANCE) { var obsX = GAME_WIDTH / 2 + (Math.random() - 0.5) * (SLIDE_WIDTH - 200); createObstacle(obsX, y); } // Coins: not on jump if (type !== 'jump' && Math.random() < COIN_CHANCE) { var coinX = GAME_WIDTH / 2 + (Math.random() - 0.5) * (SLIDE_WIDTH - 200); createCoin(coinX, y - SLIDE_SEGMENT_HEIGHT / 3); } // Boost: only on boost segment if (type === 'boost') { createBoost(GAME_WIDTH / 2, y); } } // Helper: Check if player is on slide function isPlayerOnSlide() { // Find the closest segment under the player var minDist = 99999; var seg = null; for (var i = 0; i < slideSegments.length; i++) { var s = slideSegments[i]; var dy = Math.abs(player.y - s.y); if (dy < SLIDE_SEGMENT_HEIGHT / 2 && dy < minDist) { minDist = dy; seg = s; } } if (!seg) return false; // Slide center x var centerX = seg.x; // Slide width var width = SLIDE_WIDTH; // For curve, offset centerX if (seg.type === 'left' || seg.type === 'right') { centerX += seg.curveAmount * ((player.y - seg.y) / SLIDE_SEGMENT_HEIGHT); } // For jump, always on slide if (seg.isJump) return true; // Check if player.x is within slide bounds return Math.abs(player.x - centerX) < width / 2 - 60; } // Helper: Start jump function startPlayerJump() { if (!player.isJumping) { player.startJump(JUMP_DURATION, JUMP_HEIGHT); } } // Helper: End game function triggerGameOver() { if (!isGameOver) { isGameOver = true; LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } // Initialize player player = new Player(); player.x = PLAYER_START_X; player.y = PLAYER_START_Y; game.addChild(player); // Generate initial slide slideSegments = []; lastSegmentIndex = 0; var segY = PLAYER_START_Y + 200; for (var i = 0; i < 10; i++) { createSlideSegment('straight', 0, segY); segY -= SLIDE_SEGMENT_HEIGHT; } // Initial objects obstacles = []; coins = []; boosts = []; distance = 0; coinCount = 0; speed = PLAYER_SPEED; boostTicks = 0; isGameOver = false; jumpQueued = false; // Input: Drag to steer game.down = function (x, y, obj) { if (isGameOver) return; dragX = x; dragStartX = x; dragStartPlayerX = player.x; lastMoveX = x; lastMoveY = y; }; game.move = function (x, y, obj) { if (isGameOver) return; if (dragX !== null) { var dx = x - dragStartX; var newX = dragStartPlayerX + dx; // Clamp to slide width var minX = GAME_WIDTH / 2 - PLAYER_MOVE_LIMIT; var maxX = GAME_WIDTH / 2 + PLAYER_MOVE_LIMIT; if (newX < minX) newX = minX; if (newX > maxX) newX = maxX; player.x = newX; lastMoveX = x; lastMoveY = y; } }; game.up = function (x, y, obj) { dragX = null; dragStartX = null; dragStartPlayerX = null; }; // Main game loop game.update = function () { if (isGameOver) return; // Move slide and objects down (simulate player moving down) for (var i = 0; i < slideSegments.length; i++) { slideSegments[i].y += speed; // For curve, move segment center if (slideSegments[i].type === 'left' || slideSegments[i].type === 'right') { slideSegments[i].x += slideSegments[i].curveAmount * (speed / SLIDE_SEGMENT_HEIGHT); } } for (var i = 0; i < obstacles.length; i++) { obstacles[i].y += speed; } for (var i = 0; i < coins.length; i++) { coins[i].y += speed; if (coins[i].update) coins[i].update(); } for (var i = 0; i < boosts.length; i++) { boosts[i].y += speed; } // Player jump update if (player.update) player.update(); // Generate new slide segments if needed var lastSeg = slideSegments[slideSegments.length - 1]; while (lastSeg.y > -SLIDE_SEGMENT_HEIGHT * 0.5) { generateNextSegment(); lastSeg = slideSegments[slideSegments.length - 1]; } // Remove offscreen objects cleanupObjects(); // Check for jump segment under player var onJump = false; for (var i = 0; i < slideSegments.length; i++) { var seg = slideSegments[i]; if (seg.isJump && Math.abs(player.y - seg.y) < SLIDE_SEGMENT_HEIGHT / 2) { onJump = true; break; } } if (onJump && !player.isJumping) { startPlayerJump(); } // Check for boost under player var onBoost = false; for (var i = 0; i < boosts.length; i++) { if (Math.abs(player.x - boosts[i].x) < 100 && Math.abs(player.y - boosts[i].y) < 80) { onBoost = true; break; } } if (onBoost) { boostTicks = BOOST_DURATION; } // Handle boost if (boostTicks > 0) { speed = BOOST_SPEED; boostTicks--; } else { // Gradually return to normal speed if (speed > PLAYER_SPEED) { speed -= PLAYER_DECEL; if (speed < PLAYER_SPEED) speed = PLAYER_SPEED; } else if (speed < PLAYER_SPEED) { speed += PLAYER_ACCEL; if (speed > PLAYER_SPEED) speed = PLAYER_SPEED; } } // Check for coin collection for (var i = coins.length - 1; i >= 0; i--) { var c = coins[i]; if (Math.abs(player.x - c.x) < COIN_RADIUS + 40 && Math.abs(player.y - c.y) < COIN_RADIUS + 40) { coinCount++; coinTxt.setText('Coins: ' + coinCount); c.destroy(); coins.splice(i, 1); } } // Check for obstacle collision (ignore if jumping) if (!player.isJumping) { for (var i = 0; i < obstacles.length; i++) { var obs = obstacles[i]; if (Math.abs(player.x - obs.x) < OBSTACLE_RADIUS + 50 && Math.abs(player.y - obs.y) < OBSTACLE_RADIUS + 50) { triggerGameOver(); return; } } } // Check if player is on slide (unless jumping) if (!player.isJumping && !isPlayerOnSlide()) { // If player is not on slide and not jumping, trigger auto jump instead of game over startPlayerJump(); // Do not trigger game over, allow jump to save the player // Optionally, you could add a sound or effect here } // Update distance and score distance += speed; var score = Math.floor(distance / 10) + coinCount * 10; scoreTxt.setText('Score: ' + score); // Win condition: none (endless) }; /* End of game code */
===================================================================
--- original.js
+++ change.js
@@ -153,17 +153,17 @@
var lastMoveX = null;
var lastMoveY = null;
var lastSegmentIndex = 0;
var jumpQueued = false;
-// Score display
-var scoreTxt = new Text2('0', {
+// Score display (English)
+var scoreTxt = new Text2('Score: 0', {
size: 120,
fill: "#fff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
-// Coin display
-var coinTxt = new Text2('0', {
+// Coin display (English)
+var coinTxt = new Text2('Coins: 0', {
size: 90,
fill: 0xFFE066
});
coinTxt.anchor.set(0.5, 0);
@@ -450,9 +450,9 @@
for (var i = coins.length - 1; i >= 0; i--) {
var c = coins[i];
if (Math.abs(player.x - c.x) < COIN_RADIUS + 40 && Math.abs(player.y - c.y) < COIN_RADIUS + 40) {
coinCount++;
- coinTxt.setText(coinCount);
+ coinTxt.setText('Coins: ' + coinCount);
c.destroy();
coins.splice(i, 1);
}
}
@@ -467,27 +467,16 @@
}
}
// Check if player is on slide (unless jumping)
if (!player.isJumping && !isPlayerOnSlide()) {
- // Only trigger auto jump if there is actually a gap (not on any slide segment)
- // Check if there is a jump segment under the player (i.e. a real gap)
- var hasGap = true;
- for (var i = 0; i < slideSegments.length; i++) {
- var seg = slideSegments[i];
- if (Math.abs(player.y - seg.y) < SLIDE_SEGMENT_HEIGHT / 2) {
- hasGap = false;
- break;
- }
- }
- if (hasGap) {
- startPlayerJump();
- // Do not trigger game over, allow jump to save the player
- // Optionally, you could add a sound or effect here
- }
+ // If player is not on slide and not jumping, trigger auto jump instead of game over
+ startPlayerJump();
+ // Do not trigger game over, allow jump to save the player
+ // Optionally, you could add a sound or effect here
}
// Update distance and score
distance += speed;
var score = Math.floor(distance / 10) + coinCount * 10;
- scoreTxt.setText(score);
+ scoreTxt.setText('Score: ' + score);
// Win condition: none (endless)
};
/* End of game code */
\ No newline at end of file
Arttırmak. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Madeni Para. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Engel. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Çocuk. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Kaydırak. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat