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();
}
};
});
// 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;
// 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();
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,34 @@
LK.getSound('jump').play();
}
};
});
+// 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
****/
@@ -102,8 +128,13 @@
// 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;