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
/**** * 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) { self.y = 2732 / 2; 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.35; // 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 player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 / 2; // 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(); // 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 = it = 2732 / 2; } else if (enemyType === 1) { enemy = new FlyingEnemy(); enemy.x = 2048; enemy.y = 2732 / 3; // Flying enemy starts higher enemy.initialY = enemy.y; } else { enemy = new PlantEnemy(); enemy.x = 2048; enemy.y = 2732 / 2; } // 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(); };
===================================================================
--- original.js
+++ change.js
@@ -162,19 +162,16 @@
}
if (!enemiesEnteringScreen) {
// Randomly choose enemy type
var enemyType = Math.floor(Math.random() * 3);
- // Always make sure we don't spawn the same enemy type more than twice in a row
+ // Check if we need to avoid the same enemy type
if (enemyType === lastEnemyType) {
sameTypeCount++;
- // If we already have 2 of the same type, force a different type
+ // If we already have 2 of the same type, choose a different type
if (sameTypeCount >= 2) {
- // Get all possible enemy types except the last one
- var availableTypes = [0, 1, 2].filter(function (type) {
- return type !== lastEnemyType;
- });
- // Select randomly from available types
- enemyType = availableTypes[Math.floor(Math.random() * availableTypes.length)];
+ do {
+ enemyType = Math.floor(Math.random() * 3);
+ } while (enemyType === lastEnemyType);
sameTypeCount = 0;
}
} else {
sameTypeCount = 0;
@@ -182,9 +179,9 @@
var enemy;
if (enemyType === 0) {
enemy = new Enemy();
enemy.x = 2048;
- enemy.y = 2732 / 2; // Fixed the typo 'it =' to just be '='
+ enemy.y = it = 2732 / 2;
} else if (enemyType === 1) {
enemy = new FlyingEnemy();
enemy.x = 2048;
enemy.y = 2732 / 3; // Flying enemy starts higher
@@ -195,19 +192,27 @@
enemy.y = 2732 / 2;
}
// 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
- // Ensure enemies don't spawn too close together by setting a minimum interval
- enemySpawnInterval = Math.floor(Math.random() * 100) + 100; // Min: 100, Max: 199
+ 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) {