Code edit (3 edits merged)
Please save this source code
User prompt
enemy shoudl also have several images like player to replicate movement. enemy will have 2
Code edit (4 edits merged)
Please save this source code
User prompt
player image shoudl last a little longe before the next one appears so that there are no gaps between them
User prompt
how can we make mario not have glitches? maybe wait a little longer before swaping images in run animation?
User prompt
now make sure background is continuous
User prompt
add lateral paralx scrolling to seem like player is moving
User prompt
reduce jump height
Code edit (1 edits merged)
Please save this source code
User prompt
destroy the previous image of the player when the new one appears
User prompt
remove player idle
User prompt
for player image user player_run1 player_run2 and player_run3, alternating one after the other in a loop like a sprite
Remix started
Copy Mario vs Monsters
/****
* Classes
****/
// Define a class for the background to implement parallax scrolling
var Background = Container.expand(function () {
var self = Container.call(this);
var backgroundGraphics = self.attachAsset('background', {
anchorX: 0,
anchorY: 0
});
self.speed = 2;
self.update = function () {
self.x -= self.speed;
if (self.x <= -2048) {
self.x = 2048;
}
};
});
var Background2 = Container.expand(function () {
var self = Container.call(this);
var backgroundGraphics = self.attachAsset('background', {
anchorX: 0,
anchorY: 0
});
self.speed = 2;
self.update = function () {
self.x -= self.speed;
if (self.x <= -2048) {
self.x = 2048;
}
};
});
// 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.passed = false;
self.update = function () {
self.x -= self.speed;
if (self.x < -50) {
self.destroy();
}
};
});
// Define a class for the player character
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player_run1', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.jumpHeight = 30;
self.isJumping = false;
self.velocityY = 0;
self.runFrames = ['player_run1', 'player_run2', 'player_run3'];
self.runFrameIndex = 0;
self.runFrameCounter = 0;
self.runFrameDelay = 8;
// Helper function to swap sprites safely
self.swapSprite = function (newAsset) {
// Attach new sprite first
var newGraphics = self.attachAsset(newAsset, {
anchorX: 0.5,
anchorY: 0.5
});
// Destroy old sprite after new one is in place
if (playerGraphics) {
playerGraphics.destroy();
}
playerGraphics = newGraphics;
};
self.update = function () {
if (self.isJumping) {
// Handle jumping physics
self.y += self.velocityY;
self.velocityY += 0.8;
if (self.y >= 2732 / 2) {
// Landed on ground
self.y = 2732 / 2;
self.isJumping = false;
self.velocityY = 0;
self.swapSprite(self.runFrames[self.runFrameIndex]);
}
} else {
// Handle running animation
self.runFrameCounter++;
if (self.runFrameCounter >= self.runFrameDelay) {
self.runFrameIndex = (self.runFrameIndex + 1) % self.runFrames.length;
self.swapSprite(self.runFrames[self.runFrameIndex]);
self.runFrameCounter = 0;
}
}
};
self.jump = function () {
if (!self.isJumping) {
self.isJumping = true;
self.velocityY = -self.jumpHeight;
self.swapSprite('player_jump');
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Sky blue background
});
/****
* Game Code
****/
// Initialize the backgrounds with the new classes
var background = game.addChild(new Background());
background.x = 0;
background.y = 0;
var background2 = game.addChild(new Background2());
background2.x = 2048;
background2.y = 0;
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 / 2;
// 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 () {
background.update();
background2.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);
enemySpawnInterval = Math.floor(Math.random() * 150) + 50;
enemySpawnCounter = 0;
}
// Update enemies and check collisions
for (var j = enemies.length - 1; j >= 0; j--) {
enemies[j].update();
if (player.intersects(enemies[j])) {
LK.effects.flashScreen(0xff0000, 1000);
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());
}
if (enemies[j].x < -50) {
enemies.splice(j, 1);
}
}
};
// Handle player jump on input
game.down = function (x, y, obj) {
player.jump();
}; ===================================================================
--- original.js
+++ change.js
@@ -15,8 +15,22 @@
self.x = 2048;
}
};
});
+var Background2 = Container.expand(function () {
+ var self = Container.call(this);
+ var backgroundGraphics = self.attachAsset('background', {
+ anchorX: 0,
+ anchorY: 0
+ });
+ self.speed = 2;
+ self.update = function () {
+ self.x -= self.speed;
+ if (self.x <= -2048) {
+ self.x = 2048;
+ }
+ };
+});
// Define a class for enemies
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
@@ -100,12 +114,15 @@
/****
* Game Code
****/
-// Initialize the background with the new class
+// Initialize the backgrounds with the new classes
var background = game.addChild(new Background());
background.x = 0;
background.y = 0;
+var background2 = game.addChild(new Background2());
+background2.x = 2048;
+background2.y = 0;
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 / 2;
@@ -124,8 +141,9 @@
scoreText.y = 0;
// Handle game updates
game.update = function () {
background.update();
+ background2.update();
player.update();
// Spawn enemies
enemySpawnCounter++;
if (enemySpawnCounter >= enemySpawnInterval) {