User prompt
score ekarnın ortasında olsun
User prompt
score olsun
User prompt
score ekranın orta üstünde olsun
User prompt
score olsun ve her enemyi yok etiğimizde puan atsın
User prompt
platform bize doğru gelmesin olduğu yerde dursun
User prompt
havada bir coin olsun
Code edit (1 edits merged)
Please save this source code
User prompt
enemyleri y ekseninde 240 px aşağı indir
User prompt
enemyler platforma temas etsinler
User prompt
bayrak bize doğru gelmesin ve olduğu yerde dursun ve daha uzakta olsun ve enemyler birbirinde uzak olsun ve enemyler yere temas etsin ve enemyler daha fazla olsun
User prompt
kazandığımız yerde bir bayrak olsun
User prompt
kamera oyuncyu takip etsin
User prompt
enemy platforma temas ederek gitsin
User prompt
coin olmasın
User prompt
score olmasın
User prompt
platformu uzat çok uzat
User prompt
platformlar olmasın ve canları sola yasla ve zemini uzat
User prompt
oyunu yavaşlat
Code edit (1 edits merged)
Please save this source code
User prompt
Super Platformer Run
Initial prompt
marıo
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Coin class var Coin = Container.expand(function () { var self = Container.call(this); // Attach coin asset (yellow ellipse) var coinSprite = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); self.width = coinSprite.width; self.height = coinSprite.height; // Animation: simple up-down bobbing self.baseY = 0; self.bobDir = 1; self.update = function () { self.x -= scrollSpeed; // Bobbing animation if (self.baseY === 0) self.baseY = self.y; self.y = self.baseY + Math.sin(LK.ticks / 10 + self.x / 100) * 20; }; return self; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); // Attach enemy asset (blue box) var enemySprite = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 1 }); self.width = enemySprite.width; self.height = enemySprite.height; // Simple left-right movement on platform self.vx = -scrollSpeed; self.moveRange = 100; self.baseX = 0; self.update = function () { self.x -= scrollSpeed; // Optionally, add some movement if (self.baseX === 0) self.baseX = self.x; self.x = self.baseX + Math.sin(LK.ticks / 40) * self.moveRange; }; return self; }); // Platform class var Platform = Container.expand(function () { var self = Container.call(this); // Attach platform asset (green box) var platformSprite = self.attachAsset('platform', { anchorX: 0, anchorY: 0 }); self.width = platformSprite.width; self.height = platformSprite.height; // Platforms are static, but can be moved for scrolling self.update = function () { // Move left for scrolling effect self.x -= scrollSpeed; }; return self; }); // Player class var Player = Container.expand(function () { var self = Container.call(this); // Attach player asset (red box) var playerSprite = self.attachAsset('player', { anchorX: 0.5, anchorY: 1 }); // Physics properties self.vx = 0; self.vy = 0; self.isOnGround = false; self.width = playerSprite.width; self.height = playerSprite.height; // Jumping state self.isJumping = false; // Update method called every tick self.update = function () { // Gravity self.vy += gravity; // Horizontal movement (auto-run) self.x += self.vx; // Vertical movement self.y += self.vy; // Prevent falling below ground if (self.y > groundY) { self.y = groundY; self.vy = 0; self.isOnGround = true; self.isJumping = false; } else { self.isOnGround = false; } }; // Jump method self.jump = function () { if (self.isOnGround && !self.isJumping) { self.vy = -jumpStrength; self.isJumping = true; self.isOnGround = false; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb // Sky blue }); /**** * Game Code ****/ // Tween plugin for animations // --- Game constants --- var gravity = 2.5; var jumpStrength = 55; var scrollSpeed = 16; var groundY = 2300; // Y position of the ground/platforms // --- Game state --- var player; var platforms = []; var coins = []; var enemies = []; var score = 0; var lives = 3; var level = 1; var isGameOver = false; var isYouWin = false; // --- GUI elements --- var scoreTxt = new Text2('0', { size: 120, fill: 0xFFF700 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var livesTxt = new Text2('♥♥♥', { size: 100, fill: 0xFF4444 }); livesTxt.anchor.set(0.5, 0); LK.gui.topRight.addChild(livesTxt); // --- Asset initialization (shapes) --- // --- Helper functions --- // Create a platform at (x, y) with optional width function createPlatform(x, y, width) { var plat = new Platform(); plat.x = x; plat.y = y; if (width) plat.width = width; platforms.push(plat); game.addChild(plat); return plat; } // Create a coin at (x, y) function createCoin(x, y) { var coin = new Coin(); coin.x = x; coin.y = y; coins.push(coin); game.addChild(coin); return coin; } // Create an enemy at (x, y) function createEnemy(x, y) { var enemy = new Enemy(); enemy.x = x; enemy.y = y; enemies.push(enemy); game.addChild(enemy); return enemy; } // Reset game state for new game or level function resetGame() { // Remove all platforms, coins, enemies for (var i = 0; i < platforms.length; i++) platforms[i].destroy(); for (var i = 0; i < coins.length; i++) coins[i].destroy(); for (var i = 0; i < enemies.length; i++) enemies[i].destroy(); platforms = []; coins = []; enemies = []; // Reset score and lives score = 0; lives = 3; level = 1; isGameOver = false; isYouWin = false; LK.setScore(0); // Update GUI scoreTxt.setText(score); livesTxt.setText('♥♥♥'); // Create player if (player) player.destroy(); player = new Player(); player.x = 300; player.y = groundY; player.vx = scrollSpeed; game.addChild(player); // Create level createLevel(level); } // Create a level layout function createLevel(levelNum) { // Simple level: ground platform, some floating platforms, coins, enemies // Ground createPlatform(0, groundY, 2048 * 2); // Floating platforms createPlatform(700, groundY - 350, 400); createPlatform(1200, groundY - 600, 400); createPlatform(1700, groundY - 350, 400); createPlatform(2200, groundY - 500, 400); createPlatform(2600, groundY - 800, 400); // Coins createCoin(800, groundY - 420); createCoin(1300, groundY - 670); createCoin(1750, groundY - 420); createCoin(2250, groundY - 570); createCoin(2650, groundY - 870); // Enemies createEnemy(1100, groundY - 160); createEnemy(2000, groundY - 160); createEnemy(2500, groundY - 860); // End flag (invisible, just a platform at far right) createPlatform(3000, groundY - 200, 200); } // --- Collision detection --- function rectsIntersect(a, b) { return a.x - a.width * 0.5 < b.x + b.width * 0.5 && a.x + a.width * 0.5 > b.x - b.width * 0.5 && a.y - a.height < b.y && a.y > b.y - b.height; } // --- Touch controls --- // Touch anywhere to jump game.down = function (x, y, obj) { if (isGameOver || isYouWin) return; player.jump(); }; // --- Main game update loop --- game.update = function () { if (isGameOver || isYouWin) return; // Update player player.update(); // Camera: keep player at 1/3 of screen, scroll world var cameraX = player.x - 600; if (cameraX < 0) cameraX = 0; // Update platforms for (var i = platforms.length - 1; i >= 0; i--) { var plat = platforms[i]; plat.update(); // Remove platforms that are off screen if (plat.x + plat.width < cameraX - 200) { plat.destroy(); platforms.splice(i, 1); } } // Update coins for (var i = coins.length - 1; i >= 0; i--) { var coin = coins[i]; coin.update(); // Remove coins that are off screen if (coin.x < cameraX - 200) { coin.destroy(); coins.splice(i, 1); continue; } // Collect coin if (rectsIntersect(player, coin)) { score += 1; LK.setScore(score); scoreTxt.setText(score); coin.destroy(); coins.splice(i, 1); } } // Update enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; enemy.update(); // Remove enemies that are off screen if (enemy.x < cameraX - 200) { enemy.destroy(); enemies.splice(i, 1); continue; } // Player hits enemy (from above) if (rectsIntersect(player, enemy) && player.vy > 0 && player.y - player.height < enemy.y - enemy.height + 30) { // Defeat enemy enemy.destroy(); enemies.splice(i, 1); score += 5; LK.setScore(score); scoreTxt.setText(score); player.vy = -jumpStrength * 0.7; // Bounce } // Player collides with enemy (side or bottom) else if (rectsIntersect(player, enemy)) { loseLife(); } } // Platform collision (only check platforms under player) var onPlatform = false; for (var i = 0; i < platforms.length; i++) { var plat = platforms[i]; // Check if player is falling and above platform if (player.vy >= 0 && player.x + player.width * 0.4 > plat.x && player.x - player.width * 0.4 < plat.x + plat.width && player.y > plat.y - 10 && player.y < plat.y + 40) { // Land on platform player.y = plat.y; player.vy = 0; player.isOnGround = true; player.isJumping = false; onPlatform = true; break; } } if (!onPlatform && player.y < groundY) { player.isOnGround = false; } // Check for falling off screen if (player.y > 2732 + 200) { loseLife(); } // Check for level end (reaching far right) if (player.x > 3200) { // Win! isYouWin = true; LK.showYouWin(); } }; // Lose a life and handle game over function loseLife() { if (isGameOver) return; lives -= 1; if (lives < 0) lives = 0; var livesStr = ''; for (var i = 0; i < lives; i++) livesStr += '♥'; livesTxt.setText(livesStr); // Flash screen red LK.effects.flashScreen(0xff0000, 800); if (lives <= 0) { isGameOver = true; LK.showGameOver(); } else { // Reset player position player.x = 300; player.y = groundY; player.vx = scrollSpeed; player.vy = 0; } } // --- Start game --- resetGame();
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,359 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Coin class
+var Coin = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach coin asset (yellow ellipse)
+ var coinSprite = self.attachAsset('coin', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.width = coinSprite.width;
+ self.height = coinSprite.height;
+ // Animation: simple up-down bobbing
+ self.baseY = 0;
+ self.bobDir = 1;
+ self.update = function () {
+ self.x -= scrollSpeed;
+ // Bobbing animation
+ if (self.baseY === 0) self.baseY = self.y;
+ self.y = self.baseY + Math.sin(LK.ticks / 10 + self.x / 100) * 20;
+ };
+ return self;
+});
+// Enemy class
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach enemy asset (blue box)
+ var enemySprite = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ self.width = enemySprite.width;
+ self.height = enemySprite.height;
+ // Simple left-right movement on platform
+ self.vx = -scrollSpeed;
+ self.moveRange = 100;
+ self.baseX = 0;
+ self.update = function () {
+ self.x -= scrollSpeed;
+ // Optionally, add some movement
+ if (self.baseX === 0) self.baseX = self.x;
+ self.x = self.baseX + Math.sin(LK.ticks / 40) * self.moveRange;
+ };
+ return self;
+});
+// Platform class
+var Platform = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach platform asset (green box)
+ var platformSprite = self.attachAsset('platform', {
+ anchorX: 0,
+ anchorY: 0
+ });
+ self.width = platformSprite.width;
+ self.height = platformSprite.height;
+ // Platforms are static, but can be moved for scrolling
+ self.update = function () {
+ // Move left for scrolling effect
+ self.x -= scrollSpeed;
+ };
+ return self;
+});
+// Player class
+var Player = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach player asset (red box)
+ var playerSprite = self.attachAsset('player', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ // Physics properties
+ self.vx = 0;
+ self.vy = 0;
+ self.isOnGround = false;
+ self.width = playerSprite.width;
+ self.height = playerSprite.height;
+ // Jumping state
+ self.isJumping = false;
+ // Update method called every tick
+ self.update = function () {
+ // Gravity
+ self.vy += gravity;
+ // Horizontal movement (auto-run)
+ self.x += self.vx;
+ // Vertical movement
+ self.y += self.vy;
+ // Prevent falling below ground
+ if (self.y > groundY) {
+ self.y = groundY;
+ self.vy = 0;
+ self.isOnGround = true;
+ self.isJumping = false;
+ } else {
+ self.isOnGround = false;
+ }
+ };
+ // Jump method
+ self.jump = function () {
+ if (self.isOnGround && !self.isJumping) {
+ self.vy = -jumpStrength;
+ self.isJumping = true;
+ self.isOnGround = false;
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87ceeb // Sky blue
+});
+
+/****
+* Game Code
+****/
+// Tween plugin for animations
+// --- Game constants ---
+var gravity = 2.5;
+var jumpStrength = 55;
+var scrollSpeed = 16;
+var groundY = 2300; // Y position of the ground/platforms
+// --- Game state ---
+var player;
+var platforms = [];
+var coins = [];
+var enemies = [];
+var score = 0;
+var lives = 3;
+var level = 1;
+var isGameOver = false;
+var isYouWin = false;
+// --- GUI elements ---
+var scoreTxt = new Text2('0', {
+ size: 120,
+ fill: 0xFFF700
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var livesTxt = new Text2('♥♥♥', {
+ size: 100,
+ fill: 0xFF4444
+});
+livesTxt.anchor.set(0.5, 0);
+LK.gui.topRight.addChild(livesTxt);
+// --- Asset initialization (shapes) ---
+// --- Helper functions ---
+// Create a platform at (x, y) with optional width
+function createPlatform(x, y, width) {
+ var plat = new Platform();
+ plat.x = x;
+ plat.y = y;
+ if (width) plat.width = width;
+ platforms.push(plat);
+ game.addChild(plat);
+ return plat;
+}
+// Create a coin at (x, y)
+function createCoin(x, y) {
+ var coin = new Coin();
+ coin.x = x;
+ coin.y = y;
+ coins.push(coin);
+ game.addChild(coin);
+ return coin;
+}
+// Create an enemy at (x, y)
+function createEnemy(x, y) {
+ var enemy = new Enemy();
+ enemy.x = x;
+ enemy.y = y;
+ enemies.push(enemy);
+ game.addChild(enemy);
+ return enemy;
+}
+// Reset game state for new game or level
+function resetGame() {
+ // Remove all platforms, coins, enemies
+ for (var i = 0; i < platforms.length; i++) platforms[i].destroy();
+ for (var i = 0; i < coins.length; i++) coins[i].destroy();
+ for (var i = 0; i < enemies.length; i++) enemies[i].destroy();
+ platforms = [];
+ coins = [];
+ enemies = [];
+ // Reset score and lives
+ score = 0;
+ lives = 3;
+ level = 1;
+ isGameOver = false;
+ isYouWin = false;
+ LK.setScore(0);
+ // Update GUI
+ scoreTxt.setText(score);
+ livesTxt.setText('♥♥♥');
+ // Create player
+ if (player) player.destroy();
+ player = new Player();
+ player.x = 300;
+ player.y = groundY;
+ player.vx = scrollSpeed;
+ game.addChild(player);
+ // Create level
+ createLevel(level);
+}
+// Create a level layout
+function createLevel(levelNum) {
+ // Simple level: ground platform, some floating platforms, coins, enemies
+ // Ground
+ createPlatform(0, groundY, 2048 * 2);
+ // Floating platforms
+ createPlatform(700, groundY - 350, 400);
+ createPlatform(1200, groundY - 600, 400);
+ createPlatform(1700, groundY - 350, 400);
+ createPlatform(2200, groundY - 500, 400);
+ createPlatform(2600, groundY - 800, 400);
+ // Coins
+ createCoin(800, groundY - 420);
+ createCoin(1300, groundY - 670);
+ createCoin(1750, groundY - 420);
+ createCoin(2250, groundY - 570);
+ createCoin(2650, groundY - 870);
+ // Enemies
+ createEnemy(1100, groundY - 160);
+ createEnemy(2000, groundY - 160);
+ createEnemy(2500, groundY - 860);
+ // End flag (invisible, just a platform at far right)
+ createPlatform(3000, groundY - 200, 200);
+}
+// --- Collision detection ---
+function rectsIntersect(a, b) {
+ return a.x - a.width * 0.5 < b.x + b.width * 0.5 && a.x + a.width * 0.5 > b.x - b.width * 0.5 && a.y - a.height < b.y && a.y > b.y - b.height;
+}
+// --- Touch controls ---
+// Touch anywhere to jump
+game.down = function (x, y, obj) {
+ if (isGameOver || isYouWin) return;
+ player.jump();
+};
+// --- Main game update loop ---
+game.update = function () {
+ if (isGameOver || isYouWin) return;
+ // Update player
+ player.update();
+ // Camera: keep player at 1/3 of screen, scroll world
+ var cameraX = player.x - 600;
+ if (cameraX < 0) cameraX = 0;
+ // Update platforms
+ for (var i = platforms.length - 1; i >= 0; i--) {
+ var plat = platforms[i];
+ plat.update();
+ // Remove platforms that are off screen
+ if (plat.x + plat.width < cameraX - 200) {
+ plat.destroy();
+ platforms.splice(i, 1);
+ }
+ }
+ // Update coins
+ for (var i = coins.length - 1; i >= 0; i--) {
+ var coin = coins[i];
+ coin.update();
+ // Remove coins that are off screen
+ if (coin.x < cameraX - 200) {
+ coin.destroy();
+ coins.splice(i, 1);
+ continue;
+ }
+ // Collect coin
+ if (rectsIntersect(player, coin)) {
+ score += 1;
+ LK.setScore(score);
+ scoreTxt.setText(score);
+ coin.destroy();
+ coins.splice(i, 1);
+ }
+ }
+ // Update enemies
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ var enemy = enemies[i];
+ enemy.update();
+ // Remove enemies that are off screen
+ if (enemy.x < cameraX - 200) {
+ enemy.destroy();
+ enemies.splice(i, 1);
+ continue;
+ }
+ // Player hits enemy (from above)
+ if (rectsIntersect(player, enemy) && player.vy > 0 && player.y - player.height < enemy.y - enemy.height + 30) {
+ // Defeat enemy
+ enemy.destroy();
+ enemies.splice(i, 1);
+ score += 5;
+ LK.setScore(score);
+ scoreTxt.setText(score);
+ player.vy = -jumpStrength * 0.7; // Bounce
+ }
+ // Player collides with enemy (side or bottom)
+ else if (rectsIntersect(player, enemy)) {
+ loseLife();
+ }
+ }
+ // Platform collision (only check platforms under player)
+ var onPlatform = false;
+ for (var i = 0; i < platforms.length; i++) {
+ var plat = platforms[i];
+ // Check if player is falling and above platform
+ if (player.vy >= 0 && player.x + player.width * 0.4 > plat.x && player.x - player.width * 0.4 < plat.x + plat.width && player.y > plat.y - 10 && player.y < plat.y + 40) {
+ // Land on platform
+ player.y = plat.y;
+ player.vy = 0;
+ player.isOnGround = true;
+ player.isJumping = false;
+ onPlatform = true;
+ break;
+ }
+ }
+ if (!onPlatform && player.y < groundY) {
+ player.isOnGround = false;
+ }
+ // Check for falling off screen
+ if (player.y > 2732 + 200) {
+ loseLife();
+ }
+ // Check for level end (reaching far right)
+ if (player.x > 3200) {
+ // Win!
+ isYouWin = true;
+ LK.showYouWin();
+ }
+};
+// Lose a life and handle game over
+function loseLife() {
+ if (isGameOver) return;
+ lives -= 1;
+ if (lives < 0) lives = 0;
+ var livesStr = '';
+ for (var i = 0; i < lives; i++) livesStr += '♥';
+ livesTxt.setText(livesStr);
+ // Flash screen red
+ LK.effects.flashScreen(0xff0000, 800);
+ if (lives <= 0) {
+ isGameOver = true;
+ LK.showGameOver();
+ } else {
+ // Reset player position
+ player.x = 300;
+ player.y = groundY;
+ player.vx = scrollSpeed;
+ player.vy = 0;
+ }
+}
+// --- Start game ---
+resetGame();
\ No newline at end of file