User prompt
Ana menüde platformer yazıyor ya o yazıyı LizardRun olarak değiştir ve yazı fontunu da değiştir
User prompt
Skorda yaptığın güzelleştirmeleri elenince çıkan ekranda da yapar mısın
User prompt
Hala oyun bitince enemyler harekete devam ediyor
User prompt
Bir de elendikten sonra arkada oyun devam ediyor onu da düzeltebilir misin
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'scoreTxt.style.stroke = 0xFFD700;' Line Number: 416
User prompt
Skorun yazı fontunu biraz güzelleştirebilir misin
User prompt
Goldcoinler normal coinlere göre daha seyrek spawn olsun
User prompt
Düzelmedi
User prompt
Hala bir sorun bar gitmiyor bir daha bak
User prompt
Tablo halen daha gitmiyor bir daha bakar mısın
User prompt
Play again dedikten sonra o tablo yok olsun bir daha elenince geri gelsin
User prompt
Oyun sonsuza kadar devam etsin skor sınırı olmasın bir de oyuncu enemye deyip elendikten sonra o oyuncunun highscorunu ve en son yaptığı skorunu gösteren bir tablo ekrana gelsin ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Aynı anda ekranda en fazla 2 coin olsun
User prompt
Spawn olmuyor
User prompt
Goldcoin de diğer coin gibi belirli aralıklarla teleport olsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Yeni bir coin türü ekler misin iki kat puan kazandıracak
User prompt
Platformu biraz uzatabilir misin
User prompt
Oyunun başlangıcında sağ tarafa koymuşsun onu kaldırıp ana menüde sağ tarafa koy
User prompt
Sağ tarafada enemy assetini koy
User prompt
Platform assetini koymuşsun karakter assetini koy ve bu asseti sol tarafa koy
User prompt
Olmadı
User prompt
Oyun başlamadan önce bir ana menü çıksın orda start game tuşuna basınca oyun başlasın
User prompt
Animasyon ekleyince oyun bozuldu düzeltir misin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Karakter coin toplayınca bir animasyon gözüksün ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Havaya güneş ve bulut asseteri ekler misin güzel görünmesi için
/**** * Classes ****/ // Coin class var Coin = Container.expand(function () { var self = Container.call(this); var coinAsset = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); self.width = coinAsset.width; self.height = coinAsset.height; self.update = function () { // Optionally animate coin }; return self; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyAsset = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 1 }); self.vx = -5; self.width = enemyAsset.width; self.height = enemyAsset.height; self.update = function () { self.x += self.vx; if (self.lastX === undefined) self.lastX = self.x; }; return self; }); // Platform class var Platform = Container.expand(function () { var self = Container.call(this); var platAsset = self.attachAsset('platform', { anchorX: 0, anchorY: 0 }); self.width = platAsset.width; self.height = platAsset.height; // Allow dynamic width scaling self.setWidth = function (newWidth) { self.width = newWidth; platAsset.scaleX = newWidth / platAsset.width; }; return self; }); // Player class var Player = Container.expand(function () { var self = Container.call(this); var playerAsset = self.attachAsset('player', { anchorX: 0.5, anchorY: 1 }); self.vx = 0; self.vy = 0; self.isOnGround = false; self.width = playerAsset.width; self.height = playerAsset.height; self.update = function () { // Gravity self.vy += 2.5; // Clamp vy if (self.vy > 60) self.vy = 60; // Update sprite direction based on movement if (self.vx > 0) { // Moving right - face right (normal) playerAsset.scaleX = Math.abs(playerAsset.scaleX); } else if (self.vx < 0) { // Moving left - face left (flipped) playerAsset.scaleX = -Math.abs(playerAsset.scaleX); } self.x += self.vx; self.y += self.vy; // Save last position for collision checks if (self.lastX === undefined) self.lastX = self.x; if (self.lastY === undefined) self.lastY = self.y; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb // sky blue }); /**** * Game Code ****/ ; // --- Game variables --- var player; var platforms = []; var coins = []; var enemies = []; var score = 0; var scoreTxt; var dragStartX = null; var dragStartY = null; var jumpQueued = false; var enemySpawnDelay = 0; // Delay counter for enemy spawning // --- Setup game objects --- function setupLevel() { // Player player = new Player(); player.x = 300; player.y = 2300; // Position player on ground game.addChild(player); // Ground platform - single flat ground across entire screen var ground = new Platform(); ground.x = 0; ground.y = 2400; ground.setWidth(2048); // Full screen width game.addChild(ground); platforms.push(ground); // Coins var coin1 = new Coin(); coin1.x = 750; coin1.y = 2300; game.addChild(coin1); coins.push(coin1); var coin2 = new Coin(); coin2.x = 1250; coin2.y = 2200; game.addChild(coin2); coins.push(coin2); var coin3 = new Coin(); coin3.x = 1700; coin3.y = 2300; game.addChild(coin3); coins.push(coin3); // Enemies var enemy1 = new Enemy(); enemy1.x = 1000; enemy1.y = 2400; game.addChild(enemy1); enemies.push(enemy1); var enemy2 = new Enemy(); enemy2.x = 1800; enemy2.y = 2200; // Position at jumping height game.addChild(enemy2); enemies.push(enemy2); // Add more enemies at jumping height var enemy3 = new Enemy(); enemy3.x = 1400; enemy3.y = 2150; // Position at jumping height game.addChild(enemy3); enemies.push(enemy3); // Sky decorations var sun = LK.getAsset('sun', { anchorX: 0.5, anchorY: 0.5 }); sun.x = 1700; sun.y = 400; game.addChild(sun); var cloud1 = LK.getAsset('cloud', { anchorX: 0.5, anchorY: 0.5 }); cloud1.x = 500; cloud1.y = 600; game.addChild(cloud1); var cloud2 = LK.getAsset('cloud', { anchorX: 0.5, anchorY: 0.5 }); cloud2.x = 1200; cloud2.y = 500; game.addChild(cloud2); var cloud3 = LK.getAsset('cloud', { anchorX: 0.5, anchorY: 0.5 }); cloud3.x = 300; cloud3.y = 700; game.addChild(cloud3); // Score text scoreTxt = new Text2('0', { size: 120, fill: 0xFFF700 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); scoreTxt.setText(score); } setupLevel(); // --- Controls (touch left/right side to move) --- var isHoldingLeft = false; var isHoldingRight = false; game.down = function (x, y, obj) { if (x < 2048 / 2) { isHoldingLeft = true; isHoldingRight = false; } else { isHoldingRight = true; isHoldingLeft = false; } jumpQueued = true; // Jump when starting to hold }; game.move = function (x, y, obj) { // Update movement direction based on current touch position if (x < 2048 / 2) { isHoldingLeft = true; isHoldingRight = false; } else { isHoldingRight = true; isHoldingLeft = false; } }; game.up = function (x, y, obj) { isHoldingLeft = false; isHoldingRight = false; player.vx = 0; // Stop moving when releasing }; // --- Main game loop --- game.update = function () { // Set player velocity based on holding state if (isHoldingLeft) { player.vx = -12; // Move left when holding left side } else if (isHoldingRight) { player.vx = 12; // Move right when holding right side } else { player.vx = 0; // Stop when not holding } // Player update player.update(); // Clamp player to screen if (player.x < 0) player.x = 0; if (player.x > 2048) player.x = 2048; // Platform collision player.isOnGround = false; for (var i = 0; i < platforms.length; i++) { var plat = platforms[i]; // Simple AABB collision, only check if falling if (player.vy >= 0 && player.x + player.width / 2 > plat.x && player.x - player.width / 2 < plat.x + plat.width && player.y > plat.y && player.lastY <= plat.y) { // Land on platform player.y = plat.y; player.vy = 0; player.isOnGround = true; } } // Jump if (jumpQueued && player.isOnGround) { player.vy = -48; jumpQueued = false; } // Ensure maximum 2 coins at any time while (coins.length > 2) { var extraCoin = coins.pop(); extraCoin.destroy(); } // Coin collection and random teleportation for (var i = coins.length - 1; i >= 0; i--) { var coin = coins[i]; if (player.intersects(coin)) { score += 1; scoreTxt.setText(score); // Check win condition if (score >= 50) { LK.showYouWin(); return; } // Teleport coin to random position instead of destroying coin.x = Math.random() * 2048; // Random x position across screen coin.y = 2300 - Math.random() * 200; // Random height above ground } // Randomly teleport coins even when not collected if (Math.random() < 0.0005) { // Small chance each frame for random teleport coin.x = Math.random() * 2048; coin.y = 2300 - Math.random() * 200; } } // Update enemy spawn delay if (enemySpawnDelay > 0) { enemySpawnDelay--; } // Enemy update and collision for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; enemy.update(); // Remove if off screen and potentially respawn with delay if (enemy.x < -200) { enemy.destroy(); enemies.splice(i, 1); // Only spawn new enemy if no delay is active if (enemySpawnDelay <= 0) { var newEnemy = new Enemy(); newEnemy.x = 2200; // Start slightly off right edge // Randomly spawn at ground level or jumping height if (Math.random() < 0.4) { newEnemy.y = 2000 + Math.random() * 150; // Higher flying height range } else { newEnemy.y = 2400; // Ground level } game.addChild(newEnemy); enemies.push(newEnemy); // Set delay for next enemy spawn (2-4 seconds at 60fps) enemySpawnDelay = 120 + Math.random() * 120; } continue; } // Player/enemy collision var wasIntersecting = enemy.lastWasIntersecting || false; var isIntersecting = player.intersects(enemy); if (!wasIntersecting && isIntersecting) { // Player hit enemy: game over LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } enemy.lastWasIntersecting = isIntersecting; } // Save lastY for player player.lastY = player.y; player.lastX = player.x; };
/****
* Classes
****/
// Coin class
var Coin = Container.expand(function () {
var self = Container.call(this);
var coinAsset = self.attachAsset('coin', {
anchorX: 0.5,
anchorY: 0.5
});
self.width = coinAsset.width;
self.height = coinAsset.height;
self.update = function () {
// Optionally animate coin
};
return self;
});
// Enemy class
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyAsset = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 1
});
self.vx = -5;
self.width = enemyAsset.width;
self.height = enemyAsset.height;
self.update = function () {
self.x += self.vx;
if (self.lastX === undefined) self.lastX = self.x;
};
return self;
});
// Platform class
var Platform = Container.expand(function () {
var self = Container.call(this);
var platAsset = self.attachAsset('platform', {
anchorX: 0,
anchorY: 0
});
self.width = platAsset.width;
self.height = platAsset.height;
// Allow dynamic width scaling
self.setWidth = function (newWidth) {
self.width = newWidth;
platAsset.scaleX = newWidth / platAsset.width;
};
return self;
});
// Player class
var Player = Container.expand(function () {
var self = Container.call(this);
var playerAsset = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 1
});
self.vx = 0;
self.vy = 0;
self.isOnGround = false;
self.width = playerAsset.width;
self.height = playerAsset.height;
self.update = function () {
// Gravity
self.vy += 2.5;
// Clamp vy
if (self.vy > 60) self.vy = 60;
// Update sprite direction based on movement
if (self.vx > 0) {
// Moving right - face right (normal)
playerAsset.scaleX = Math.abs(playerAsset.scaleX);
} else if (self.vx < 0) {
// Moving left - face left (flipped)
playerAsset.scaleX = -Math.abs(playerAsset.scaleX);
}
self.x += self.vx;
self.y += self.vy;
// Save last position for collision checks
if (self.lastX === undefined) self.lastX = self.x;
if (self.lastY === undefined) self.lastY = self.y;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb // sky blue
});
/****
* Game Code
****/
;
// --- Game variables ---
var player;
var platforms = [];
var coins = [];
var enemies = [];
var score = 0;
var scoreTxt;
var dragStartX = null;
var dragStartY = null;
var jumpQueued = false;
var enemySpawnDelay = 0; // Delay counter for enemy spawning
// --- Setup game objects ---
function setupLevel() {
// Player
player = new Player();
player.x = 300;
player.y = 2300; // Position player on ground
game.addChild(player);
// Ground platform - single flat ground across entire screen
var ground = new Platform();
ground.x = 0;
ground.y = 2400;
ground.setWidth(2048); // Full screen width
game.addChild(ground);
platforms.push(ground);
// Coins
var coin1 = new Coin();
coin1.x = 750;
coin1.y = 2300;
game.addChild(coin1);
coins.push(coin1);
var coin2 = new Coin();
coin2.x = 1250;
coin2.y = 2200;
game.addChild(coin2);
coins.push(coin2);
var coin3 = new Coin();
coin3.x = 1700;
coin3.y = 2300;
game.addChild(coin3);
coins.push(coin3);
// Enemies
var enemy1 = new Enemy();
enemy1.x = 1000;
enemy1.y = 2400;
game.addChild(enemy1);
enemies.push(enemy1);
var enemy2 = new Enemy();
enemy2.x = 1800;
enemy2.y = 2200; // Position at jumping height
game.addChild(enemy2);
enemies.push(enemy2);
// Add more enemies at jumping height
var enemy3 = new Enemy();
enemy3.x = 1400;
enemy3.y = 2150; // Position at jumping height
game.addChild(enemy3);
enemies.push(enemy3);
// Sky decorations
var sun = LK.getAsset('sun', {
anchorX: 0.5,
anchorY: 0.5
});
sun.x = 1700;
sun.y = 400;
game.addChild(sun);
var cloud1 = LK.getAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5
});
cloud1.x = 500;
cloud1.y = 600;
game.addChild(cloud1);
var cloud2 = LK.getAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5
});
cloud2.x = 1200;
cloud2.y = 500;
game.addChild(cloud2);
var cloud3 = LK.getAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5
});
cloud3.x = 300;
cloud3.y = 700;
game.addChild(cloud3);
// Score text
scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFF700
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
scoreTxt.setText(score);
}
setupLevel();
// --- Controls (touch left/right side to move) ---
var isHoldingLeft = false;
var isHoldingRight = false;
game.down = function (x, y, obj) {
if (x < 2048 / 2) {
isHoldingLeft = true;
isHoldingRight = false;
} else {
isHoldingRight = true;
isHoldingLeft = false;
}
jumpQueued = true; // Jump when starting to hold
};
game.move = function (x, y, obj) {
// Update movement direction based on current touch position
if (x < 2048 / 2) {
isHoldingLeft = true;
isHoldingRight = false;
} else {
isHoldingRight = true;
isHoldingLeft = false;
}
};
game.up = function (x, y, obj) {
isHoldingLeft = false;
isHoldingRight = false;
player.vx = 0; // Stop moving when releasing
};
// --- Main game loop ---
game.update = function () {
// Set player velocity based on holding state
if (isHoldingLeft) {
player.vx = -12; // Move left when holding left side
} else if (isHoldingRight) {
player.vx = 12; // Move right when holding right side
} else {
player.vx = 0; // Stop when not holding
}
// Player update
player.update();
// Clamp player to screen
if (player.x < 0) player.x = 0;
if (player.x > 2048) player.x = 2048;
// Platform collision
player.isOnGround = false;
for (var i = 0; i < platforms.length; i++) {
var plat = platforms[i];
// Simple AABB collision, only check if falling
if (player.vy >= 0 && player.x + player.width / 2 > plat.x && player.x - player.width / 2 < plat.x + plat.width && player.y > plat.y && player.lastY <= plat.y) {
// Land on platform
player.y = plat.y;
player.vy = 0;
player.isOnGround = true;
}
}
// Jump
if (jumpQueued && player.isOnGround) {
player.vy = -48;
jumpQueued = false;
}
// Ensure maximum 2 coins at any time
while (coins.length > 2) {
var extraCoin = coins.pop();
extraCoin.destroy();
}
// Coin collection and random teleportation
for (var i = coins.length - 1; i >= 0; i--) {
var coin = coins[i];
if (player.intersects(coin)) {
score += 1;
scoreTxt.setText(score);
// Check win condition
if (score >= 50) {
LK.showYouWin();
return;
}
// Teleport coin to random position instead of destroying
coin.x = Math.random() * 2048; // Random x position across screen
coin.y = 2300 - Math.random() * 200; // Random height above ground
}
// Randomly teleport coins even when not collected
if (Math.random() < 0.0005) {
// Small chance each frame for random teleport
coin.x = Math.random() * 2048;
coin.y = 2300 - Math.random() * 200;
}
}
// Update enemy spawn delay
if (enemySpawnDelay > 0) {
enemySpawnDelay--;
}
// Enemy update and collision
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
enemy.update();
// Remove if off screen and potentially respawn with delay
if (enemy.x < -200) {
enemy.destroy();
enemies.splice(i, 1);
// Only spawn new enemy if no delay is active
if (enemySpawnDelay <= 0) {
var newEnemy = new Enemy();
newEnemy.x = 2200; // Start slightly off right edge
// Randomly spawn at ground level or jumping height
if (Math.random() < 0.4) {
newEnemy.y = 2000 + Math.random() * 150; // Higher flying height range
} else {
newEnemy.y = 2400; // Ground level
}
game.addChild(newEnemy);
enemies.push(newEnemy);
// Set delay for next enemy spawn (2-4 seconds at 60fps)
enemySpawnDelay = 120 + Math.random() * 120;
}
continue;
}
// Player/enemy collision
var wasIntersecting = enemy.lastWasIntersecting || false;
var isIntersecting = player.intersects(enemy);
if (!wasIntersecting && isIntersecting) {
// Player hit enemy: game over
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
enemy.lastWasIntersecting = isIntersecting;
}
// Save lastY for player
player.lastY = player.y;
player.lastX = player.x;
};