User prompt
karakterin ve düşmanları y ekseninde %2 aşağı taşı
User prompt
karakterin ve düşmanları y ekseninde %44.4 aşağı taşı
User prompt
karakterin ve düşmanları y ekseninde %45 aşağı taşı
User prompt
karakterin ve düşmanları y ekseninde %44 aşağı taşı
User prompt
karakterin ve düşmanları y ekseninde %40 aşağı taşı
User prompt
karakterin ve düşmanları y ekseninde %30 aşağı taşı
User prompt
karakterin ve düşmanları y ekseninde %45 aşağı taşı
User prompt
karakterin ve düşmanları y ekseninde aşağı indir
User prompt
karakterin ve düşmanları y ekseninde %10 aşağı indir
User prompt
karakterin ve düşmanları y ekseninde %45 aşağı indir
User prompt
karakterin ve düşmanları y ekseninde %20 aşağı indir
User prompt
arkapılanı çoğalt ve hareket etsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
Code edit (3 edits merged)
Please save this source code
User prompt
bir düşman x eksenini otasından geçtikten sonra diğer düşman spawn olsun
User prompt
düşmanlar aynı gelmesin bir düşman 2 den fazla peş peşe gelmesin
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
düşmanlar ekrana aynı anda girmesin ve 2 den fazla aynı düşman gelmesin
User prompt
plantenemy geliş hızını %3 artır
User prompt
yerçekimini %2 artıt
User prompt
plantenemy geliş hızını %2 artır
User prompt
plantenemy zıplamasını azalt
User prompt
farklı düşman çeşitleri için yeni 2 adet asset oluştur
Remix started
Copy Mario vs Monsters
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // 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(); } }; }); // Define a class for flying enemies var FlyingEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('flyingEnemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 7; self.amplitude = 100; self.frequency = 0.03; self.initialY = 0; self.angle = Math.random() * Math.PI * 2; self.passed = false; self.update = function () { self.x -= self.speed; self.y = self.initialY + Math.sin(self.angle) * self.amplitude; self.angle += self.frequency; if (self.x < -100) { self.destroy(); } }; return self; }); // Define a class for plant enemies var PlantEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('plantEnemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 4; self.passed = false; self.canJump = true; self.jumpInterval = Math.floor(Math.random() * 100) + 50; self.jumpCounter = 0; self.velocityY = 0; self.isJumping = false; self.update = function () { self.x -= self.speed; // Jump logic self.jumpCounter++; if (self.jumpCounter >= self.jumpInterval && self.canJump && !self.isJumping) { self.isJumping = true; self.velocityY = -15; self.jumpCounter = 0; } if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.6; if (self.y >= 2732 / 2 * 1.4) { self.y = 2732 / 2 * 1.4; self.isJumping = false; self.velocityY = 0; } } if (self.x < -100) { self.destroy(); } }; return self; }); //<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 = 25; self.isJumping = false; self.velocityY = 0; self.update = function () { if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.3; // Decreased gravity effect by 30% if (self.y >= 2732 / 2 * 1.4) { // Ground level self.y = 2732 / 2 * 1.4; 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 ****/ // Create multiple backgrounds for seamless scrolling var backgrounds = []; // Create two background instances to create infinite scrolling effect for (var i = 0; i < 2; i++) { var background = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0 })); background.x = i * 2048; // Position backgrounds side by side background.y = 0; backgrounds.push(background); } // Initialize player var player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 / 2 * 1.4; // Move 40% lower on Y-axis // Initialize enemies var enemies = []; var enemySpawnInterval = 100; var enemySpawnCounter = 0; var lastEnemyType = -1; // Track the last enemy type that was spawned var sameTypeCount = 0; // Counter for consecutive same-type enemies var canSpawn = true; // Flag to control enemy spawning // 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 () { player.update(); // Update background positions for scrolling effect for (var i = 0; i < backgrounds.length; i++) { // Move backgrounds to the left backgrounds[i].x -= 3; // Slower than enemies for parallax effect // When a background moves completely off screen to the left, move it to the right if (backgrounds[i].x <= -2048) { backgrounds[i].x = 2048; } } // Spawn enemies enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval && canSpawn) { // Check if any enemies are at the screen edge (about to enter) var enemiesEnteringScreen = false; for (var i = 0; i < enemies.length; i++) { if (enemies[i].x >= 2048 - 300) { // Buffer zone at screen edge enemiesEnteringScreen = true; break; } } if (!enemiesEnteringScreen) { // Randomly choose enemy type var enemyType = Math.floor(Math.random() * 3); // Check if we need to avoid the same enemy type if (enemyType === lastEnemyType) { sameTypeCount++; // If we already have 2 of the same type, choose a different type if (sameTypeCount >= 2) { do { enemyType = Math.floor(Math.random() * 3); } while (enemyType === lastEnemyType); sameTypeCount = 0; } } else { sameTypeCount = 0; } var enemy; if (enemyType === 0) { enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 / 2 * 1.4; // Move 40% lower on Y-axis } else if (enemyType === 1) { enemy = new FlyingEnemy(); enemy.x = 2048; enemy.y = 2732 / 3 * 1.4; // Flying enemy starts higher and moved 40% lower enemy.initialY = enemy.y; } else { enemy = new PlantEnemy(); enemy.x = 2048; enemy.y = 2732 / 2 * 1.4; // Move 40% lower on Y-axis } // Save the current enemy type as the last one lastEnemyType = enemyType; enemy.passedMiddle = false; // Initialize the middle crossing property enemies.push(enemy); game.addChild(enemy); // Randomize the spawn interval for the next enemy enemySpawnInterval = Math.floor(Math.random() * 150) + 50; enemySpawnCounter = 0; // Prevent new enemies from spawning until current one crosses the middle canSpawn = false; } } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); // Check if enemy has just crossed the middle of the screen if (enemies[j].x < 2048 / 2 && !enemies[j].passedMiddle) { enemies[j].passedMiddle = true; // Allow new enemy to spawn when current enemy passes the middle canSpawn = true; } 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()); } } }; // Handle player jump game.down = function (x, y, obj) { player.jump(); }; // Import tween plugin for animations
===================================================================
--- original.js
+++ change.js
@@ -69,10 +69,10 @@
}
if (self.isJumping) {
self.y += self.velocityY;
self.velocityY += 0.6;
- if (self.y >= 2732 / 2 * 1.3) {
- self.y = 2732 / 2 * 1.3;
+ if (self.y >= 2732 / 2 * 1.4) {
+ self.y = 2732 / 2 * 1.4;
self.isJumping = false;
self.velocityY = 0;
}
}
@@ -97,11 +97,11 @@
self.update = function () {
if (self.isJumping) {
self.y += self.velocityY;
self.velocityY += 0.3; // Decreased gravity effect by 30%
- if (self.y >= 2732 / 2 * 1.3) {
- // Ground level adjusted to be 30% lower
- self.y = 2732 / 2 * 1.3;
+ if (self.y >= 2732 / 2 * 1.4) {
+ // Ground level
+ self.y = 2732 / 2 * 1.4;
self.isJumping = false;
self.velocityY = 0;
}
}
@@ -138,9 +138,9 @@
}
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2;
-player.y = 2732 / 2 * 1.3; // Move 30% lower on Y-axis
+player.y = 2732 / 2 * 1.4; // Move 40% lower on Y-axis
// Initialize enemies
var enemies = [];
var enemySpawnInterval = 100;
var enemySpawnCounter = 0;
@@ -199,18 +199,18 @@
var enemy;
if (enemyType === 0) {
enemy = new Enemy();
enemy.x = 2048;
- enemy.y = 2732 / 2 * 1.3; // Move 30% lower on Y-axis
+ enemy.y = 2732 / 2 * 1.4; // Move 40% lower on Y-axis
} else if (enemyType === 1) {
enemy = new FlyingEnemy();
enemy.x = 2048;
- enemy.y = 2732 / 3 * 1.3; // Flying enemy starts higher, moved 30% lower on Y-axis
+ enemy.y = 2732 / 3 * 1.4; // Flying enemy starts higher and moved 40% lower
enemy.initialY = enemy.y;
} else {
enemy = new PlantEnemy();
enemy.x = 2048;
- enemy.y = 2732 / 2 * 1.3; // Move 30% lower on Y-axis
+ enemy.y = 2732 / 2 * 1.4; // Move 40% lower on Y-axis
}
// Save the current enemy type as the last one
lastEnemyType = enemyType;
enemy.passedMiddle = false; // Initialize the middle crossing property