User prompt
sağa üzt köşede BetlSrc yazsın
User prompt
health yazısı biraz daha sağa doğru olsun
User prompt
öldükten sonra ilk başladığımız çubukta spawn olsun
User prompt
health bölümünde 3 tane kalp resmi olsun
User prompt
karakter öldüğünde tekrar çubuğun üzerinde spawn olsun
User prompt
yukarıda gösteerilen 3 tane kalp olsun ve her kırmızıya değdiğinde 1 can gitsin
User prompt
biraz dah yükseğe zıplasın
User prompt
zıplama tuşu çalışsın
User prompt
zıplama tuşu çalışsın
User prompt
zıplama ve yana gitme tuşlarını yan yana yap
User prompt
karakter çubuğun üzerinden spawnlansın
User prompt
start above the character bar
User prompt
start above the chracter bar
Code edit (1 edits merged)
Please save this source code
User prompt
Super Jump Adventure
Initial prompt
ı have a mario game
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Button = Container.expand(function () { var self = Container.call(this); // Create button var buttonShape = self.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5, width: 100, height: 100 }); // Text for button var buttonText = new Text2('', { size: 50, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); // Setup button self.setup = function (text, color) { buttonText.setText(text); buttonShape.tint = color || 0x444444; }; // Event handlers self.down = function (x, y, obj) { buttonShape.alpha = 0.7; if (self.onPress) { self.onPress(); } }; self.up = function (x, y, obj) { buttonShape.alpha = 1; }; return self; }); var Coin = Container.expand(function () { var self = Container.call(this); // Create coin sprite var coinSprite = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); // Add spinning animation self.update = function () { coinSprite.rotation += 0.05; }; // Collect animation self.collect = function () { // Play collection sound LK.getSound('coin').play(); // Animate coin collection tween(self, { scaleX: 0, scaleY: 0, alpha: 0 }, { duration: 300, easing: tween.easeOut, onFinish: function onFinish() { self.destroy(); } }); }; return self; }); var Enemy = Container.expand(function () { var self = Container.call(this); // Create enemy sprite var enemySprite = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); // Physics and behavior properties self.vx = -2; // Initial direction self.patrolDistance = 300; self.startX = 0; // Initialize patrol points self.setup = function (startX) { self.startX = startX; self.leftBound = startX - self.patrolDistance / 2; self.rightBound = startX + self.patrolDistance / 2; self.x = startX; }; // Update enemy behavior self.update = function () { // Move horizontally self.x += self.vx; // Change direction if reached patrol bounds if (self.x <= self.leftBound) { self.vx = Math.abs(self.vx); } else if (self.x >= self.rightBound) { self.vx = -Math.abs(self.vx); } }; return self; }); var HeartDisplay = Container.expand(function () { var self = Container.call(this); var hearts = []; var maxHearts = 3; // Initialize hearts self.init = function () { for (var i = 0; i < maxHearts; i++) { var heart = self.attachAsset('heart', { anchorX: 0.5, anchorY: 0.5, x: i * 50 }); hearts.push(heart); } }; // Update hearts based on current health self.updateHearts = function (health) { for (var i = 0; i < maxHearts; i++) { hearts[i].visible = i < health; } }; return self; }); var Hero = Container.expand(function () { var self = Container.call(this); // Create hero sprite var heroSprite = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); // Physics properties self.vx = 0; self.vy = 0; self.onGround = false; self.jumpForce = -30; self.gravity = 1; self.maxVy = 20; self.speed = 10; self.health = 3; // Flag to track if hero is moving self.isMovingRight = false; self.isMovingLeft = false; // Used to track if jump button is pressed self.isJumping = false; // Update hero physics self.update = function () { // Apply movement based on direction if (self.isMovingRight) { self.vx = self.speed; } else if (self.isMovingLeft) { self.vx = -self.speed; } else { self.vx = 0; } // Try to jump if jump button is pressed if (self.isJumping && self.onGround) { self.jump(); } // Apply gravity if (!self.onGround) { self.vy += self.gravity; if (self.vy > self.maxVy) { self.vy = self.maxVy; } } // Update position self.x += self.vx; self.y += self.vy; // Reset onGround flag every frame // Will be set to true during collision detection if applicable self.onGround = false; }; // Handle jump self.jump = function () { // Check if jump button is pressed or if isJumping flag is set if (self.onGround && self.isJumping) { self.vy = self.jumpForce; self.onGround = false; LK.getSound('jump').play(); } }; // Handle collision with platforms self.handlePlatformCollision = function (platform) { // Get bounding boxes var heroBox = { x: self.x - heroSprite.width / 2, y: self.y - heroSprite.height / 2, width: heroSprite.width, height: heroSprite.height }; var platformBox = { x: platform.x - platform.width / 2, y: platform.y - platform.height / 2, width: platform.width, height: platform.height }; // Calculate overlap var overlapX = Math.max(0, Math.min(heroBox.x + heroBox.width, platformBox.x + platformBox.width) - Math.max(heroBox.x, platformBox.x)); var overlapY = Math.max(0, Math.min(heroBox.y + heroBox.height, platformBox.y + platformBox.height) - Math.max(heroBox.y, platformBox.y)); // Handle collision if there is overlap if (overlapX > 0 && overlapY > 0) { // Determine if collision is more horizontal or vertical if (overlapX > overlapY) { // Vertical collision // Coming from above if (heroBox.y + heroBox.height / 2 < platformBox.y + platformBox.height / 2) { self.y = platformBox.y - heroBox.height / 2; self.vy = 0; self.onGround = true; } // Coming from below else if (self.vy < 0) { self.y = platformBox.y + platformBox.height + heroBox.height / 2; self.vy = 0; } } else { // Horizontal collision if (heroBox.x + heroBox.width / 2 < platformBox.x + platformBox.width / 2) { self.x = platformBox.x - heroBox.width / 2; } else { self.x = platformBox.x + platformBox.width + heroBox.width / 2; } self.vx = 0; } return true; } return false; }; // Handle damage self.takeDamage = function () { if (!self.invulnerable) { self.health--; self.invulnerable = true; // Flash effect LK.effects.flashObject(self, 0xFF0000, 1000); // Make vulnerable again after 1.5 seconds LK.setTimeout(function () { self.invulnerable = false; }, 1500); // Play hit sound LK.getSound('hit').play(); // Update heart display updateUI(); // Check for game over if (self.health <= 0) { LK.showGameOver(); } } }; return self; }); var Platform = Container.expand(function () { var self = Container.call(this); // Create platform sprite var platformSprite = self.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Always backgroundColor is black }); /**** * Game Code ****/ // Game state variables // Platform assets // Character assets // Collectible assets // Sound effects // Background music var hero; var platforms = []; var enemies = []; var coins = []; var level = 1; var score = 0; var cameraOffset = 0; var gameStarted = false; var leftButton; var rightButton; var jumpButton; // UI elements var scoreTxt; var levelTxt; var healthTxt; var heartDisplay; // Level configuration var levelConfig = { // Platform configurations for different levels platforms: [ // Level 1 [{ x: 300, y: 2500 }, { x: 600, y: 2300 }, { x: 900, y: 2100 }, { x: 1200, y: 2300 }, { x: 1500, y: 2100 }, { x: 1800, y: 1900 }, { x: 300, y: 1700 }, { x: 600, y: 1500 }, { x: 1200, y: 1500 }, { x: 1800, y: 1300 }, { x: 300, y: 1100 }, { x: 600, y: 900 }, { x: 900, y: 700 }, { x: 1200, y: 500 }, { x: 1500, y: 300 }, { x: 1800, y: 100 }]], // Enemy configurations enemies: [ // Level 1 [{ x: 900, y: 2070 }, { x: 1500, y: 2070 }, { x: 600, y: 1470 }, { x: 1200, y: 1470 }, { x: 900, y: 670 }]], // Coin configurations coins: [ // Level 1 [{ x: 300, y: 2450 }, { x: 600, y: 2250 }, { x: 900, y: 2050 }, { x: 1200, y: 2250 }, { x: 1500, y: 2050 }, { x: 1800, y: 1850 }, { x: 300, y: 1650 }, { x: 600, y: 1450 }, { x: 1200, y: 1450 }, { x: 1800, y: 1250 }, { x: 300, y: 1050 }, { x: 600, y: 850 }, { x: 900, y: 650 }, { x: 1200, y: 450 }, { x: 1500, y: 250 }, { x: 1800, y: 50 }]] }; // Initialize level function setupLevel() { // Clear existing objects clearLevel(); // Create ground var ground = new Platform(); ground.x = 2048 / 2; ground.y = 2732 - 40; game.addChild(ground); platforms.push(ground); // Create platforms var levelPlatforms = levelConfig.platforms[level - 1] || levelConfig.platforms[0]; for (var i = 0; i < levelPlatforms.length; i++) { var platform = new Platform(); platform.x = levelPlatforms[i].x; platform.y = levelPlatforms[i].y; game.addChild(platform); platforms.push(platform); } // Create enemies var levelEnemies = levelConfig.enemies[level - 1] || levelConfig.enemies[0]; for (var i = 0; i < levelEnemies.length; i++) { var enemy = new Enemy(); enemy.setup(levelEnemies[i].x); enemy.y = levelEnemies[i].y; game.addChild(enemy); enemies.push(enemy); } // Create coins var levelCoins = levelConfig.coins[level - 1] || levelConfig.coins[0]; for (var i = 0; i < levelCoins.length; i++) { var coin = new Coin(); coin.x = levelCoins[i].x; coin.y = levelCoins[i].y; game.addChild(coin); coins.push(coin); } // Create hero hero = new Hero(); hero.x = 200; hero.y = 2400; game.addChild(hero); // Update score display updateUI(); } // Clear all level objects function clearLevel() { // Remove platforms for (var i = platforms.length - 1; i >= 0; i--) { platforms[i].destroy(); } platforms = []; // Remove enemies for (var i = enemies.length - 1; i >= 0; i--) { enemies[i].destroy(); } enemies = []; // Remove coins for (var i = coins.length - 1; i >= 0; i--) { coins[i].destroy(); } coins = []; // Remove hero if exists if (hero) { hero.destroy(); hero = null; } } // Update UI displays function updateUI() { scoreTxt.setText("Score: " + score); levelTxt.setText("Level: " + level); healthTxt.setText("Health: " + (hero ? hero.health : 0)); if (heartDisplay && hero) { heartDisplay.updateHearts(hero.health); } } // Setup controls function setupControls() { // Left movement button leftButton = new Button(); leftButton.setup("<", 0x4444FF); leftButton.x = 150; leftButton.y = 2532; leftButton.onPress = function () { hero.isMovingLeft = true; hero.isMovingRight = false; }; leftButton.up = function () { hero.isMovingLeft = false; }; game.addChild(leftButton); // Right movement button rightButton = new Button(); rightButton.setup(">", 0x4444FF); rightButton.x = 300; rightButton.y = 2532; rightButton.onPress = function () { hero.isMovingRight = true; hero.isMovingLeft = false; }; rightButton.up = function () { hero.isMovingRight = false; }; game.addChild(rightButton); // Jump button jumpButton = new Button(); jumpButton.setup("^", 0xFF4444); jumpButton.x = 450; // Position next to the right movement button jumpButton.y = 2532; jumpButton.onPress = function () { hero.isJumping = true; // We don't need to call hero.jump() here, it will be handled in the update loop }; jumpButton.up = function () { hero.isJumping = false; }; game.addChild(jumpButton); } // Setup UI function setupUI() { // Score display scoreTxt = new Text2("Score: 0", { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(0, 0); LK.gui.topRight.addChild(scoreTxt); // Level display levelTxt = new Text2("Level: 1", { size: 60, fill: 0xFFFFFF }); levelTxt.anchor.set(0.5, 0); LK.gui.top.addChild(levelTxt); // Health display healthTxt = new Text2("Health: 3", { size: 60, fill: 0xFFFFFF }); healthTxt.anchor.set(1, 0); LK.gui.topLeft.addChild(healthTxt); healthTxt.x = 150; // Move away from top left corner as per guidelines // Heart display heartDisplay = new HeartDisplay(); heartDisplay.x = 200; heartDisplay.y = 100; heartDisplay.init(); LK.gui.topLeft.addChild(heartDisplay); } // Initialize game function initGame() { // Set score to zero score = 0; LK.setScore(0); // Setup UI elements setupUI(); // Setup level setupLevel(); // Setup controls setupControls(); // Play background music LK.playMusic('bgmusic', { fade: { start: 0, end: 0.7, duration: 1000 } }); // Mark game as started gameStarted = true; } // Handle collisions function handleCollisions() { // Hero-platform collisions for (var i = 0; i < platforms.length; i++) { hero.handlePlatformCollision(platforms[i]); } // Hero-enemy collisions for (var i = enemies.length - 1; i >= 0; i--) { if (hero.intersects(enemies[i])) { // Check if hero is jumping on enemy from above if (hero.vy > 0 && hero.y < enemies[i].y - 30) { // Destroy enemy enemies[i].destroy(); enemies.splice(i, 1); // Bounce hero hero.vy = hero.jumpForce * 0.6; // Add score score += 100; LK.setScore(score); updateUI(); } else { // Hero takes damage hero.takeDamage(); updateUI(); } } } // Hero-coin collisions for (var i = coins.length - 1; i >= 0; i--) { if (hero.intersects(coins[i])) { // Collect coin coins[i].collect(); coins.splice(i, 1); // Add score score += 10; LK.setScore(score); updateUI(); } } // Check for level completion (all coins collected) if (coins.length === 0) { // Level completed level++; // Check if player completed all levels if (level > levelConfig.platforms.length) { // Game completed LK.showYouWin(); } else { // Setup next level setupLevel(); } } } // Keep hero within bounds function enforceWorldBounds() { // Keep hero within horizontal bounds if (hero.x < 50) { hero.x = 50; } else if (hero.x > 2048 - 50) { hero.x = 2048 - 50; } // Check if hero fell off the bottom if (hero.y > 2732 + 100) { hero.takeDamage(); // Reset position hero.x = 200; hero.y = 2600; hero.vx = 0; hero.vy = 0; updateUI(); } // Check if hero reached the top (level complete) if (hero.y < 0) { // Level completed level++; // Check if player completed all levels if (level > levelConfig.platforms.length) { // Game completed LK.showYouWin(); } else { // Setup next level setupLevel(); } } } // Handle global touch events game.down = function (x, y, obj) { if (!gameStarted) { initGame(); } }; // Game update loop game.update = function () { if (!gameStarted) { return; } // Update hero if (hero) { hero.update(); } // Update enemies for (var i = 0; i < enemies.length; i++) { enemies[i].update(); } // Update coins for (var i = 0; i < coins.length; i++) { coins[i].update(); } // Handle collisions handleCollisions(); // Enforce world boundaries enforceWorldBounds(); }; // Setup initial "tap to start" message var startText = new Text2("Tap to Start", { size: 100, fill: 0xFFFFFF }); startText.anchor.set(0.5, 0.5); startText.x = 2048 / 2; startText.y = 2732 / 2; game.addChild(startText); // Remove start text when game starts LK.setInterval(function () { if (gameStarted && startText.parent) { startText.destroy(); } }, 100);
===================================================================
--- original.js
+++ change.js
@@ -100,8 +100,31 @@
}
};
return self;
});
+var HeartDisplay = Container.expand(function () {
+ var self = Container.call(this);
+ var hearts = [];
+ var maxHearts = 3;
+ // Initialize hearts
+ self.init = function () {
+ for (var i = 0; i < maxHearts; i++) {
+ var heart = self.attachAsset('heart', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: i * 50
+ });
+ hearts.push(heart);
+ }
+ };
+ // Update hearts based on current health
+ self.updateHearts = function (health) {
+ for (var i = 0; i < maxHearts; i++) {
+ hearts[i].visible = i < health;
+ }
+ };
+ return self;
+});
var Hero = Container.expand(function () {
var self = Container.call(this);
// Create hero sprite
var heroSprite = self.attachAsset('hero', {
@@ -218,8 +241,10 @@
self.invulnerable = false;
}, 1500);
// Play hit sound
LK.getSound('hit').play();
+ // Update heart display
+ updateUI();
// Check for game over
if (self.health <= 0) {
LK.showGameOver();
}
@@ -267,8 +292,9 @@
// UI elements
var scoreTxt;
var levelTxt;
var healthTxt;
+var heartDisplay;
// Level configuration
var levelConfig = {
// Platform configurations for different levels
platforms: [
@@ -466,8 +492,11 @@
function updateUI() {
scoreTxt.setText("Score: " + score);
levelTxt.setText("Level: " + level);
healthTxt.setText("Health: " + (hero ? hero.health : 0));
+ if (heartDisplay && hero) {
+ heartDisplay.updateHearts(hero.health);
+ }
}
// Setup controls
function setupControls() {
// Left movement button
@@ -533,8 +562,14 @@
});
healthTxt.anchor.set(1, 0);
LK.gui.topLeft.addChild(healthTxt);
healthTxt.x = 150; // Move away from top left corner as per guidelines
+ // Heart display
+ heartDisplay = new HeartDisplay();
+ heartDisplay.x = 200;
+ heartDisplay.y = 100;
+ heartDisplay.init();
+ LK.gui.topLeft.addChild(heartDisplay);
}
// Initialize game
function initGame() {
// Set score to zero