User prompt
delete power up feature and asset
User prompt
Please fix the bug: 'Uncaught ReferenceError: startSwipeY is not defined' in or related to this line: 'if (startSwipeY !== undefined) {' Line Number: 301
User prompt
player move faster
User prompt
player can shoot right direction when swipe right. player can shoot left direction when swipe left
User prompt
player can shoot lefth and right direction
User prompt
new rule control player. hold and swipe vertical up control player up direction and hold and swipe vertical down to control player move vertical down. hold and swipe horizontal right to control player move right direction. hold and swipe horizontaly left to control player move left
User prompt
new rule control playe. hold and swipe vertical control player up direction and hold and swipe down to control player move down. hold and swipe right to control enemy move right direction. hold and swipe left to control enemy move left
User prompt
enemy bullet 2,5 seconds release per shoot
User prompt
fix
User prompt
player four lines bullet feature
User prompt
player bullet storm
User prompt
player triple bullet
User prompt
player fast bullet
User prompt
more slow speed bullet enemy
User prompt
enemy slow bullet speed
User prompt
enemy can auto move horizontaly right and left
User prompt
enemy move right and left
User prompt
interval bullet enemy pet shoot 2 second
User prompt
enemy shoot whatever level
User prompt
enemy interval bullet release 1,5 second
User prompt
tap upper screen player move up. tap bottom screen player move down. tap right screen player move right. tap left screen player move left
User prompt
tap down for player move down
User prompt
tap to move upper
User prompt
player bullet 0,7 second interval bullet release
User prompt
player bullet interval release at 1 second
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 50;
self.direction = 1; // 1 for right, -1 for left
self.update = function () {
self.x += self.speed * self.direction;
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 1;
self.shootTimer = 0;
self.shootInterval = 120; // Fixed interval of 2 seconds at 60 FPS
self.hit = function () {
self.health--;
LK.getSound('hit').play();
// Flash red when hit
LK.effects.flashObject(self, 0xffffff, 300);
if (self.health <= 0) {
return true; // Enemy is dead
}
return false; // Enemy is still alive
};
self.update = function () {
self.shootTimer++;
if (self.shootTimer >= self.shootInterval) {
self.shootTimer = 0;
return true; // Ready to shoot
}
return false; // Not ready to shoot
};
return self;
});
var Platform = Container.expand(function () {
var self = Container.call(this);
var platformGraphics = self.attachAsset('platform', {
anchorX: 0.5,
anchorY: 0.5
});
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('masterChief', {
anchorX: 0.5,
anchorY: 0.5
});
self.facingDirection = 1; // 1 for right, -1 for left
self.shoot = function () {
LK.getSound('shoot').play();
return true;
};
self.update = function () {
// Ensure player stays within screen bounds
if (self.x < 0) {
self.x = 0;
} else if (self.x > 2048) {
self.x = 2048;
}
};
self.flip = function (direction) {
if (direction !== self.facingDirection) {
self.facingDirection = direction;
playerGraphics.scaleX = direction;
}
};
self.down = function (x, y, obj) {
// Handle player touch/click events
if (self.shoot() && playerBullets.length === 0) {
// Create bullet
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
bullet.direction = self.facingDirection;
playerBullets.push(bullet);
game.addChild(bullet);
return true;
}
return false;
};
self.jump = function () {
if (!self.jumping || self.jumpCount < 10) {
if (!self.jumping) {
self.jumpCount = 0; // Initialize jump count
}
self.jumpCount++;
self.jumping = true;
var initialY = self.y;
var jumpHeight = 200;
var jumpDuration = 30; // frames
var jumpSpeed = jumpHeight / (jumpDuration / 2);
self.jumpTimer = 0;
self.update = function () {
if (self.jumping) {
self.jumpTimer++;
if (self.jumpTimer <= jumpDuration / 2) {
self.y -= jumpSpeed;
} else if (self.jumpTimer <= jumpDuration) {
self.y += jumpSpeed;
} else {
self.jumping = false;
self.jumpCount = 0; // Reset jump count when player lands
self.y = initialY;
}
}
// Ensure player stays within screen bounds
if (self.x < 0) {
self.x = 0;
} else if (self.x > 2048) {
self.x = 2048;
}
};
}
};
return self;
});
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.attachAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5
});
self.type = Math.random() < 0.5 ? 'ammo' : 'shield'; // Randomly choose between ammo or shield
self.update = function () {
// Check for collision with player
if (self.intersects(player)) {
if (self.type === 'ammo') {
player.ammo = player.maxAmmo; // Refill ammo
} else if (self.type === 'shield') {
// Implement shield logic here
}
self.destroy();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Keep background color black
});
/****
* Game Code
****/
// Add background feature
var background = LK.getAsset('backgroundImage', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
game.addChild(background);
// Game variables
var player;
var playerPlatform;
var enemyPlatforms = [];
var enemies = [];
var playerBullets = [];
var enemyBullets = [];
var ammoBar;
var ammoBarBg;
var waveNumber = 1;
var score = 0;
var waveText;
var scoreText;
var enemiesRemaining = 0;
var gameActive = true;
// Initialize the game
function initGame() {
// Create player platform
playerPlatform = game.addChild(new Platform());
playerPlatform.x = 2048 / 2;
playerPlatform.y = 2732 - 200;
// Create player
player = game.addChild(new Player());
player.x = playerPlatform.x;
player.y = playerPlatform.y - 80;
// Create wave text
waveText = new Text2('Wave: ' + waveNumber, {
size: 50,
fill: 0xFFFFFF
});
waveText.anchor.set(1, 0);
LK.gui.topRight.addChild(waveText);
waveText.x = -20;
waveText.y = 20;
// Create score text
scoreText = new Text2('Score: ' + score, {
size: 50,
fill: 0xFFFFFF
});
scoreText.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreText);
scoreText.x = -20;
scoreText.y = 80;
// Start the first wave
startWave();
// Play background music
LK.playMusic('bgMusic');
}
function startWave() {
// Clear any remaining enemies and platforms
for (var i = enemies.length - 1; i >= 0; i--) {
enemies[i].destroy();
enemies.splice(i, 1);
}
for (var i = enemyPlatforms.length - 1; i >= 0; i--) {
enemyPlatforms[i].destroy();
enemyPlatforms.splice(i, 1);
}
// Update wave text
waveText.setText('Wave: ' + waveNumber);
// Number of enemies based on wave
enemiesRemaining = Math.min(3 + waveNumber, 10);
// Create enemy platforms and enemies
for (var i = 0; i < enemiesRemaining; i++) {
// Create platform at random positions
var platform = game.addChild(new Platform());
platform.x = Math.random() * (2048 - 400) + 200; // Random x position away from edges
platform.y = Math.random() * (2732 - 800) + 300; // Random y position not too high or low
// Ensure platforms aren't too close to player
var distToPlayer = Math.sqrt(Math.pow(platform.x - playerPlatform.x, 2) + Math.pow(platform.y - playerPlatform.y, 2));
if (distToPlayer < 500) {
platform.x = platform.x > playerPlatform.x ? platform.x + 500 : platform.x - 500;
platform.y = platform.y > playerPlatform.y ? platform.y + 200 : platform.y - 200;
}
// Create enemy on platform
var enemy = game.addChild(new Enemy());
enemy.x = platform.x;
enemy.y = platform.y - 60;
enemyPlatforms.push(platform);
enemies.push(enemy);
}
// Randomly spawn a power-up
if (Math.random() < 0.3) {
// 30% chance to spawn a power-up each wave
var powerUp = game.addChild(new PowerUp());
powerUp.x = Math.random() * (2048 - 400) + 200;
powerUp.y = Math.random() * (2732 - 800) + 300;
}
}
// Touch event on game area
game.down = function (x, y, obj) {
if (!gameActive) {
return;
}
// Determine direction to face based on touch position
if (x < player.x) {
player.flip(-1); // Face left
player.x -= 20; // Move left
} else {
player.flip(1); // Face right
player.x += 20; // Move right
}
// Move player upwards on tap in the upper screen
if (y < 2732 / 3) {
player.y -= 20; // Move up
} else if (y > 2732 * 2 / 3) {
if (y < 2732 / 3) {
player.y -= 20; // Move up
} else if (y > 2732 * 2 / 3) {
if (y < 2732 / 3) {
player.y -= 20; // Move up
} else if (y > 2732 * 2 / 3) {
if (y < 2732 / 3) {
player.y -= 20; // Move up
} else if (y > 2732 * 2 / 3) {
player.y += 20; // Move down
} else if (x > 2048 * 2 / 3) {
player.x += 20; // Move right
} else if (x < 2048 / 3) {
player.x -= 20; // Move left
}
} else if (x > 2048 * 2 / 3) {
player.x += 20; // Move right
} else if (x < 2048 / 3) {
player.x -= 20; // Move left
}
} else if (x > 2048 * 2 / 3) {
player.x += 20; // Move right
} else if (x < 2048 / 3) {
player.x -= 20; // Move left
}
} else if (x > 2048 * 2 / 3) {
player.x += 20; // Move right
} else if (x < 2048 / 3) {
player.x -= 20; // Move left
}
// Start tracking swipe for jump
startSwipeY = y;
};
game.move = function (x, y, obj) {
if (!gameActive) {
return;
}
// Check for swipe up to trigger jump
if (startSwipeY !== undefined && y < startSwipeY - 100) {
player.jump();
startSwipeY = y; // Reset swipe start to allow repeated swipes for floating jump
}
};
game.up = function (x, y, obj) {
startSwipeY = undefined; // Reset swipe start
};
// Main game update loop
game.update = function () {
if (!gameActive) {
return;
}
// Update player
player.update();
// Automatic shooting logic
if (LK.ticks % 42 === 0) {
// Shoot every 60 frames (1 second at 60 FPS)
// Shoot every 30 frames
if (player.shoot()) {
// Create bullet
var bullet = new Bullet();
bullet.x = player.x;
bullet.y = player.y;
bullet.direction = player.facingDirection;
playerBullets.push(bullet);
game.addChild(bullet);
}
}
// Update bullets
updateBullets();
// Update enemies
updateEnemies();
// Update power-ups
for (var i = game.children.length - 1; i >= 0; i--) {
var child = game.children[i];
if (child instanceof PowerUp) {
child.update();
}
}
if (enemies.length === 0 && enemiesRemaining === 0) {
waveNumber++;
startWave();
}
};
function updateBullets() {
// Update player bullets
for (var i = playerBullets.length - 1; i >= 0; i--) {
var bullet = playerBullets[i];
// Check if bullet is off screen
if (bullet.x < -50 || bullet.x > 2048 + 50) {
bullet.destroy();
playerBullets.splice(i, 1);
continue;
}
// Check for collisions with enemies
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
// Enemy hit
var isDead = enemy.hit();
bullet.destroy();
playerBullets.splice(i, 1);
if (isDead) {
// Enemy killed
LK.getSound('enemyDeath').play();
enemy.destroy();
enemies.splice(j, 1);
enemiesRemaining--;
// Increase score
score += 100;
scoreText.setText('Score: ' + score);
}
break;
}
}
}
// Update enemy bullets
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var bullet = enemyBullets[i];
// Check if bullet is off screen
if (bullet.x < -50 || bullet.x > 2048 + 50) {
bullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
// Check for collision with player
if (bullet.intersects(player)) {
bullet.destroy();
enemyBullets.splice(i, 1);
// Player hit - game over
gameActive = false;
LK.effects.flashScreen(0xff0000, 1000);
LK.setScore(score);
LK.showGameOver();
}
}
}
function updateEnemies() {
for (var i = 0; i < enemies.length; i++) {
var enemy = enemies[i];
var readyToShoot = enemy.update();
// Add horizontal movement for enemies
if (enemy.lastX === undefined) {
enemy.lastX = enemy.x;
} // Initialize lastX for tracking changes on X
enemy.x += enemy.speed * enemy.direction;
// Check if enemy reached the screen edges and reverse direction
if (enemy.x <= 0 || enemy.x >= 2048) {
enemy.direction *= -1; // Reverse direction
}
// Make enemy face the player
var direction = enemy.x > player.x ? -1 : 1;
if (direction === -1) {
enemy.scale.x = -1;
} else {
enemy.scale.x = 1;
}
enemy.lastX = enemy.x; // Update lastX
// Enemy shoots
if (readyToShoot) {
var bullet = new Bullet();
bullet.x = enemy.x;
bullet.y = enemy.y;
// Direction toward player
bullet.direction = direction;
enemyBullets.push(bullet);
game.addChild(bullet);
LK.getSound('shoot').play(); // Play shooting sound
}
}
}
// Initialize the game
initGame(); ===================================================================
--- original.js
+++ change.js
@@ -416,15 +416,25 @@
function updateEnemies() {
for (var i = 0; i < enemies.length; i++) {
var enemy = enemies[i];
var readyToShoot = enemy.update();
+ // Add horizontal movement for enemies
+ if (enemy.lastX === undefined) {
+ enemy.lastX = enemy.x;
+ } // Initialize lastX for tracking changes on X
+ enemy.x += enemy.speed * enemy.direction;
+ // Check if enemy reached the screen edges and reverse direction
+ if (enemy.x <= 0 || enemy.x >= 2048) {
+ enemy.direction *= -1; // Reverse direction
+ }
// Make enemy face the player
var direction = enemy.x > player.x ? -1 : 1;
if (direction === -1) {
enemy.scale.x = -1;
} else {
enemy.scale.x = 1;
}
+ enemy.lastX = enemy.x; // Update lastX
// Enemy shoots
if (readyToShoot) {
var bullet = new Bullet();
bullet.x = enemy.x;
anime landscape deep jungle amazon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
jungle soldier stand shoot the target right direction. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
jungle soldier stand shoot the target right direction. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
jungle grass. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows