User prompt
Se cada bala cair para o lado de baixo, consegue um ponto.
User prompt
Faça com que, se a bala cair e os pontos contam, os pontos só contam se o quadrado spawnar.
User prompt
Após chegar a 100 pontos, o jogo avisa que as balas aceleram de velocidade e as balas realmente aceleram de velocidade.
User prompt
Adicione os ícones de coração no topo da tela direita.
User prompt
Está muito difícil ver eles. Coloque eles menos na borda da tela, aí fica mais fácil ver.
User prompt
Coloque menos.
User prompt
Coloque menos na borda da tela.
User prompt
Começa com que as balas estejam com o dobro de velocidade após 200 pontos.
User prompt
Se o player não ficar na borda, consegue, sem tocar na borda, ponto. Se tocar na borda, perde esses pontos.
/****
* Classes
****/
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5; // Bullet movement speed
// Update method called every game tick
self.update = function () {
self.y += self.speed;
};
});
// EnemyBullet class representing the enemy's bullets
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5; // Bullet movement speed
self.direction = 'down'; // Bullet direction
// Update method called every game tick
self.update = function () {
if (self.direction === 'down') {
self.y += self.speed;
}
};
});
var Menu = Container.expand(function () {
var self = Container.call(this);
var menuGraphics = self.attachAsset('Cube_bullet_hell_icon', {
anchorX: 0.5,
anchorY: 0.5
});
// Create a start button
var startButton = self.attachAsset('Start_button', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
// Increase size horizontally
scaleY: 2 // Increase size vertically
});
startButton.y = 500; // Position further below the icon
self.addChild(startButton);
// Add event listener for the start button
startButton.down = function () {
self.visible = false; // Hide the menu
game.startGame(); // Start the game
};
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Player class representing 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 = 10; // Player movement speed
self.lives = 3; // Player lives
// Method to move the player
self.move = function (x, y) {
self.x = x;
self.y = y;
};
// Method to shoot a bullet
self.shoot = function () {
var bulletUp = new PlayerBullet();
bulletUp.x = self.x;
bulletUp.y = self.y;
bulletUp.direction = 'up';
game.addChild(bulletUp);
playerBullets.push(bulletUp);
var bulletDown = new PlayerBullet();
bulletDown.x = self.x;
bulletDown.y = self.y;
bulletDown.direction = 'down';
game.addChild(bulletDown);
playerBullets.push(bulletDown);
var bulletLeft = new PlayerBullet();
bulletLeft.x = self.x;
bulletLeft.y = self.y;
bulletLeft.direction = 'left';
game.addChild(bulletLeft);
playerBullets.push(bulletLeft);
var bulletRight = new PlayerBullet();
bulletRight.x = self.x;
bulletRight.y = self.y;
bulletRight.direction = 'right';
game.addChild(bulletRight);
playerBullets.push(bulletRight);
var bulletUpLeft = new PlayerBullet();
bulletUpLeft.x = self.x;
bulletUpLeft.y = self.y;
bulletUpLeft.direction = 'up-left';
game.addChild(bulletUpLeft);
playerBullets.push(bulletUpLeft);
var bulletUpRight = new PlayerBullet();
bulletUpRight.x = self.x;
bulletUpRight.y = self.y;
bulletUpRight.direction = 'up-right';
game.addChild(bulletUpRight);
playerBullets.push(bulletUpRight);
var bulletDownLeft = new PlayerBullet();
bulletDownLeft.x = self.x;
bulletDownLeft.y = self.y;
bulletDownLeft.direction = 'down-left';
game.addChild(bulletDownLeft);
playerBullets.push(bulletDownLeft);
var bulletDownRight = new PlayerBullet();
bulletDownRight.x = self.x;
bulletDownRight.y = self.y;
bulletDownRight.direction = 'down-right';
game.addChild(bulletDownRight);
playerBullets.push(bulletDownRight);
};
});
// PlayerBullet class representing the player's bullets
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -5; // Bullet movement speed
self.direction = 'up'; // Bullet direction
// Update method called every game tick
self.update = function () {
if (self.direction === 'up') {
self.y += self.speed;
} else if (self.direction === 'down') {
self.y -= self.speed;
} else if (self.direction === 'left') {
self.x -= self.speed;
} else if (self.direction === 'right') {
self.x += self.speed;
} else if (self.direction === 'up-left') {
self.y += self.speed;
self.x -= self.speed;
} else if (self.direction === 'up-right') {
self.y += self.speed;
self.x += self.speed;
} else if (self.direction === 'down-left') {
self.y -= self.speed;
self.x -= self.speed;
} else if (self.direction === 'down-right') {
self.y -= self.speed;
self.x += self.speed;
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
var menu = new Menu();
menu.x = 2048 / 2;
menu.y = 2732 / 2;
game.addChild(menu);
// Define player in the global scope
var player;
// Function to start the game
game.startGame = function () {
// Display "Ready? Set Go!" sequence
var readyText = new Text2('Ready?', {
size: 200,
fill: 0xFFFFFF
});
readyText.anchor.set(0.5, 0.5);
readyText.x = 2048 / 2;
readyText.y = 2732 / 2;
game.addChild(readyText);
LK.getSound('Ready').play(); // Moved here to play immediately
LK.setTimeout(function () {
readyText.setText('Set');
LK.getSound('Beep').play();
LK.setTimeout(function () {
readyText.setText('Go!');
LK.getSound('Go').play();
LK.setTimeout(function () {
game.removeChild(readyText);
// Initialize player
player = new Player();
player.x = 2048 / 2;
player.y = 2732 - 200;
game.addChild(player);
}, 1000);
}, 1000);
}, 1000);
};
// Variable to track player's score
var playerScore = 0;
var scoreTxt = new Text2('Score: 0', {
size: 100,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var bullets = [];
var playerBullets = [];
var enemyBullets = [];
// Function to spawn bullets
function spawnBullet() {
var bullet = new EnemyBullet();
bullet.x = Math.random() * 2048;
bullet.y = -50; // Start above the screen
enemyBullets.push(bullet);
game.addChild(bullet);
}
// Game update function
game.update = function () {
// Update bullets
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
bullet.update();
// Check if bullet is off-screen
if (bullet.y > 2732) {
bullet.destroy();
bullets.splice(i, 1);
playerScore += 1; // Increase score by 1
scoreTxt.setText('Score: ' + playerScore); // Update score display
}
// Check for collision with player
if (bullet.intersects(player)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
}
// Spawn a new bullet every 30 ticks
// Update player bullets
for (var i = playerBullets.length - 1; i >= 0; i--) {
var bullet = playerBullets[i];
bullet.update();
// Check if bullet is off-screen
if (bullet.y < 0 || bullet.y > 2732 || bullet.x < 0 || bullet.x > 2048) {
bullet.destroy();
playerBullets.splice(i, 1);
}
}
// Update enemy bullets
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var bullet = enemyBullets[i];
bullet.update();
// Check if bullet is off-screen
if (bullet.y > 2732) {
bullet.destroy();
enemyBullets.splice(i, 1);
playerScore += 1; // Increase score by 1
scoreTxt.setText('Score: ' + playerScore); // Update score display
}
// Check for collision with player
if (bullet.intersects(player)) {
LK.effects.flashScreen(0xff0000, 1000);
player.lives -= 1;
LK.getSound('Hit').play();
bullet.destroy(); // Remove the bullet upon collision
enemyBullets.splice(i, 1); // Remove bullet from array
if (player.lives <= 0) {
LK.showGameOver();
}
}
}
// Spawn a new enemy bullet every 10 ticks
if (LK.ticks % 10 === 0) {
spawnBullet();
}
};
// Handle player movement
game.move = function (x, y, obj) {
if (player) {
player.move(x, y);
}
};
game.down = function (x, y, obj) {
// player.shoot();
};
Cube. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Cube bullet hell icon. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Start_button. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Heart_icon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows