User prompt
swipe to moving upper
User prompt
player bullet full speed fast
User prompt
player one buller per shoot
User prompt
player swipe can move verticaly down
User prompt
add background feature
User prompt
enemy capable shoot
User prompt
enemy one hit shoot
User prompt
player can 10 x jump
User prompt
swipe repeated for floating jump
User prompt
player capabale shoot automatic
User prompt
player shoot per one bullet
User prompt
erase gauge bullet. player automatic shoot
User prompt
auto shoot player
User prompt
swipe for jump
User prompt
tap for jump 7x
User prompt
make player control move and action
User prompt
make game better
Code edit (1 edits merged)
Please save this source code
User prompt
Halo: Platform Defense
Initial prompt
make 2d shooter game. random platform. player on base paltform. enemy on other plaform. halo master chief shooter game for iphone device
/****
* 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 = 20;
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 = 2;
self.shootTimer = 0;
self.shootInterval = Math.floor(Math.random() * 120) + 120; // Random interval between 2-4 seconds
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.ammo = 30;
self.maxAmmo = 30;
self.reloading = false;
self.reloadTime = 120; // 2 seconds at 60fps
self.reloadTimer = 0;
self.shoot = function () {
if (self.ammo > 0 && !self.reloading) {
self.ammo--;
LK.getSound('shoot').play();
return true;
}
return false;
};
self.reload = function () {
if (!self.reloading && self.ammo < self.maxAmmo) {
self.reloading = true;
LK.getSound('reload').play();
}
};
self.update = function () {
if (self.reloading) {
self.reloadTimer++;
if (self.reloadTimer >= self.reloadTime) {
self.ammo = self.maxAmmo;
self.reloading = false;
self.reloadTimer = 0;
}
}
};
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
var shoot = self.shoot();
if (shoot) {
// Shooting is handled in the game's main update function
return true;
} else if (self.ammo <= 0 && !self.reloading) {
self.reload();
}
return false;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000026
});
/****
* Game Code
****/
// 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 ammo bar background
ammoBarBg = LK.getAsset('ammoBarBg', {
anchorX: 0,
anchorY: 0.5
});
LK.gui.bottomLeft.addChild(ammoBarBg);
ammoBarBg.x = 20;
ammoBarBg.y = -50;
// Create ammo bar
ammoBar = LK.getAsset('ammoBar', {
anchorX: 0,
anchorY: 0.5
});
LK.gui.bottomLeft.addChild(ammoBar);
ammoBar.x = 20;
ammoBar.y = -50;
// 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);
}
}
// 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
} else {
player.flip(1); // Face right
}
// Shoot
var didShoot = player.shoot();
if (didShoot) {
// Create bullet
var bullet = new Bullet();
bullet.x = player.x;
bullet.y = player.y;
bullet.direction = player.facingDirection;
playerBullets.push(bullet);
game.addChild(bullet);
}
};
// Main game update loop
game.update = function () {
if (!gameActive) {
return;
}
// Update player
player.update();
// Update ammo bar
var ammoRatio = player.ammo / player.maxAmmo;
ammoBar.width = ammoBarBg.width * ammoRatio;
// Update bullets
updateBullets();
// Update enemies
updateEnemies();
// Check if wave is complete
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();
// 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 shoots
if (readyToShoot && Math.random() < 0.7) {
// 70% chance to actually shoot when ready
var bullet = new Bullet();
bullet.x = enemy.x;
bullet.y = enemy.y;
// Direction toward player
bullet.direction = direction;
enemyBullets.push(bullet);
game.addChild(bullet);
}
}
}
// Initialize the game
initGame(); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,345 @@
-/****
+/****
+* 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 = 20;
+ 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 = 2;
+ self.shootTimer = 0;
+ self.shootInterval = Math.floor(Math.random() * 120) + 120; // Random interval between 2-4 seconds
+ 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.ammo = 30;
+ self.maxAmmo = 30;
+ self.reloading = false;
+ self.reloadTime = 120; // 2 seconds at 60fps
+ self.reloadTimer = 0;
+ self.shoot = function () {
+ if (self.ammo > 0 && !self.reloading) {
+ self.ammo--;
+ LK.getSound('shoot').play();
+ return true;
+ }
+ return false;
+ };
+ self.reload = function () {
+ if (!self.reloading && self.ammo < self.maxAmmo) {
+ self.reloading = true;
+ LK.getSound('reload').play();
+ }
+ };
+ self.update = function () {
+ if (self.reloading) {
+ self.reloadTimer++;
+ if (self.reloadTimer >= self.reloadTime) {
+ self.ammo = self.maxAmmo;
+ self.reloading = false;
+ self.reloadTimer = 0;
+ }
+ }
+ };
+ 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
+ var shoot = self.shoot();
+ if (shoot) {
+ // Shooting is handled in the game's main update function
+ return true;
+ } else if (self.ammo <= 0 && !self.reloading) {
+ self.reload();
+ }
+ return false;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x000026
+});
+
+/****
+* Game Code
+****/
+// 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 ammo bar background
+ ammoBarBg = LK.getAsset('ammoBarBg', {
+ anchorX: 0,
+ anchorY: 0.5
+ });
+ LK.gui.bottomLeft.addChild(ammoBarBg);
+ ammoBarBg.x = 20;
+ ammoBarBg.y = -50;
+ // Create ammo bar
+ ammoBar = LK.getAsset('ammoBar', {
+ anchorX: 0,
+ anchorY: 0.5
+ });
+ LK.gui.bottomLeft.addChild(ammoBar);
+ ammoBar.x = 20;
+ ammoBar.y = -50;
+ // 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);
+ }
+}
+// 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
+ } else {
+ player.flip(1); // Face right
+ }
+ // Shoot
+ var didShoot = player.shoot();
+ if (didShoot) {
+ // Create bullet
+ var bullet = new Bullet();
+ bullet.x = player.x;
+ bullet.y = player.y;
+ bullet.direction = player.facingDirection;
+ playerBullets.push(bullet);
+ game.addChild(bullet);
+ }
+};
+// Main game update loop
+game.update = function () {
+ if (!gameActive) {
+ return;
+ }
+ // Update player
+ player.update();
+ // Update ammo bar
+ var ammoRatio = player.ammo / player.maxAmmo;
+ ammoBar.width = ammoBarBg.width * ammoRatio;
+ // Update bullets
+ updateBullets();
+ // Update enemies
+ updateEnemies();
+ // Check if wave is complete
+ 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();
+ // 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 shoots
+ if (readyToShoot && Math.random() < 0.7) {
+ // 70% chance to actually shoot when ready
+ var bullet = new Bullet();
+ bullet.x = enemy.x;
+ bullet.y = enemy.y;
+ // Direction toward player
+ bullet.direction = direction;
+ enemyBullets.push(bullet);
+ game.addChild(bullet);
+ }
+ }
+}
+// Initialize the game
+initGame();
\ No newline at end of file
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