User prompt
Little bit increase jump height
User prompt
Decrease jump height
User prompt
Make it easy
User prompt
Increase enemy spawn distance
User prompt
Please fix the bug: 'tween.to is not a function' in or related to this line: 'tween.to(levelText, 0.5, {' Line Number: 98 โช๐ก Consider importing and using the following plugins: @upit/tween.v1
User prompt
Add levels 1 to 50
User prompt
Display score on screen while playing
User prompt
Add A scoreboard
User prompt
Add sound on off button
User prompt
Add game over sound effect
User prompt
Create A moving background โช๐ก Consider importing and using the following plugins: @upit/tween.v1
User prompt
Add A sound effect
Remix started
Copy Mario vs Monsters
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Define a class for scrolling background var Background = Container.expand(function () { var self = Container.call(this); // Create two background images for continuous scrolling var bg1 = self.attachAsset('background', { anchorX: 0, anchorY: 0 }); var bg2 = self.attachAsset('background', { anchorX: 0, anchorY: 0 }); // Position the second background right after the first one bg2.x = bg1.width; self.speed = 2; // Scrolling speed // Track positions for animation self.update = function () { // Move both backgrounds to the left bg1.x -= self.speed; bg2.x -= self.speed; // When the first background moves completely off-screen to the left if (bg1.x <= -bg1.width) { bg1.x = bg2.x + bg2.width; } // When the second background moves completely off-screen to the left if (bg2.x <= -bg2.width) { bg2.x = bg1.x + bg1.width; } }; return self; }); // Define a class for enemies var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); //<Assets used in the game will automatically appear here> // Define a class for the player character var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.jumpHeight = 40; self.isJumping = false; self.velocityY = 0; self.update = function () { if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.7; // Decreased gravity effect by 30% if (self.y >= 2732 / 2) { // Ground level self.y = 2732 / 2; self.isJumping = false; self.velocityY = 0; } } }; self.jump = function () { if (!self.isJumping) { self.isJumping = true; self.velocityY = -self.jumpHeight; LK.getSound('jump').play(); } }; }); // Scoreboard class to display high scores var Scoreboard = Container.expand(function () { var self = Container.call(this); // Create a background for the scoreboard var background = self.attachAsset('soundOff', { anchorX: 0.5, anchorY: 0.5 }); // Scale the background to make it larger background.width = 800; background.height = 1200; background.alpha = 0.8; // Create title text var titleText = new Text2('HIGH SCORES', { size: 80, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0); titleText.y = -background.height / 2 + 50; self.addChild(titleText); // Array to store score text objects self.scoreItems = []; // Method to update the scoreboard with new scores self.updateScores = function (scores) { // Clear previous score texts for (var i = 0; i < self.scoreItems.length; i++) { self.scoreItems[i].destroy(); } self.scoreItems = []; // Add new score items for (var i = 0; i < scores.length && i < 5; i++) { var scoreText = new Text2(i + 1 + '. ' + scores[i], { size: 60, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); scoreText.y = -background.height / 2 + 150 + i * 80; self.addChild(scoreText); self.scoreItems.push(scoreText); } }; // Add close button var closeButton = new Text2('CLOSE', { size: 60, fill: 0xFFFFFF }); closeButton.anchor.set(0.5, 0); closeButton.y = background.height / 2 - 100; closeButton.interactive = true; closeButton.down = function () { self.visible = false; }; self.addChild(closeButton); // Initially hide scoreboard self.visible = false; return self; }); // Sound toggle button class var SoundButton = Container.expand(function () { var self = Container.call(this); // Track sound state self.soundOn = true; // Create both button states var soundOnGraphics = self.attachAsset('soundOn', { anchorX: 0.5, anchorY: 0.5 }); var soundOffGraphics = self.attachAsset('soundOff', { anchorX: 0.5, anchorY: 0.5 }); // Initially hide the sound off icon soundOffGraphics.visible = false; // Handle button press self.down = function () { self.soundOn = !self.soundOn; soundOnGraphics.visible = self.soundOn; soundOffGraphics.visible = !self.soundOn; // Set global sound volume based on state LK.setVolume(self.soundOn ? 1 : 0); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ // Create scrolling background var background = game.addChild(new Background()); background.x = 0; background.y = 0; // Initialize player var player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 / 2; // Add sound toggle button to top right corner var soundButton = new SoundButton(); soundButton.x = 2048 - 80; soundButton.y = 80; LK.gui.topRight.addChild(soundButton); // Initialize enemies var enemies = []; var enemySpawnInterval = 100; var enemySpawnCounter = 0; // Create a new Text2 object to display the score var scoreText = new Text2('0', { size: 100, fill: 0xFFFFFF }); // Add the score text to the game GUI at the top center of the screen LK.gui.top.addChild(scoreText); scoreText.x = 2048 / 2; scoreText.y = 0; // Create scoreboard button var scoreboardButton = new Text2('SCORES', { size: 60, fill: 0xFFFFFF }); scoreboardButton.anchor.set(0.5, 0); LK.gui.topLeft.addChild(scoreboardButton); scoreboardButton.x = 150; scoreboardButton.y = 80; // Create and initialize the scoreboard var scoreboard = new Scoreboard(); scoreboard.x = 2048 / 2; scoreboard.y = 2732 / 2; LK.gui.center.addChild(scoreboard); // Define highscores array - would typically come from storage var highScores = ["1000", "750", "500", "250", "100"]; scoreboard.updateScores(highScores); // Make scoreboard button interactive scoreboardButton.interactive = true; scoreboardButton.down = function () { scoreboard.visible = true; }; // Handle game updates game.update = function () { // Update background scrolling background.update(); player.update(); // Spawn enemies enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { var enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 / 2; enemies.push(enemy); game.addChild(enemy); // Randomize the spawn interval for the next enemy enemySpawnInterval = Math.floor(Math.random() * 150) + 50; enemySpawnCounter = 0; } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (player.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); LK.getSound('gameover').play(); // Update high scores with current score var currentScore = LK.getScore(); for (var k = 0; k < highScores.length; k++) { if (currentScore > parseInt(highScores[k])) { // Insert new high score and shift others down highScores.splice(k, 0, currentScore.toString()); highScores.pop(); // Remove lowest score break; } } // Update scoreboard with new high scores scoreboard.updateScores(highScores); LK.showGameOver(); } else if (player.x > enemies[j].x && !enemies[j].passed) { enemies[j].passed = true; LK.setScore(LK.getScore() + 1); scoreText.setText(LK.getScore()); } } }; // Handle player jump game.down = function (x, y, obj) { player.jump(); }; // Import tween plugin for animations
===================================================================
--- original.js
+++ change.js
@@ -83,8 +83,65 @@
LK.getSound('jump').play();
}
};
});
+// Scoreboard class to display high scores
+var Scoreboard = Container.expand(function () {
+ var self = Container.call(this);
+ // Create a background for the scoreboard
+ var background = self.attachAsset('soundOff', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Scale the background to make it larger
+ background.width = 800;
+ background.height = 1200;
+ background.alpha = 0.8;
+ // Create title text
+ var titleText = new Text2('HIGH SCORES', {
+ size: 80,
+ fill: 0xFFFFFF
+ });
+ titleText.anchor.set(0.5, 0);
+ titleText.y = -background.height / 2 + 50;
+ self.addChild(titleText);
+ // Array to store score text objects
+ self.scoreItems = [];
+ // Method to update the scoreboard with new scores
+ self.updateScores = function (scores) {
+ // Clear previous score texts
+ for (var i = 0; i < self.scoreItems.length; i++) {
+ self.scoreItems[i].destroy();
+ }
+ self.scoreItems = [];
+ // Add new score items
+ for (var i = 0; i < scores.length && i < 5; i++) {
+ var scoreText = new Text2(i + 1 + '. ' + scores[i], {
+ size: 60,
+ fill: 0xFFFFFF
+ });
+ scoreText.anchor.set(0.5, 0);
+ scoreText.y = -background.height / 2 + 150 + i * 80;
+ self.addChild(scoreText);
+ self.scoreItems.push(scoreText);
+ }
+ };
+ // Add close button
+ var closeButton = new Text2('CLOSE', {
+ size: 60,
+ fill: 0xFFFFFF
+ });
+ closeButton.anchor.set(0.5, 0);
+ closeButton.y = background.height / 2 - 100;
+ closeButton.interactive = true;
+ closeButton.down = function () {
+ self.visible = false;
+ };
+ self.addChild(closeButton);
+ // Initially hide scoreboard
+ self.visible = false;
+ return self;
+});
// Sound toggle button class
var SoundButton = Container.expand(function () {
var self = Container.call(this);
// Track sound state
@@ -146,8 +203,30 @@
// Add the score text to the game GUI at the top center of the screen
LK.gui.top.addChild(scoreText);
scoreText.x = 2048 / 2;
scoreText.y = 0;
+// Create scoreboard button
+var scoreboardButton = new Text2('SCORES', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+scoreboardButton.anchor.set(0.5, 0);
+LK.gui.topLeft.addChild(scoreboardButton);
+scoreboardButton.x = 150;
+scoreboardButton.y = 80;
+// Create and initialize the scoreboard
+var scoreboard = new Scoreboard();
+scoreboard.x = 2048 / 2;
+scoreboard.y = 2732 / 2;
+LK.gui.center.addChild(scoreboard);
+// Define highscores array - would typically come from storage
+var highScores = ["1000", "750", "500", "250", "100"];
+scoreboard.updateScores(highScores);
+// Make scoreboard button interactive
+scoreboardButton.interactive = true;
+scoreboardButton.down = function () {
+ scoreboard.visible = true;
+};
// Handle game updates
game.update = function () {
// Update background scrolling
background.update();
@@ -169,8 +248,20 @@
enemies[j].update();
if (player.intersects(enemies[j])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.getSound('gameover').play();
+ // Update high scores with current score
+ var currentScore = LK.getScore();
+ for (var k = 0; k < highScores.length; k++) {
+ if (currentScore > parseInt(highScores[k])) {
+ // Insert new high score and shift others down
+ highScores.splice(k, 0, currentScore.toString());
+ highScores.pop(); // Remove lowest score
+ break;
+ }
+ }
+ // Update scoreboard with new high scores
+ scoreboard.updateScores(highScores);
LK.showGameOver();
} else if (player.x > enemies[j].x && !enemies[j].passed) {
enemies[j].passed = true;
LK.setScore(LK.getScore() + 1);