User prompt
Fix counter false counting bugs
User prompt
Fix counter bugs
User prompt
Move the counter left by 70 units
User prompt
Move the counter left by 80 units
User prompt
Move the counter left by 92 units
User prompt
Move the counter left by 123 units
User prompt
Decrease the size of the counter to the half
User prompt
Move the score counter 300 units to the left
User prompt
Move the counter left by 500 units
User prompt
Add to the top center of the map a 'Defeated opponents:' score counter.
User prompt
Flashing faster the powerup asset
User prompt
Animate powerup asset to flashing shiny effect ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Player invulnerable as long as animation is turned on
User prompt
The animation is not turned on when the game starts. It only turns on when the player touches the power asset
User prompt
Ensure if player touch power asset then the effect is turn on for 5 seconds
User prompt
Change the animated effect looking to more fiery
User prompt
Add to the game power asset
User prompt
Change the effect to yellow
User prompt
Could you add animated dragon ball lightning effect to mario ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Avoid having the same enemies one after the other, always coming in turns
User prompt
Ensure enemy assets cannot overlap each other
User prompt
Avoid enemies overlap
User prompt
Make bigger distance between enemies loading
User prompt
Double the distance between two enemy to avoid overlap
User prompt
Increase enemy delay time to 2 seconds before loading the next one enemy asset!
/**** * Classes ****/ // Define a class for enemies var Enemy = Container.expand(function (enemyType) { var self = Container.call(this); var enemyGraphics = self.attachAsset(enemyType, { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); // Define a class for the life counter var LifeCounter = Container.expand(function () { var self = Container.call(this); var lifeGraphics = self.attachAsset('life', { anchorX: 0.0, anchorY: 0.0 }); self.width = 2048; // Full width self.update = function () { // Update the width of the life counter based on Mario's life self.width = 2048 * Mario.life; }; }); //<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 MarioGraphics = self.attachAsset('Mario', { 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; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ var background = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0 })); background.x = 0; background.y = 0; // Initialize player var Mario = game.addChild(new Player()); Mario.x = 2048 / 2; Mario.y = 2732 / 2; Mario.life = 1; // Initialize Mario's life to 1 (100%) // Initialize the life counter and add it to the game var lifeCounter = game.addChild(new LifeCounter()); lifeCounter.y = 0; // Position it at the top of the screen // 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 () { Mario.update(); // Spawn enemies enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { // Define enemy types var enemyTypes = ['enemy', 'enemy1', 'enemy2', 'enemy3']; // Keep track of the last enemy type to avoid repetition if (!game.lastEnemyTypeIndex) { game.lastEnemyTypeIndex = -1; } var i = 0; var _spawnEnemy = function spawnEnemy() { // Get a new enemy type that is different from the last one var availableTypes = []; for (var t = 0; t < enemyTypes.length; t++) { if (t !== game.lastEnemyTypeIndex) { availableTypes.push({ index: t, type: enemyTypes[t] }); } } // Randomly select from available types var selectedType = availableTypes[Math.floor(Math.random() * availableTypes.length)]; game.lastEnemyTypeIndex = selectedType.index; var enemy = new Enemy(selectedType.type); enemy.x = 2048 + i * 6 * enemy.width; // Six times the distance between enemies to completely avoid overlap enemy.y = 2732 / 2; enemies.push(enemy); game.addChild(enemy); i++; if (i < enemyTypes.length) { LK.setTimeout(_spawnEnemy, 2000); // Add 2 seconds delay between each enemy spawn } }; _spawnEnemy(); // 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 (Mario.intersects(enemies[j])) { if (Mario.isJumping) { // Mario jumped on top of the enemy, destroy the enemy enemies[j].destroy(); enemies.splice(j, 1); } else { Mario.life -= 0.005; // Decrease Mario's life by 0.5% if (Mario.life <= 0) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } } else if (Mario.x > enemies[j].x && !enemies[j].passed) { enemies[j].passed = true; LK.setScore(LK.getScore() + 1); scoreText.setText(LK.getScore()); } } // Sort enemies by their x position to ensure they never cover each other in display order enemies.sort(function (a, b) { return a.x - b.x; }); // Update the life counter lifeCounter.update(); }; // Handle player jump game.down = function (x, y, obj) { Mario.jump(); };
===================================================================
--- original.js
+++ change.js
@@ -13,15 +13,8 @@
self.x -= self.speed;
if (self.x < -50) {
self.destroy();
}
- // Prevent overlap with other enemies
- for (var i = 0; i < enemies.length; i++) {
- var otherEnemy = enemies[i];
- if (otherEnemy !== this && self.intersects(otherEnemy) && self.x < otherEnemy.x) {
- self.x = otherEnemy.x - otherEnemy.width * 1.5; // Position this enemy behind the other enemy
- }
- }
};
});
// Define a class for the life counter
var LifeCounter = Container.expand(function () {
@@ -110,24 +103,42 @@
Mario.update();
// Spawn enemies
enemySpawnCounter++;
if (enemySpawnCounter >= enemySpawnInterval) {
+ // Define enemy types
var enemyTypes = ['enemy', 'enemy1', 'enemy2', 'enemy3'];
+ // Keep track of the last enemy type to avoid repetition
+ if (!game.lastEnemyTypeIndex) {
+ game.lastEnemyTypeIndex = -1;
+ }
var i = 0;
var _spawnEnemy = function spawnEnemy() {
- var enemy = new Enemy(enemyTypes[i]);
- enemy.x = 2048 + i * 10 * enemy.width; // Ten times the distance between enemies to completely avoid overlap
+ // Get a new enemy type that is different from the last one
+ var availableTypes = [];
+ for (var t = 0; t < enemyTypes.length; t++) {
+ if (t !== game.lastEnemyTypeIndex) {
+ availableTypes.push({
+ index: t,
+ type: enemyTypes[t]
+ });
+ }
+ }
+ // Randomly select from available types
+ var selectedType = availableTypes[Math.floor(Math.random() * availableTypes.length)];
+ game.lastEnemyTypeIndex = selectedType.index;
+ var enemy = new Enemy(selectedType.type);
+ enemy.x = 2048 + i * 6 * enemy.width; // Six times the distance between enemies to completely avoid overlap
enemy.y = 2732 / 2;
enemies.push(enemy);
game.addChild(enemy);
i++;
if (i < enemyTypes.length) {
- LK.setTimeout(_spawnEnemy, 3000); // Add 3 seconds delay between each enemy spawn
+ LK.setTimeout(_spawnEnemy, 2000); // Add 2 seconds delay between each enemy spawn
}
};
_spawnEnemy();
// Randomize the spawn interval for the next enemy
- enemySpawnInterval = Math.floor(Math.random() * 150) + 100; // Increase minimum spawn interval
+ enemySpawnInterval = Math.floor(Math.random() * 150) + 50;
enemySpawnCounter = 0;
}
// Update enemies
for (var j = enemies.length - 1; j >= 0; j--) {
Ghiblis style
Ghibli style but more realistic
Ghibli style
NeonYellow powerup logo. In-Game asset. 2d. High contrast. No shadows
Running Sith jar-jar binks in ghibli style. In-Game asset. 2d. High contrast. No shadows
Shark with lasergun on his head, sideview, ghibli style. In-Game asset. 2d. High contrast. No shadows
White textbubble with thin black frame. 'Run away! A killer rabbit!' text in bubble. In-Game asset. 2d. High contrast. No shadows
Remove 3. Stripe from the shoe and the kit