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; // Increased speed for player bullets 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 = 150; // Fixed interval of 2.5 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()) { // Create a storm of bullets for (var angle = -Math.PI / 8; angle <= Math.PI / 8; angle += Math.PI / 8) { for (var offset = -1.5; offset <= 1.5; offset += 1) { var bullet = new Bullet(); bullet.x = self.x + offset * 10; // Offset for four lines bullet.y = self.y; bullet.direction = self.facingDirection; bullet.speed = 20; // Set bullet speed bullet.angle = angle; // Set bullet angle for spread bullet.update = function () { this.x += this.speed * Math.cos(this.angle) * this.direction; this.y += this.speed * Math.sin(this.angle); }; 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; }); /**** * 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; var startSwipeX; // Initialize startSwipeX var startSwipeY; // Initialize startSwipeY // 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); } } // Touch event on game area game.down = function (x, y, obj) { if (!gameActive) { return; } startSwipeX = x; startSwipeY = y; }; game.move = function (x, y, obj) { if (!gameActive) { return; } if (startSwipeY !== undefined) { if (y < startSwipeY - 50) { player.y -= 40; // Move player up faster startSwipeY = y; } else if (y > startSwipeY + 50) { player.y += 40; // Move player down faster startSwipeY = y; } } if (startSwipeX !== undefined) { if (x > startSwipeX + 50) { player.x += 40; // Move player right faster startSwipeX = x; player.flip(1); // Face right player.shoot(); // Shoot right } else if (x < startSwipeX - 50) { player.x -= 40; // Move player left faster startSwipeX = x; player.flip(-1); // Face left player.shoot(); // Shoot left } } }; game.up = function (x, y, obj) { startSwipeX = undefined; startSwipeY = undefined; }; // 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(); 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();
/****
* 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; // Increased speed for player bullets
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 = 150; // Fixed interval of 2.5 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()) {
// Create a storm of bullets
for (var angle = -Math.PI / 8; angle <= Math.PI / 8; angle += Math.PI / 8) {
for (var offset = -1.5; offset <= 1.5; offset += 1) {
var bullet = new Bullet();
bullet.x = self.x + offset * 10; // Offset for four lines
bullet.y = self.y;
bullet.direction = self.facingDirection;
bullet.speed = 20; // Set bullet speed
bullet.angle = angle; // Set bullet angle for spread
bullet.update = function () {
this.x += this.speed * Math.cos(this.angle) * this.direction;
this.y += this.speed * Math.sin(this.angle);
};
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;
});
/****
* 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;
var startSwipeX; // Initialize startSwipeX
var startSwipeY; // Initialize startSwipeY
// 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);
}
}
// Touch event on game area
game.down = function (x, y, obj) {
if (!gameActive) {
return;
}
startSwipeX = x;
startSwipeY = y;
};
game.move = function (x, y, obj) {
if (!gameActive) {
return;
}
if (startSwipeY !== undefined) {
if (y < startSwipeY - 50) {
player.y -= 40; // Move player up faster
startSwipeY = y;
} else if (y > startSwipeY + 50) {
player.y += 40; // Move player down faster
startSwipeY = y;
}
}
if (startSwipeX !== undefined) {
if (x > startSwipeX + 50) {
player.x += 40; // Move player right faster
startSwipeX = x;
player.flip(1); // Face right
player.shoot(); // Shoot right
} else if (x < startSwipeX - 50) {
player.x -= 40; // Move player left faster
startSwipeX = x;
player.flip(-1); // Face left
player.shoot(); // Shoot left
}
}
};
game.up = function (x, y, obj) {
startSwipeX = undefined;
startSwipeY = undefined;
};
// 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();
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();
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