User prompt
Arka plan için de asset oluştur
User prompt
Zemin hareketini iptal et
User prompt
Daha akıcı bir şekilde ayarla
User prompt
Zemini de oyunla beraber sola kaydır
User prompt
Ve bunu yan yana tüm ekrana yetecek kadar çoğalt
User prompt
Zemini tam kare yap ve ekranın alt kısmına sığdır
User prompt
Kaktüs görselini biraz daha büyüt
User prompt
Zemini ekranın alt kısmına kadar genişlet
User prompt
Oyunu biraz yavaşlat
User prompt
Oyunu oluştur
User prompt
Oyun neden açılmıyor
Code edit (1 edits merged)
Please save this source code
User prompt
Dino Run: Sonsuz Koşu
Initial prompt
Chromedaki dinazor oyunu gibi bir oyun yapmak istiyorum
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { highScore: 0 }); /**** * Classes ****/ // Dino (player) class var Dino = Container.expand(function () { var self = Container.call(this); var dinoSprite = self.attachAsset('dino', { anchorX: 0.5, anchorY: 1 }); self.width = dinoSprite.width; self.height = dinoSprite.height; self.isJumping = false; self.isDucking = false; self.velocityY = 0; self.gravity = 2.2; self.jumpStrength = -48; self.groundY = 0; // Will be set after creation // Jump method self.jump = function () { if (!self.isJumping && !self.isDucking) { self.velocityY = self.jumpStrength; self.isJumping = true; } }; // Duck method self.duck = function () { if (!self.isJumping && !self.isDucking) { self.isDucking = true; // Animate duck (shrink height, move down) tween(self, { scaleY: 0.55, y: self.y + self.height * 0.45 }, { duration: 120, easing: tween.cubicIn }); } }; // Stand up from duck self.stand = function () { if (self.isDucking) { self.isDucking = false; tween(self, { scaleY: 1, y: self.groundY }, { duration: 120, easing: tween.cubicOut }); } }; // Update method self.update = function () { // Jumping physics if (self.isJumping) { self.y += self.velocityY; self.velocityY += self.gravity; if (self.y >= self.groundY) { self.y = self.groundY; self.velocityY = 0; self.isJumping = false; } } }; return self; }); // Obstacle base class var Obstacle = Container.expand(function () { var self = Container.call(this); self.speed = 0; // Will be set on spawn self.type = 'cactus'; // cactus, rock, bird self.passed = false; // For scoring self.update = function () { self.x -= self.speed; }; return self; }); // Rock var Rock = Obstacle.expand(function () { var self = Obstacle.call(this); var rockSprite = self.attachAsset('rock', { anchorX: 0.5, anchorY: 1 }); self.width = rockSprite.width; self.height = rockSprite.height; self.type = 'rock'; return self; }); // Cactus var Cactus = Obstacle.expand(function () { var self = Obstacle.call(this); var cactusSprite = self.attachAsset('cactus', { anchorX: 0.5, anchorY: 1 }); self.width = cactusSprite.width; self.height = cactusSprite.height; self.type = 'cactus'; return self; }); // Bird var Bird = Obstacle.expand(function () { var self = Obstacle.call(this); var birdSprite = self.attachAsset('bird', { anchorX: 0.5, anchorY: 1 }); self.width = birdSprite.width; self.height = birdSprite.height; self.type = 'bird'; // Bird flies at random heights self.flyY = 0; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xffffff }); /**** * Game Code ****/ // Ground // Bird obstacle // Rock obstacle // Cactus obstacle // Dino (player) // Game constants var GROUND_Y = 2300; var DINO_START_X = 400; var OBSTACLE_MIN_GAP = 600; var OBSTACLE_MAX_GAP = 1100; var OBSTACLE_TYPES = ['cactus', 'rock', 'bird']; var GAME_SPEED_START = 18; var GAME_SPEED_MAX = 44; var GAME_SPEED_INC = 0.00022; // Per tick var BIRD_HEIGHTS = [GROUND_Y - 120, GROUND_Y - 320, GROUND_Y - 520]; // Game state var dino; var ground; var obstacles = []; var score = 0; var highScore = storage.highScore || 0; var distance = 0; var gameSpeed = GAME_SPEED_START; var lastObstacleX = 0; var isGameOver = false; var scoreTxt, highScoreTxt; // Add ground ground = LK.getAsset('ground', { anchorX: 0, anchorY: 0, x: 0, y: GROUND_Y }); game.addChild(ground); // Add dino dino = new Dino(); dino.x = DINO_START_X; dino.groundY = GROUND_Y; dino.y = GROUND_Y; game.addChild(dino); // Score text scoreTxt = new Text2('0', { size: 110, fill: "#222" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // High score text highScoreTxt = new Text2('En Yüksek: ' + highScore, { size: 60, fill: "#888" }); highScoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(highScoreTxt); highScoreTxt.y = 120; // Helper: spawn obstacle function spawnObstacle() { var typeIdx = Math.floor(Math.random() * OBSTACLE_TYPES.length); var type = OBSTACLE_TYPES[typeIdx]; var obs; if (type === 'cactus') { obs = new Cactus(); obs.y = GROUND_Y; } else if (type === 'rock') { obs = new Rock(); obs.y = GROUND_Y; } else if (type === 'bird') { obs = new Bird(); var hIdx = Math.floor(Math.random() * BIRD_HEIGHTS.length); obs.y = BIRD_HEIGHTS[hIdx]; obs.flyY = obs.y; } obs.x = 2048 + obs.width; obs.speed = gameSpeed; obstacles.push(obs); game.addChild(obs); lastObstacleX = obs.x; } // Helper: reset game function resetGame() { // Remove obstacles for (var i = 0; i < obstacles.length; i++) { obstacles[i].destroy(); } obstacles = []; score = 0; distance = 0; gameSpeed = GAME_SPEED_START; lastObstacleX = 0; isGameOver = false; dino.x = DINO_START_X; dino.y = GROUND_Y; dino.groundY = GROUND_Y; dino.velocityY = 0; dino.isJumping = false; dino.isDucking = false; dino.scaleY = 1; scoreTxt.setText('0'); highScoreTxt.setText('En Yüksek: ' + highScore); } // Touch/press: jump or duck var touchStartY = null; var touchActive = false; game.down = function (x, y, obj) { if (isGameOver) return; touchStartY = y; touchActive = true; }; game.move = function (x, y, obj) { if (isGameOver) return; if (!touchActive) return; // If swipe up, jump if (touchStartY !== null && y < touchStartY - 80) { dino.jump(); touchActive = false; } // If swipe down, duck if (touchStartY !== null && y > touchStartY + 80) { dino.duck(); touchActive = false; } }; game.up = function (x, y, obj) { if (isGameOver) return; dino.stand(); touchStartY = null; touchActive = false; }; // Main update loop game.update = function () { if (isGameOver) return; // Update dino dino.update(); // Update obstacles for (var i = obstacles.length - 1; i >= 0; i--) { var obs = obstacles[i]; obs.speed = gameSpeed; obs.update(); // Bird: simple up-down movement if (obs.type === 'bird') { obs.y = obs.flyY + Math.sin(LK.ticks / 12 + i) * 18; } // Remove if off screen if (obs.x < -obs.width) { obs.destroy(); obstacles.splice(i, 1); continue; } // Scoring: passed dino if (!obs.passed && obs.x + obs.width / 2 < dino.x - dino.width / 2) { obs.passed = true; score += 1; scoreTxt.setText('' + score); } // Collision if (dino.intersects(obs)) { // If ducking and bird, allow pass if (obs.type === 'bird' && dino.isDucking && obs.y > dino.y - dino.height * 0.7) { continue; } // Game over isGameOver = true; LK.effects.flashScreen(0xff0000, 800); if (score > highScore) { highScore = score; storage.highScore = highScore; } LK.setTimeout(function () { LK.showGameOver(); }, 900); return; } } // Increase game speed if (gameSpeed < GAME_SPEED_MAX) { gameSpeed += GAME_SPEED_INC * (1 + score * 0.04); if (gameSpeed > GAME_SPEED_MAX) gameSpeed = GAME_SPEED_MAX; } // Distance for score distance += gameSpeed; // Spawn new obstacle if (obstacles.length === 0 || 2048 - lastObstacleX > OBSTACLE_MIN_GAP + Math.random() * (OBSTACLE_MAX_GAP - OBSTACLE_MIN_GAP)) { spawnObstacle(); } }; // Listen for game over to reset LK.on('gameover', function () { resetGame(); }); // Listen for you win (not used, but for completeness) LK.on('youwin', function () { resetGame(); });
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,328 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1", {
+ highScore: 0
+});
+
+/****
+* Classes
+****/
+// Dino (player) class
+var Dino = Container.expand(function () {
+ var self = Container.call(this);
+ var dinoSprite = self.attachAsset('dino', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ self.width = dinoSprite.width;
+ self.height = dinoSprite.height;
+ self.isJumping = false;
+ self.isDucking = false;
+ self.velocityY = 0;
+ self.gravity = 2.2;
+ self.jumpStrength = -48;
+ self.groundY = 0; // Will be set after creation
+ // Jump method
+ self.jump = function () {
+ if (!self.isJumping && !self.isDucking) {
+ self.velocityY = self.jumpStrength;
+ self.isJumping = true;
+ }
+ };
+ // Duck method
+ self.duck = function () {
+ if (!self.isJumping && !self.isDucking) {
+ self.isDucking = true;
+ // Animate duck (shrink height, move down)
+ tween(self, {
+ scaleY: 0.55,
+ y: self.y + self.height * 0.45
+ }, {
+ duration: 120,
+ easing: tween.cubicIn
+ });
+ }
+ };
+ // Stand up from duck
+ self.stand = function () {
+ if (self.isDucking) {
+ self.isDucking = false;
+ tween(self, {
+ scaleY: 1,
+ y: self.groundY
+ }, {
+ duration: 120,
+ easing: tween.cubicOut
+ });
+ }
+ };
+ // Update method
+ self.update = function () {
+ // Jumping physics
+ if (self.isJumping) {
+ self.y += self.velocityY;
+ self.velocityY += self.gravity;
+ if (self.y >= self.groundY) {
+ self.y = self.groundY;
+ self.velocityY = 0;
+ self.isJumping = false;
+ }
+ }
+ };
+ return self;
+});
+// Obstacle base class
+var Obstacle = Container.expand(function () {
+ var self = Container.call(this);
+ self.speed = 0; // Will be set on spawn
+ self.type = 'cactus'; // cactus, rock, bird
+ self.passed = false; // For scoring
+ self.update = function () {
+ self.x -= self.speed;
+ };
+ return self;
+});
+// Rock
+var Rock = Obstacle.expand(function () {
+ var self = Obstacle.call(this);
+ var rockSprite = self.attachAsset('rock', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ self.width = rockSprite.width;
+ self.height = rockSprite.height;
+ self.type = 'rock';
+ return self;
+});
+// Cactus
+var Cactus = Obstacle.expand(function () {
+ var self = Obstacle.call(this);
+ var cactusSprite = self.attachAsset('cactus', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ self.width = cactusSprite.width;
+ self.height = cactusSprite.height;
+ self.type = 'cactus';
+ return self;
+});
+// Bird
+var Bird = Obstacle.expand(function () {
+ var self = Obstacle.call(this);
+ var birdSprite = self.attachAsset('bird', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ self.width = birdSprite.width;
+ self.height = birdSprite.height;
+ self.type = 'bird';
+ // Bird flies at random heights
+ self.flyY = 0;
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
+ backgroundColor: 0xffffff
+});
+
+/****
+* Game Code
+****/
+// Ground
+// Bird obstacle
+// Rock obstacle
+// Cactus obstacle
+// Dino (player)
+// Game constants
+var GROUND_Y = 2300;
+var DINO_START_X = 400;
+var OBSTACLE_MIN_GAP = 600;
+var OBSTACLE_MAX_GAP = 1100;
+var OBSTACLE_TYPES = ['cactus', 'rock', 'bird'];
+var GAME_SPEED_START = 18;
+var GAME_SPEED_MAX = 44;
+var GAME_SPEED_INC = 0.00022; // Per tick
+var BIRD_HEIGHTS = [GROUND_Y - 120, GROUND_Y - 320, GROUND_Y - 520];
+// Game state
+var dino;
+var ground;
+var obstacles = [];
+var score = 0;
+var highScore = storage.highScore || 0;
+var distance = 0;
+var gameSpeed = GAME_SPEED_START;
+var lastObstacleX = 0;
+var isGameOver = false;
+var scoreTxt, highScoreTxt;
+// Add ground
+ground = LK.getAsset('ground', {
+ anchorX: 0,
+ anchorY: 0,
+ x: 0,
+ y: GROUND_Y
+});
+game.addChild(ground);
+// Add dino
+dino = new Dino();
+dino.x = DINO_START_X;
+dino.groundY = GROUND_Y;
+dino.y = GROUND_Y;
+game.addChild(dino);
+// Score text
+scoreTxt = new Text2('0', {
+ size: 110,
+ fill: "#222"
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// High score text
+highScoreTxt = new Text2('En Yüksek: ' + highScore, {
+ size: 60,
+ fill: "#888"
+});
+highScoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(highScoreTxt);
+highScoreTxt.y = 120;
+// Helper: spawn obstacle
+function spawnObstacle() {
+ var typeIdx = Math.floor(Math.random() * OBSTACLE_TYPES.length);
+ var type = OBSTACLE_TYPES[typeIdx];
+ var obs;
+ if (type === 'cactus') {
+ obs = new Cactus();
+ obs.y = GROUND_Y;
+ } else if (type === 'rock') {
+ obs = new Rock();
+ obs.y = GROUND_Y;
+ } else if (type === 'bird') {
+ obs = new Bird();
+ var hIdx = Math.floor(Math.random() * BIRD_HEIGHTS.length);
+ obs.y = BIRD_HEIGHTS[hIdx];
+ obs.flyY = obs.y;
+ }
+ obs.x = 2048 + obs.width;
+ obs.speed = gameSpeed;
+ obstacles.push(obs);
+ game.addChild(obs);
+ lastObstacleX = obs.x;
+}
+// Helper: reset game
+function resetGame() {
+ // Remove obstacles
+ for (var i = 0; i < obstacles.length; i++) {
+ obstacles[i].destroy();
+ }
+ obstacles = [];
+ score = 0;
+ distance = 0;
+ gameSpeed = GAME_SPEED_START;
+ lastObstacleX = 0;
+ isGameOver = false;
+ dino.x = DINO_START_X;
+ dino.y = GROUND_Y;
+ dino.groundY = GROUND_Y;
+ dino.velocityY = 0;
+ dino.isJumping = false;
+ dino.isDucking = false;
+ dino.scaleY = 1;
+ scoreTxt.setText('0');
+ highScoreTxt.setText('En Yüksek: ' + highScore);
+}
+// Touch/press: jump or duck
+var touchStartY = null;
+var touchActive = false;
+game.down = function (x, y, obj) {
+ if (isGameOver) return;
+ touchStartY = y;
+ touchActive = true;
+};
+game.move = function (x, y, obj) {
+ if (isGameOver) return;
+ if (!touchActive) return;
+ // If swipe up, jump
+ if (touchStartY !== null && y < touchStartY - 80) {
+ dino.jump();
+ touchActive = false;
+ }
+ // If swipe down, duck
+ if (touchStartY !== null && y > touchStartY + 80) {
+ dino.duck();
+ touchActive = false;
+ }
+};
+game.up = function (x, y, obj) {
+ if (isGameOver) return;
+ dino.stand();
+ touchStartY = null;
+ touchActive = false;
+};
+// Main update loop
+game.update = function () {
+ if (isGameOver) return;
+ // Update dino
+ dino.update();
+ // Update obstacles
+ for (var i = obstacles.length - 1; i >= 0; i--) {
+ var obs = obstacles[i];
+ obs.speed = gameSpeed;
+ obs.update();
+ // Bird: simple up-down movement
+ if (obs.type === 'bird') {
+ obs.y = obs.flyY + Math.sin(LK.ticks / 12 + i) * 18;
+ }
+ // Remove if off screen
+ if (obs.x < -obs.width) {
+ obs.destroy();
+ obstacles.splice(i, 1);
+ continue;
+ }
+ // Scoring: passed dino
+ if (!obs.passed && obs.x + obs.width / 2 < dino.x - dino.width / 2) {
+ obs.passed = true;
+ score += 1;
+ scoreTxt.setText('' + score);
+ }
+ // Collision
+ if (dino.intersects(obs)) {
+ // If ducking and bird, allow pass
+ if (obs.type === 'bird' && dino.isDucking && obs.y > dino.y - dino.height * 0.7) {
+ continue;
+ }
+ // Game over
+ isGameOver = true;
+ LK.effects.flashScreen(0xff0000, 800);
+ if (score > highScore) {
+ highScore = score;
+ storage.highScore = highScore;
+ }
+ LK.setTimeout(function () {
+ LK.showGameOver();
+ }, 900);
+ return;
+ }
+ }
+ // Increase game speed
+ if (gameSpeed < GAME_SPEED_MAX) {
+ gameSpeed += GAME_SPEED_INC * (1 + score * 0.04);
+ if (gameSpeed > GAME_SPEED_MAX) gameSpeed = GAME_SPEED_MAX;
+ }
+ // Distance for score
+ distance += gameSpeed;
+ // Spawn new obstacle
+ if (obstacles.length === 0 || 2048 - lastObstacleX > OBSTACLE_MIN_GAP + Math.random() * (OBSTACLE_MAX_GAP - OBSTACLE_MIN_GAP)) {
+ spawnObstacle();
+ }
+};
+// Listen for game over to reset
+LK.on('gameover', function () {
+ resetGame();
+});
+// Listen for you win (not used, but for completeness)
+LK.on('youwin', function () {
+ resetGame();
});
\ No newline at end of file
3d pixar tarzı kanat çırpan kuş yandan. In-Game asset. 2d. High contrast. No shadows
3d pixar tarzı kirpi yandan bakış. In-Game asset. 2d. High contrast. No shadows
Oyun arka planı gökyüzü 3d pixar. In-Game asset. 2d. High contrast. No shadows
Garip bir oyun karakteri 3d pixar tarzı. In-Game asset. 2d. High contrast. No shadows